为网站生成目录提交计划,并在用户显式授权时通过浏览器填写单个或批量目录表单。适用于“提交网站到目录”“SEO 外链”“目录提交”或“submit site to directories”等请求。
npx skills add https://github.com/kennyzir/7deer_skills --skill seo-backlink-submitter
这个 Skill 使用统一的安全模型处理单目录和批量目录:默认只读取本地配置、验证输入并输出 dry-run 计划,不访问目录网站;只有命令中明确加入 --submit 才允许浏览器访问和点击提交。
按 targets/README.md 创建本地 JSON:
{
"name": "网站名称",
"url": "https://example.com",
"description": "网站描述",
"email": "[email protected]",
"category": "Developer Tools",
"tags": ["AI", "Agents", "Automation"]
}
name、url、description、email 是必需字符串;category 和 tags 可选。URL 必须是无内嵌凭据的绝对 HTTP(S) URL。
先运行默认 dry-run;它不会导入 Playwright,也不会访问网络:
python scripts/submit_to_directory.py \
--directory https://directory.example/submit \
--target targets/example-com.json
人工核对目标和目录后,显式加入 --submit 才执行真实提交:
python scripts/submit_to_directory.py \
--directory https://directory.example/submit \
--target targets/example-com.json \
--submit
兼容入口 scripts/quick_submit.py 接受完全相同的参数并转发到上述逻辑;它同样默认 dry-run,不含硬编码目录。
目录文本每行一个 HTTP(S) URL,空行和 # 注释会被忽略。可以使用 references/directories.txt,也可以按项目维护自己的文件。
默认只输出离线批量计划:
python scripts/batch_submit.py \
--target targets/example-com.json \
--directories references/directories.txt
核对计划后,显式加入 --submit 才逐项打开浏览器并尝试提交:
python scripts/batch_submit.py \
--target targets/example-com.json \
--directories references/directories.txt \
--submit
批量入口复用单目录入口的目标验证和真实提交函数,不会先默认联网检测再自动提交。
需要主动检查页面是否存在表单、登录、付费或反向链接要求时,可明确运行联网检测器:
python scripts/check_directory.py https://directory.example/submit
检测结果只是页面启发式判断,不会点击提交。
--submit 时,单目录、批量和兼容入口都不得访问网络。name、url、description、email 四个字段;缺少任何一个都会关闭浏览器、返回错误且不查询或点击提交控件。category 是可选字段,未匹配不会阻止四个必需字段完整的提交。submit_triggered 只表示脚本点击了提交控件,不代表目录方接收、审核、发布或产生了反向链接。.gitignore 已排除 targets/ 下的项目数据。not_submitted 和待处理目录,不写结果文件。submit_triggered。submit_triggered 或 error;任一错误会使批量命令非零退出。python3 -m pip install playwright && playwright install chromiumaiohttp 仅用于显式运行 check_directory.pyTake kennyzir/seo-backlink-submitter from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference pip.
Without those the skill loads but fails at the first command.