seo-internal-linking
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseseo-internal-linking (M10)
seo-internal-linking (M10)
Internal links distribute crawl priority and topical authority and tell search engines (and AI crawlers) how your pages relate. Reference: for the entity/ linkage this topology should mirror; M6/seo-entity-linking owns external .
references/schema-tier1.md@idsameAs内部链接用于分配抓取优先级、传递主题权威性,并告诉搜索引擎(以及 AI 爬虫)各页面之间如何关联。参考: 中此拓扑应映射的实体/ 关联;外部 由 M6/seo-entity-linking 负责。
references/schema-tier1.md@idsameAsInputs
Inputs
Work from the PageSnapshot named in your dispatch envelope: read from ( with //, ) and the crawl graph in (, , ); Grep for verbatim evidence; site artifacts live in . Deterministic findings already emitted by are listed in — do not re-emit those ids; add model-judged findings only. If invoked directly with a URL/path and no snapshot exists, first run and use the printed snapshot path.
parsed<run_dir>/pages/<slug>.jsonanchors[]regioninternalanchorlandmarks<run_dir>/crawl.jsongraph.edgespages[].inlinkstemplates[]pages/<slug>.html<run_dir>/site/{robots.json,sitemaps.json,discovery.json}audit.mjs<run_dir>/findings.deterministic.jsonnode "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs"以调度信封中指定的 PageSnapshot 为基础开展工作:从 读取 ( 包含 //、),并读取 中的爬取图(、、);对 执行 Grep 以查找逐字证据;站点工件位于 。由 发出的确定性发现已列于 ——不要重新发出这些 id;仅添加模型判定发现。如果直接使用 URL/路径调用且不存在 snapshot,请先运行 ,并使用打印出的 snapshot 路径。
<run_dir>/pages/<slug>.jsonparsedanchors[]regioninternalanchorlandmarks<run_dir>/crawl.jsongraph.edgespages[].inlinkstemplates[]pages/<slug>.html<run_dir>/site/{robots.json,sitemaps.json,discovery.json}audit.mjs<run_dir>/findings.deterministic.jsonnode "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs"Audits
Audits
Working from the PageSnapshot ( when is not , else ):
parsed_renderedrender.usednoneparsed- Pillar/cluster topology: classify each URL (pillar hub vs. cluster page) and confirm clusters link up to their pillar and the pillar links down to its cluster — gaps break the hub-and-spoke model.
- Contextual in-body links: count links inside /
<main>prose (target ~3-5 descriptive in-content links per page); flag pages with zero in-body internal links.<article> - Anchor-text descriptiveness: flag generic anchors ("click here", "read more", "learn more", bare URLs) and over-optimized exact-match repetition; anchors should describe the destination.
- Orphan pages: list URLs in the sitemap/crawl with no incoming internal links from other crawled pages.
- Nav-vs-in-content ratio: flag templates where boilerplate nav/footer links overwhelm contextual links, diluting per-page link signal.
- Semantic HTML: check for ,
<main>,<article>,<nav>,<header>, one<footer>, and a logical heading order — semantic structure helps both parsers and accessibility.<h1>
根据 PageSnapshot 开展审计(当 不为 时使用 ,否则使用 ):
render.usednoneparsed_renderedparsed- Pillar/cluster 拓扑:将每个 URL 归类为 pillar hub 或 cluster page,并确认 cluster 向上链接到对应 pillar,同时 pillar 向下链接到对应 cluster——链接缺口会破坏 hub-and-spoke 模型。
- 上下文正文链接:统计 /
<main>正文内容中的链接(目标为每个页面约 3–5 个具有描述性的内容内链接);标记没有正文内部链接的页面。<article> - 锚文本描述性:标记通用锚文本(“click here”“read more”“learn more”、裸 URL)以及过度优化的精确匹配重复;锚文本应描述目标页面。
- 孤立页面:列出 sitemap/crawl 中没有来自其他已抓取页面的入站内部链接的 URL。
- Nav 与内容内链接之比:标记样板 nav/footer 链接压倒上下文链接的模板,因为这会稀释单页链接信号。
- 语义化 HTML:检查是否具备 、
<main>、<article>、<nav>、<header>、唯一的<footer>以及逻辑清晰的标题层级——语义结构有助于解析器和无障碍访问。<h1>
Fixes
Fixes
- PROPOSED (): concrete internal-link insertions — a specific source page, the target URL, the suggested anchor text, and the sentence/selector to attach it to — emitted as a unified diff for
fixable: proposed. These require per-item accept because auto-injecting body links can alter meaning, tone, or reading flow.fix - ADVISORY (): wrapping content in semantic tags (
fixable: advisory/<main>/<article>) and heading-order corrections — described, never written by the tool, since they touch template structure.<nav> - Never invent target URLs, anchor wording, or topology you cannot observe in the snapshot/crawl — ask the user or leave a clearly-marked TODO placeholder. (Severity for this module's findings: 3.)
- PROPOSED():具体的内部链接插入建议——包括具体来源页面、目标 URL、建议锚文本以及要附加链接的句子/选择器——以 unified diff 的形式输出,供
fixable: proposed使用。由于自动向正文注入链接可能改变含义、语气或阅读流畅性,因此必须逐项接受这些建议。fix - ADVISORY():使用语义化标签包裹内容(
fixable: advisory/<main>/<article>)以及修正标题顺序——仅作说明,绝不由工具写入,因为这些修改会触及模板结构。<nav> - 绝不能捏造在 snapshot/crawl 中无法观察到的目标 URL、锚文本措辞或拓扑;应询问用户,或保留明确标记的 TODO 占位符。(本模块发现的严重级别:3。)
Verification
Verification
- Per page: (or
node "${CLAUDE_PLUGIN_ROOT}/scripts/link-graph.mjs" --snapshot <pages/<slug>.json>/--url <u>) returns that page's link profile (--file <path> --base <origin>):verification.method: link_graph,total_links,internal_unique,external_unique,in_content_target,generic_anchors,empty_anchors. It does not compute topology from one page.dropped - Site topology: read (
<run_dir>/crawl.json,graph.edges,pages[].inlinks) — the crawl already built it.templates[]runs a fresh shallow same-site crawl and adds a--crawl [--max 25] [--max-depth 3] [--no-robots] [--ua <preset>]block withcrawl(a crawled page with no inbound internal link from another crawled page; the start page is never one, and the script itself calls the list non-authoritative). Pillar/cluster judgement is model work on top of those edges, not a script output.potential_orphans - The full topology/orphan check needs a site-wide crawl tier. When that crawl data is unavailable, status is — never a false
needs_api.pass
- 逐页执行:(也可使用
node "${CLAUDE_PLUGIN_ROOT}/scripts/link-graph.mjs" --snapshot <pages/<slug>.json>/--url <u>),返回该页面的链接概况(--file <path> --base <origin>):verification.method: link_graph、total_links、internal_unique、external_unique、in_content_target、generic_anchors、empty_anchors。它不会根据单个页面计算拓扑。dropped - 站点拓扑:读取 (
<run_dir>/crawl.json、graph.edges、pages[].inlinks)——爬取过程已构建该拓扑。templates[]会执行一次新的浅层同站点抓取,并添加一个包含--crawl [--max 25] [--max-depth 3] [--no-robots] [--ua <preset>]的potential_orphans块(已抓取但没有来自其他已抓取页面的入站内部链接的页面;起始页永远不会属于该列表,且脚本自身称此列表不具权威性)。Pillar/cluster 判断是在这些边之上由模型完成的工作,而不是脚本输出。crawl - 完整的拓扑/孤立页面检查需要全站点范围的抓取层级。当抓取数据不可用时,状态应为 ——绝不能给出虚假的
needs_api。pass
Findings
Findings
Emit findings per . Examples:
schema/finding.schema.json- — fewer than ~3 contextual in-body links (status
M10.contextual.too_few_inbody_links, severity 3,warn, axisfixable: proposed, confidencesearch).directional - — anchor reads "click here"/"read more" (status
M10.anchor.generic_text, severity 3,warn, axisfixable: proposed, confidencesearch).directional - — page has no internal inlinks from the crawl (status
M10.orphan.no_incoming_links, severity 3,fail, axisfixable: advisory, confidencesearch).established - — no
M10.semantic.missing_main/<main>landmark around primary content (status<article>, severity 3,warn, axisfixable: advisory, confidencesearch). Each finding:directionalquotes the page (the anchor text, the link count, the offending element);evidence.observedis the runnableverification.reproducecommand above;link-graph.mjsis banded + confidence-tagged (no naked percentages).expected_impact
按照 输出发现。示例:
schema/finding.schema.json- ——少于约 3 个上下文正文链接(状态
M10.contextual.too_few_inbody_links,严重级别 3,warn,轴fixable: proposed,置信度search)。directional - ——锚文本为“click here”/“read more”(状态
M10.anchor.generic_text,严重级别 3,warn,轴fixable: proposed,置信度search)。directional - ——页面没有来自抓取结果的内部入站链接(状态
M10.orphan.no_incoming_links,严重级别 3,fail,轴fixable: advisory,置信度search)。established - ——主内容周围没有
M10.semantic.missing_main/<main>地标(状态<article>,严重级别 3,warn,轴fixable: advisory,置信度search)。 每项发现:directional引用页面内容(锚文本、链接计数、问题元素);evidence.observed使用上述可运行的verification.reproduce命令;link-graph.mjs使用分档和置信度标签(不得使用无依据的百分比)。expected_impact
Honesty
Honesty
- A fixed "3-5 links per page" is a usability/structure heuristic, not a ranking law — treat the count as directional and never cap a score on it alone.
- Exact-match anchor stuffing and "more links = more authority" are myths: relevance and editorial context matter more than raw count, and excess can look manipulative. Recommend links only where they genuinely help the reader.
- 固定的“每页 3–5 个链接”是可用性/结构方面的启发式规则,而非排名法则——应将其视为方向性指标,绝不能仅依据该指标对分数设上限。
- 精确匹配锚文本堆砌和“链接越多,权威性越高”是误区:相关性和编辑语境比原始数量更重要,过量链接还可能显得具有操纵性。仅在链接确实能帮助读者时提出建议。