seo-entity-linking について
seo-entity-linking は、構造化データの識別リンク、ページの主要エンティティ定義、ローカルビジネス情報の整合性を確認する SEO 監査スキルです。推測や捏造を避け、ユーザーが確認した URL だけを識別リンクに使用します。
主な機能
- 01Person と Organization の sameAs を確認
- 02ページの主要エンティティを検証
- 03ローカルビジネスの名称・住所・電話を照合
- 04エンティティ参照の網羅性を評価
- 05識別リンクとリンク先を検証
活用シーン
- 01組織マークアップに確認済みの識別リンクを追加
- 02主要エンティティが明確でないページを発見
- 03ローカルビジネスのマークアップと表示情報を照合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-entity-linkingインストール後、Claude Code で/seo-entity-linkingを入力して読み込まれたか確認します。
詳細
seo-entity-linking (M6)
エンティティの紐付けにより、ページがどの現実世界の対象についてのものかを検索エンジンや AI システムに伝え、ナレッジグラフと結び付けます。参照先:references/schema-tier1.md(sameAs/@id/Person+Organization のルール)。このモジュールは、M5 がここに委ねている sameAs の詳細を担当します。
入力
ディスパッチエンベロープで指定された PageSnapshot を使用します。<run_dir>/pages/<slug>.json から parsed(jsonld[]、anchors[])を読み取り、pages/<slug>.html を grep して逐語的な根拠を確認します。サイトのアーティファクトは <run_dir>/site/{robots.json,sitemaps.json,discovery.json} にあります。audit.mjs がすでに出力した決定的な検出結果は <run_dir>/findings.deterministic.json に記載されています。これらの ID を再出力せず、モデルが判定した検出結果のみ追加してください。スナップショットがなく、URL/パスを直接指定して実行された場合は、まず node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" を実行し、表示されたスナップショットのパスを使用してください。
監査
PageSnapshot を使用します(render.used が none でない場合は parsed_rendered、そうでなければ parsed)。
- sameAs アイデンティティリンク:
Organization/Personエンティティについて、sameAs[]が正規のアイデンティティ(Wikidata QID、Wikipedia、LinkedIn、Crunchbase、公式ソーシャル/企業プロフィール)に解決されるか確認します。ナレッジグラフの参照先としては Wikidata が最も有力です。 - 主エンティティの定義:ページごとに明確な主エンティティが 1 つだけ存在すること(
@idとmainEntity/mainEntityOfPageによる)を確認します。曖昧な対象や対象の欠落がないことを確認してください。 - エンティティの整合性(ローカル):
LocalBusinessについて、スキーマの NAP(名称、住所、電話番号)がページ上で表示される NAP と一致し、ブロック間で一貫していることを確認します。 - エンティティ密度:リンクまたはマークアップされたエンティティ(
@id付きノード、sameAsの参照先、about/mentions)の数を数え、解決可能なエンティティ参照がない薄いページにフラグを立てます。
修正
- AUTO(
fixable: auto):ユーザーが確認した URL のみを使用して、Organization/PersonにsameAs[]配列を挿入し、既存のスキーマにabout/mentionsのエンティティ参照を追加します。fixでは追加のみの決定的な差分を作成します。アイデンティティリンクを決して捏造しないでください。URL が未確認の場合は、ユーザーが入力する、明示的なTODOプレースホルダーを残してください。 - PROPOSED(
fixable: proposed):検索で見つかった Wikidata/LinkedIn の候補一致です。項目ごとに人が承認するための下書きとして提示し、自動では書き込みません。 - ADVISORY(
fixable: advisory):該当するものがない場合に、「Wikidata エンティティを作成する/プロフィールを申請する」よう案内します。ガイダンスのみで、ツールは何も書き込みません。
検証
dom_assert:解析済み JSON-LD にsameAs/@id/mainEntityが存在し、形式が正しいことを確認します。- 各
sameAsURL を解決し、Tier 1 の Wikidata ルックアップで有効であり、表明されたエンティティを指していることを確認します。リンク切れまたは不一致は合格ではなく失敗です。 - ライブ検索のティアが利用できない場合、ステータスは
passではなく、必ずneeds_apiになります。
調査結果
schema/finding.schema.json に従って調査結果を出力します。axis は ai、confidence はすべて directional です。これらのいずれもベンダーによって文書化されていません。重大度の方針:5 は、サイト/テンプレートのスコープにおける、適格性を失わせる壊滅的な事実に限ります。4 は重大、3 は中程度、2 は軽微、1 は表面的、0 は情報提供のみです。また、アクティブなカテゴリで established とされた severity-5 の fail のみがスコアに上限を設定できます(references/scoring-model.md)。
M6.organization.missing_sameas—sameAs[]のないOrganization(fail、severity 3、fixable: proposed)。M6.page.no_primary_entity— ページ上に単一の定義済みプライマリエンティティ(@id/mainEntity)がない(warn、severity 3、fixable: advisory)。M6.entity.thin_density— 実在する組織、人、製品を挙げているページのマークアップ内に、解決可能なエンティティ参照がない(warn、severity 3、fixable: advisory)。M6.person.no_wikidata_link— Wikidata/LinkedIn の識別リンクがない著者Person(warn、severity 2、fixable: proposed)。M6.sameas.unresolvable— 404 を返す、または別のエンティティを指す、宣言済みのsameAsURL(fail、severity 3、fixable: proposed)。 各調査結果では、evidence.observedにページの内容(エンティティブロック、またはその不在)を引用し、verification.reproduceに実行可能なアサーション/検索を記載します。expected_impactは範囲と信頼度タグを付けて示します(単独の % は不可)。
誠実さ
sameAsリンクを指定しても、ナレッジグラフへの登録が保証されるわけではなく、ランキング向上も保証されません。これはエンジンにエンティティを識別させるためのシグナルなので、影響度はdirectionalにとどまり、establishedにはなりません。- エンティティの密度を高めるために、識別 URL を捏造したり、推測したり、「最善努力」で補ったりしてはいけません。誤った
sameAsはエンジンを積極的に誤解させるため、空の配列よりも悪影響があります。確認済みのものだけを使うか、TODOのままにしてください。 - エンティティの密度は、「このページは特定可能で解決可能な何かについて説明している」ことを示す代替指標であり、エンジンが公表している指標ではありません。数値そのものを追い求めないでください。