关于 backlink-gap
用于发现竞争对手共同获得、而自身尚未获得的反向链接机会的 SEO 技能,适合代理机构和内容团队制定外联名单。它从多份竞争对手链接 CSV 中计算优先级,并输出候选域名、断链机会和外联模板。
主要功能
- 01比较自有与竞争对手反向链接
- 02按权威度、重合度和流量评分
- 03检查数据新鲜度与样本质量
- 04筛选竞争对手断链候选
- 05生成外联名单与邮件模板
适用场景
- 01季度评估竞争对手链接增长
- 02为新产品或内容中心规划链接建设
- 03寻找断链替换外联目标
- 04为新客户建立链接开发名单
MCP 相关
技能可通过已连接的反向链接 MCP 获取品牌及竞争对手的链接导出数据,并可通过网页抓取 MCP 检查候选链接。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ indranilbanerjee/ digital-marketing-pro --skill backlink-gap安装后在 Claude Code 中输入/backlink-gap确认已加载。
详细介绍
/digital-marketing-pro:backlink-gap
脚本位置。 如果你的宿主未设置
${CLAUDE_PLUGIN_ROOT},脚本位于此插件的scripts/文件夹中,与skills/同级。请使用 Python 3.10 或更高版本运行:python;如果找不到python,则使用python3(macOS 和许多 Linux 系统)。
用途
找出最有价值的反向链接潜在对象——那些链接到多个竞争对手、却没有链接到你的网站的域名,并根据综合权威性、链接重合信号、下游流量和主题相关性的优先级评分进行排序。生成编号输出包,可直接交接给外联团队。
上下文效率
此技能开销较大。读取任何引用文件前,先使用 Grep 搜索;然后仅通过 offset + limit 读取匹配范围。打开文件前,先列出 ${CLAUDE_PLUGIN_DATA}/<brand>/。在会话中途重新调用时,跳过已载入上下文的文件。
适用场景
- 季度反向链接审计——“本季度竞争对手新增了哪些链接,而我们没有?”
- 为新产品或内容中心制定发布前的链接建设计划
- 数字公关筛选——区分“谁都愿意链接”的对象与“很有可能会链接到我们领域”的对象
- 竞争恢复——竞争对手抢走了你的位置,而你想了解哪些链接发生了转移
- 接手新客户,需要建立“首批 50 个链接目标”待办清单
不要在以下场景使用: 只需要反向链接的数量数据(请直接使用该品牌已连接的反向链接 MCP),或需要分析自身链接档案的锚文本(这是单独的审计,在 seo-audit 中介绍)。
品牌上下文(自动应用)
- 读取
~/.claude-marketing/brands/_active-brand.json获取当前活动品牌的 slug,然后加载~/.claude-marketing/brands/{slug}/profile.json - 如果不存在品牌:询问“先设置品牌吗(/digital-marketing-pro:brand-setup)?”——也可以使用默认值继续
- 应用
skills/context-engine/industry-profiles.md中针对行业的链接质量阈值(YMYL 行业应设置更高的--min-dr) - 应用
skills/context-engine/compliance-rules.md,过滤掉被禁止的发布商(例如品牌明确禁止的 PBN 类网站或付费链接网络)
输入
| 输入 | 来源 | 必填? |
|---|---|---|
| 我们的反向链接 CSV | 从已连接的反向链接 MCP(Ahrefs / Semrush / SE Ranking / Moz)导出,适用于品牌的主域名 | 是 |
| 竞争对手反向链接 CSV(2 份以上) | 使用同一导出工具,每位竞争对手一份(至少 2 份才能判断链接重合信号;3–5 份效果最佳) | 是 |
| DR / DA 最低筛选值 | CLI 标志、品牌档案默认值或行业标准 | 可选 |
| Top-N 数量 | 要展示的潜在对象数量 | 可选 |
允许仅提供一位竞争对手(脚本会发出警告,但不会报错),但由此得到的“共同信号”噪声较大——仅分析一位竞争对手的链接差距,实际上只是回答“谁链接到了他们”,而非“谁会持续链接我们所在的领域”。
流程(10 步,按编号文件输出)
所有输出都保存到 ${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{YYYY-MM-DD}/。
00-input.md— 记录我们的域名、竞争对手列表(附理由:为什么选这 N 个?)、筛选参数和运行时间戳01-data-pull.md— 通过品牌已连接的反向链接 MCP 拉取{brand}.tld和每个竞争对手的反向链接。预算保护:如果 MCP 提供额度费用,则汇总预计费用;当总费用超过 200 个额度时,在获取数据前询问“继续?(y/N — 默认 N)”02-ours.csv— 我们的反向链接导出数据(原始数据)03-comp-{competitor}.csv— 每个竞争对手各一个 CSV(原始数据)04-gap-run.json— 运行脚本:python "${CLAUDE_PLUGIN_ROOT}/scripts/backlink_gap.py" \ --ours "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/02-ours.csv" \ --competitors \ "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/03-comp-competitor1.csv" \ "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/03-comp-competitor2.csv" \ --min-dr {brand.profile.min_link_dr or 20} \ --top 100 \ --out "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/04-gap-run.json"--competitors接受以空格分隔的 CSV 路径列表(nargs="+")——逐一列出每个03-comp-*.csv文件;脚本不会展开*通配符,因此加引号的03-comp-*.csv会因 FileNotFoundError 而失败。每个竞争对手列出一个路径。05-quality-scorecard.md— 从04-gap-run.json中读取quality_scorecard。如果status: needs_review,请排查:data_freshness: fail→ 输入 CSV 的时间超过 90 天。重新拉取数据;反向链接图谱衰减很快。sample_size: fail→ 任意输入中的唯一引荐域名少于 50 个。域名可能太新,或者导出数据被截断。取消行数限制后重新导出。competitor_coverage: warn→ 只有 1 个竞争对手。至少再添加 1 个,才能获得真实的重叠信号。link_overlap_signal: fail→ 少于 5 个引荐域名链接到 ≥2 个竞争对手。要么竞争对手选择不当(彼此的内容领域并不重合),要么数据不完整。重新选择竞争对手。
06-prospect-shortlist.md— 排名前 30 的潜在对象,按便于移交拓展工作的格式整理:域名、DR、竞争对手的链接数、建议的拓展角度(客座文章、失效链接、资源页面提及)07-broken-link-candidates.md— 其中一个或多个竞争对手链接返回 4xx 的对象子集(通过品牌已连接的网页抓取 MCP,对竞争对手的反向链接 URL 快速执行一次 HTTP HEAD 请求)。这些是“唾手可得的机会”——推荐用你的 URL 替换。08-outreach-templates.md— 三种模板变体:(a) 资源页面冷邮件推介,(b) 失效链接替换,(c) 竞争对手提及。根据品牌资料中的语气字段以及skills/context-engine/guidelines-framework.md,预先填入品牌语气。PLAN.md— 一页摘要:统计数据 + 评分卡 + 排名前 10 的潜在对象及拓展角度 + 建议频率(每周 3-5 次推介,以保持可持续的拓展质量)。
输出格式
${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/2026-06-04/
├── 00-input.md
├── 01-data-pull.md
├── 02-ours.csv
├── 03-comp-{competitor1}.csv
├── 03-comp-{competitor2}.csv
├── ...
├── 04-gap-run.json
├── 05-quality-scorecard.md
├── 06-prospect-shortlist.md
├── 07-broken-link-candidates.md
├── 08-outreach-templates.md
└── PLAN.md
质量评分卡(四项门槛)
| 门槛 | 检查内容 | 重要原因 |
|---|---|---|
| data_freshness | 所有输入 CSV 的 mtime 均在 90 天内 | 反向链接图谱衰减很快——过期数据会让你追逐失效链接 |
| sample_size | 每个输入至少有 50 个唯一引荐域名 | 少于此数时,差距计算的信号太弱,无法进行排序 |
| competitor_coverage | 提供至少 2 个竞争对手 CSV | “共享信号”能从噪声中区分真正的潜在对象 |
| link_overlap_signal | 至少 5 个引荐域名链接到至少 2 个竞争对手 | 如果没有域名重合,说明你的竞争对手实际上并非在同一内容领域竞争 |
status: ready 要求四项门槛全部通过(competitor_coverage: warn 不会阻止就绪——它只是一个软信号)。
优先级评分(0–1,显示在 04-gap-run.json 中)
priority = 0.40 × DR_normalised
+ 0.25 × link_count_normalised (how many competitors this domain links to)
+ 0.20 × traffic_normalised
+ 0.15 × topical_relevance
为什么链接数的权重高于流量: 一个链接到 3/3 个竞争对手的域名,明确属于你的领域,也愿意提供链接。一个流量很高、但只链接到其中 1 个竞争对手的域名,可能只是一级出版商,恰好顺带报道过你们中的一个。
审计之后
询问:“您想让我:
- 将排名前 10 的潜在对象发送到数字公关工作流吗?(
/digital-marketing-pro:digital-pr) - 为排名前 5 的断链替换机会起草推介吗?(
/digital-marketing-pro:pr-pitch) - 安排每季度重新运行,以追踪进展吗?(
/digital-marketing-pro:seo-drift) - 打开潜在对象候选名单供您审核吗?”
链式交接
此技能是较长链条中的上游环节:
/digital-marketing-pro:competitor-analysis— 选出合适的竞争对手/digital-marketing-pro:backlink-gap— 此技能/digital-marketing-pro:digital-pr— 使用06-prospect-shortlist.md+08-outreach-templates.md/digital-marketing-pro:pr-pitch— 为每个潜在对象起草单独的推介/digital-marketing-pro:performance-report— 每季度重新运行此技能,为“新增链接”KPI 提供数据
提示与注意事项
- 竞争对手更多 ≠ 效果更好。 选 3 到 5 个有针对性的竞争对手,胜过选 10 个随机对象。当所有竞争对手都处于同一内容领域时,“共同信号”关卡效果最佳。
- 不同导出工具提供的 DR/DA 不具可比性。 不要混用 Ahrefs 导出数据和 Moz 导出数据——脚本不知道如何对不同导出工具的数据进行标准化。每次审计选择一个服务提供商。
- 在大多数导出数据中,主题相关性是最弱的信号,因为很少有导出工具能很好地提供这一指标。如果缺少该指标,脚本默认使用 0.5,这是合适的中性值。只有在你有经过整理的主题相关性评分时才覆盖默认值。
- 不要在一周内联系 100 个潜在对象。 输出是一份待办清单,而不是待联系队列。可持续的节奏是:每位负责联系的负责人每周发送 3-5 封高度个性化的推介。
- 断链候选通常命中率最高(断链替换推介的回复率通常远高于冷推介——“30-60% 对比 5-15%”仅为示意性的经验法则,并非实测结果;请根据自己的外联数据进行验证)——始终优先处理
07-broken-link-candidates.md列表。 - **每季度重新运行,**而不是每月。反向链接数据变化较慢,因此每月运行大多只会产生噪声。
- YMYL 行业(医疗、金融、法律)应设置
--min-dr 40,以过滤掉可能损害 E-E-A-T 的低权威发布商。
使用的 Agent
seo-specialist(主要)——解读潜在对象质量competitive-intel— 竞争对手集合的选择依据(步骤 1)pr-outreach— 起草外联模板(步骤 8)brand-guardian— 步骤 6 的禁用发布商筛选器
另请参阅
/digital-marketing-pro:competitor-analysis— 为本次审计选择竞争对手/digital-marketing-pro:digital-pr— 执行实际外联/digital-marketing-pro:seo-drift— 每季度重新运行以追踪变化/digital-marketing-pro:seo-audit— 更全面的网站级审计,包括自身资料的健康状况scripts/backlink_gap.py— 底层差距分析引擎