seo-entity-linking

Installation
SKILL.md

seo-entity-linking (M6)

Entity linkage tells search engines and AI systems which real-world thing a page is about and ties it to the Knowledge Graph. Reference: references/schema-tier1.md (the sameAs/@id/Person+Organization rules). This module owns the sameAs detail M5 defers here.

Inputs

Work from the PageSnapshot named in your dispatch envelope: read parsed from <run_dir>/pages/<slug>.json (jsonld[], anchors[]); Grep pages/<slug>.html for verbatim evidence; site artifacts live in <run_dir>/site/{robots.json,sitemaps.json,discovery.json}. Deterministic findings already emitted by audit.mjs are listed in <run_dir>/findings.deterministic.json — do not re-emit those ids; add model-judged findings only. If invoked directly with a URL/path and no snapshot exists, first run node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" and use the printed snapshot path.

Audits

Working from the PageSnapshot (parsed_rendered when render.used is not none, else parsed):

  1. sameAs identity links: for Organization/Person entities, check for sameAs[] resolving to canonical identities — Wikidata QID, Wikipedia, LinkedIn, Crunchbase, official social/company profiles. Wikidata is the strongest Knowledge Graph target.
  2. Primary entity defined: confirm exactly one clear primary entity per page (via @id + mainEntity/mainEntityOfPage), not an ambiguous or missing subject.
  3. Entity consistency (local): for LocalBusiness, verify NAP (name, address, telephone) in schema matches visible on-page NAP and is internally consistent across blocks.
  4. Entity density: count distinct linked/marked entities (@idd nodes, sameAs targets, about/mentions) — flag thin pages with no resolvable entity references.

Fixes

  • AUTO (fixable: auto): inject a sameAs[] array on Organization/Person using only user-confirmed URLs, and add about/mentions entity references to existing schema. Additive, deterministic diffs for fix. Never invent identity links — if a URL is unconfirmed, leave a clearly-marked TODO placeholder the user fills.
  • PROPOSED (fixable: proposed): a candidate Wikidata/LinkedIn match found by lookup — drafted for per-item human accept, never auto-written.
  • ADVISORY (fixable: advisory): "establish a Wikidata entity / claim profiles" when none exist — guidance only, the tool writes nothing.
Installs
186
GitHub Stars
74
First Seen
Jun 2, 2026