コンテンツ制作 · zubair-trabzada/geo-seo-claude

geo-seo-claude

GEOファーストのSEO分析ツール。従来のSEO基盤を維持しながら、AI検索エンジン(ChatGPT、Claude、Perplexity、Gemini、Google AI Overviews)向けにWebサイトを最適化します。完全なGEO監査、引用性スコアリング、AIクローラー分析、llms.txt生成、ブランド言及スキャン、プラットフォーム固有の最適化、構造化マークアップ、テクニカルSEO、コンテンツ品質(E-E-A-T)、クライアント向けGEOレポート生成を実行します。ユーザーが「geo」、「seo」、「audit」、「AI search」、「AI visibility」、「optimize」、「citability」、「llms.txt」、「schema」、「brand mentions」、「GEO report」、または分析対象のURLを入力した際に使用します。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行依存関係インストールネットワーク通信ファイル書き込みDual-pass Audit
Author zubair-trabzadaGitHub zubair-trabzada/geo-seo-claude ↗Stars 10614License MIT(仓库根 LICENSE:'MIT License ... Copyright (c) 2026 Zubair Trabzada';README '## License / MIT License';GitHub 池内值亦为 MIT)Commit 25f6ae8d6c
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

GEOファーストの6次元加重スコアリングがツール全体の主軸です。AI引用性の重みが最も高く(25%)、ブランド権威性20%、コンテンツE-E-A-T 20%、従来のテクニカルSEOは15%、構造化データ10%、プラットフォーム面10%となっています。計算式、0〜100点のグレード分類、Critical/High/Medium/Lowの改修期限がスキルファイル内に明記されており、エージェントの裁量は「ルーブリックに従って6つのスコアを付与する」ことだけに絞り込まれています。

skills/geo-audit/SKILL.md
GEO_Score = (Citability * 0.25) + (Brand * 0.20) + (EEAT * 0.20) + (Technical * 0.15) + (Schema * 0.10) + (Platform * 0.10)
同一ファイル内で90〜100 Excellent / 75〜89 Good / 60〜74 Fair / 40〜59 Poor / 0〜39 Criticalの5段階の定義と、Criticalの「Fix Immediately」からLowの「Optimize When Possible」までの優先度付きリストが提供されており、スコアの説明可能性と再現性がクライアント納品物としての前提条件となっています。

引用性(citability)は単なるスローガンではなく実行可能なコードとして実装されています。citability_scorer.pyは「AIは134〜167語で自己完結し、事実に基づく数値を含む段落を好む」という特性を5つの次元(回答チャンク30 / 自己完結性25 / 構造20 / 統計密度15 / 独自性10)の正規表現スコアラーに落とし込み、段落ごとに0〜100点で評価してA〜Fのグレードを判定します。

scripts/citability_scorer.py
if 134 <= word_count <= 167:
同ファイルはre.searchを用いて定義文パターン('X is a/an/the'、'refers to'、'defined as')、代名詞密度、パーセンテージ/ドル/単位付き数値、'according to|research shows|studies found'、'our research|we found'などをマッチングします。LLM呼び出しやAPIキーを一切使用しない純粋なヒューリスティック処理であるため、オフラインでの再計算やテストでの回帰検証が可能です。

サイト全体の監査は5つの並列サブエージェントに分担されます。geo/SKILL.md内のテーブルで各エージェントファイルと担当サブスキルが紐付けられており、メインスキルはPhase 1の探索、Phase 2の並行委譲、Phase 3の統合のみを担当します。

geo/SKILL.md
Launch these 5 subagents simultaneously:
サブエージェント一覧は、geo-ai-visibility(citability/crawlers/llmstxt/brand-mentions)、geo-platform-analysis、geo-technical、geo-content、geo-schemaです。各エージェントは重み付けと出力形式を個別に定義しており、例えばagents/geo-ai-visibility.mdではAI_Visibility = Citability*0.35 + Brand*0.30 + Crawler*0.25 + llms.txt*0.10となっています。並列処理自体はホストエージェントのスケジューリング能力に依存し、スキルは分担の取り決めと統合ルールを提供します。

AIクローラーのアクセス許可判定には具体的な根拠があります。fetch_page.py内に14種類のAI/検索クローラーのリストがハードコードされており、robots.txtを1行ずつ解析します。エージェント側では100点満点の減点ルール(主要クローラーのブロックは1件につき-15点、サブクローラーは各-5点、sitemap記載なしは-10点)を適用します。

scripts/fetch_page.py
ai_crawlers = [ "GPTBot", "OAI-SearchBot",
対象リストはGPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot、anthropic-ai、PerplexityBot、CCBot、Bytespider、cohere-ai、Google-Extended、GoogleOther、Applebot-Extended、FacebookBot、Amazonbotです。robots.txtに加えて/llms.txtやsitemapの参照も検証し、スコア対象外のContent-Signalドラフト指令(draft-romm-aipref-contentsignals)も解析します。

llms.txtの検証と生成の両方に対応しています。スクリプトは「H1タイトル / > 説明 / ## セクション / リンク項目」の4項目からformat_validを判定して個別の課題を出力します。generateモードではトップページと内部リンク(デフォルト30ページ)をクロールし、llms.txtおよびllms-full.txtを出力します。

scripts/llmstxt_generator.py
result["format_valid"] = (
llms-full.txtの生成時には各ページのmeta descriptionを再取得します。作成者はSSRFリスクを低減するためにクロスオリジンURLを明示的にスキップしており(コメント:'# Skip cross-origin URLs to prevent SSRF via redirect chains')、監査対象サイトからスクリプトへリクエスト対象がインジェクションされる可能性を認識していることが示されています。

ブランド言及スキャンは「実API呼び出しと委譲のハイブリッド」です。WikipediaとWikidataは実際のAPIリクエストを行ってyes/noの判定を下しますが、YouTube、Reddit、LinkedIn、G2などのその他のプラットフォームはsearch_urlと確認チェックリストを生成するのみで、実際のコンテンツ取得はエージェントのWebFetch/検索機能に委ねられます。

scripts/brand_scanner.py
api_url = f"https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch={quote_plus(brand_name)}&format=json"
エビデンスの境界:同ファイルのYouTube分岐には'# Note: Actual YouTube API would be used in production' / '# This provides the framework for Claude Code to use WebFetch'と記載されています。そのため、READMEの「Scans YouTube, Reddit, Wikipedia, LinkedIn, and 7+ other platforms」という記述は、スキャンのエントリポイントとスコアリング手法を提供し、実際の調査はエージェントが実行するものと解釈すべきです。

PDF納品物の生成にはPythonの依存関係が不要です。v2.0.0のgeo-report-pdfはpandocを使用してGEO-AUDIT-REPORT.mdを自己完結型HTML(表紙テンプレートおよびCSS内蔵)にレンダリングし、ローカルのGoogle Chrome headlessでPDFとして出力します。スコアや重大度に応じたカラーリングは印刷前にテンプレート内のインラインJSによって行われます。

skills/geo-report-pdf/SKILL.md
No Python dependencies. No ReportLab. No JSON data wrangling.
前提条件はpandocとローカルのChrome('/Applications/Google Chrome.app/')のみであり、最終的にChromeの"file://$(pwd)/GEO-REPORT.html"経由で印刷されます。いわゆるチャートはグラフライブラリではなく、CSSで生成されたスコアバッジやカラーテーブルです。

/geo updateは自己更新機能を提供します。上流のmainブランチをクローン(--depth 1、コミット未固定、検証なし)し、diffを確認した上でgeo/、skills/、agents/、scripts/、schema/を~/.claude/に上書きし、pip install -rで依存関係を更新します。ローカルでカスタマイズされたファイルは削除されません。

skills/geo-update/SKILL.md
git clone --depth 1 https://github.com/zubair-trabzada/geo-seo-claude.git "$TEMP_DIR/repo"
同ファイルのStep 5における依存関係更新は'python3 -m pip install -r "$SOURCE_DIR/requirements.txt" --quiet'を実行します(インストーラーのような分離されたvenvパスではありません)。このスキルのallowed-toolsにはBash/Read/Writeが指定されており、本リポジトリにおいて上流コードを取得してローカルディスクに書き込む唯一の標準ルートです。

2コア機能

01単一エントリポイント/geoによるコマンドルーティング(17コマンド)とコマンドごとのツールホワイトリスト宣言
026次元の加重複合GEO Score(0〜100点)+ 5段階評価 + Critical/High/Medium/Lowのアクションリスト
03段落レベルのcitabilityスコアリング(0〜100点からA〜F判定)とリライト提案の根拠提示
04AIクローラーアクセス判定(Allowed/Blocked/Restricted/Unknown)+ 減点方式のCrawler Access Score + Content-Signalの解析
05llms.txtのフォーマット検証およびサイトクロールからの自動生成(llms-full.txt対応)
06ブランド/エンティティ権威性のスキャン:WikipediaとWikidataの実API呼び出し、およびQuora/Stack Overflow/GitHub/Crunchbase/Product Hunt/G2/Trustpilot等の検索エントリポイント生成
07クライアント納品パイプライン:Markdownレポート(GEO-CLIENT-REPORT.md/GEO-AUDIT-REPORT.md)→ pandoc + Chrome headlessによる表紙付きスコアカラーPDF出力(テンプレートとCSSのホワイトラベル対応)
08GEO代理店向けビジネス機能:簡易CRM(~/.geo-prospects/への見込み顧客/提案書/比較データの保存)+ Flask/HTMXダッシュボード(localhost:5050)+ richターミナルダッシュボード

3外部依存関係

KindDependency / Endpoint
packagerequests
packagebeautifulsoup4
packagelxml(BeautifulSoup 解析器)
packageplaywright(可选,截图用;安装器会拉 Chromium 二进制)
packageflask(CRM Web 看板)
packagerich(终端 CRM 看板)
packagePillow / urllib3 / validators(requirements 其余依赖,脚本中未直接调用点)
clipandoc
cliGoogle Chrome(headless 打印 PDF)
cligit(安装与 /geo update 拉取上游)
cliuv(可选,加速 venv/依赖安装)
apiWikipedia MediaWiki 搜索 API
apiWikidata wbsearchentities API
network被审计目标站点本身(任意 http/https 主机,含 /robots.txt、/llms.txt、/llms-full.txt、/sitemap.xml、/sitemap_index.xml 及页面与页面内同域链接)
networkGoogle Fonts(PDF 样式表 @import,pandoc/Chrome 渲染时取字体)
networkBootstrap 与 HTMX CDN(CRM Web 看板模板)
networkraw.githubusercontent.com 一键安装(curl 管道执行 install.sh,不进 skill 运行时)
apiGitHub REST stargazers API(仅 CI 生成星标图,不进 skill 运行路径)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: インストール時(ユーザーによる明示的な実行):install.sh / install-win.sh によるディレクトリ作成、geo/、skills/*、agents/*、s のコピー
  • scripts/ 或 SKILL.md: 外部言語パッケージ依存の動的インストールの宣言
  • 网络端点: 外部ネットワークアクセスの宣言: 監査対象サイト自体:scripts/*.py 内の requests.get がユーザー入力の http/https URL を参照(fetch_page は非HTTPを明示的に拒否)
  • 本地工作目录: ファイルの読み書きと成果物の出力: 監査成果物がカレントワーキングディレクトリに出力される:GEO-AUDIT-REPORT.md、GEO-PAGE-ANALYSIS.md、GEO-CITABILITY-SCORE.
監査ノート: 統一評価基準に基づく判定:認証情報やシークレットの読み取りはなく(リポジトリ内で唯一の GITHUB_TOKEN 読み取りは CI スクリプト .github/scripts/star_history.py にあり、スキルの実行パスには含まれません)、テレメトリや外部データ送信エンドポイントもなく、難読化されたペイロードも存在しません。管理対象の71ファイルはすべて可読であり、ネットワーク接続先も限定列挙可能です(監査対象サイト + Wikipedia/Wikidata の公開 API + GitHub/PyPI からのコード取得 + ページ用 CDN フォント)。イエロー(Yellow)判定の理由は以下の4点です:① メインスキル、サブスキル、エージェントがいずれも Bash + Write を宣言しており、監査対象サイトの任意の信頼できない HTML が入力となるため、「インジェクションされたコンテンツ → 実行/ディスク書き込み」という経路が存在し、ドキュメントにサンドボックス分離の制約がありません。② ワンクリックインストールが curl パイプ経由の install.sh 実行であり、Windows インストーラーは pip install --user でユーザー領域の Python に書き込みます(README にある「Your system Python is not touched」という分離の保証と Windows 側で矛盾します)。③ /geo update がコミット未固定で上流の main をクローンし、インストール済みファイルを上書きして pip install -r を実行するため、検証のないサプライチェーン更新リスクが存在します。④ PDF 生成処理で Chrome --no-sandbox を使用して監査対象コンテンツから間接的に生成された HTML を印刷します。これらはすべてホスト側の権限管理や人間による確認によってリスクを抑制可能であり、シークレットへの接触も含まれないため、オレンジ(Orange)には引き上げません(本基準において、Cookieや認証情報への接触、または隠蔽された外部送信がある場合のみオレンジと判定します)。

5二重目の独立検証

  • [ok] skill.path 定位 — 候选位置逐一排查:仓库根无 SKILL.md(git ls-tree 确认根目录只有 README/LICENSE/install*/uninstall/requirements 与各功能目录);`geo/SKILL.md` 是唯一带 `name: geo` 的路由入口,frontmatter 声明 17 条 /geo 命令并提供 sub-skill/agent 分工表;install.sh 把 `geo/` 装成 ~/.claude/skills/geo 并把 `$INSTALL_DIR/SKILL.md` 当作主技能文件(`INSTALL_DIR="${SKILLS_DIR}/geo"`),geo-update 亦称 Main skill = ~/.claude/skills/geo/;docs/architecture.md 与 README 同称 'geo/ # Main skill orchestrator'。skills/* 是子技能(无 flagship 地位,安装时被平铺到 ~/.claude/skills/geo-*)。故取 skill.path="geo"——仓库根不是 skill,子技能目录是下级组件。
  • [discrepancy] README/docs 的 PDF 实现描述(generate_pdf_report.py + ReportLab) — README 架构图写 '│ ├── generate_pdf_report.py # PDF report generator (ReportLab)',docs/commands-reference.md 写 '- Calls `python3 ~/.claude/skills/geo/scripts/generate_pdf_report.py` (requires `pip install reportlab`).';但 71 个受管文件中并无该脚本,requirements.txt 没有 reportlab,现行 skills/geo-report-pdf/SKILL.md(version 2.0.0)明确 'No Python dependencies. No ReportLab.',改用 pandoc + Chrome headless + 仓内模板/CSS。结论:README 与 commands-reference 是未同步的旧文档,应以 geo-report-pdf v2.0.0 为准。
  • [discrepancy] 子技能数量与实际目录数 — 三处口径互斥:README '├── skills/ # 13 specialized sub-skills'、docs/architecture.md 同写 13;geo/SKILL.md 标题 '## Sub-Skills (14 Specialized Components)' 且表格缺 geo-report-pdf;实际 `skills/` 下有 15 个目录(含 geo-report-pdf)。另外 router 命令表共 17 条命令,其中 `/geo page` 与 `/geo quick` 没有对应子技能目录(由其它技能组合实现)。用户按文档理解能力边界会有偏差。
  • [discrepancy] 品牌提及『扫描 10+ 平台』的夸大检查 — README 称 'Scans YouTube, Reddit, Wikipedia, LinkedIn, and 7+ other platforms'。实读 scripts/brand_scanner.py:只有 Wikipedia API 与 Wikidata API 两处 requests.get 是真实网络判定;YouTube/Reddit/LinkedIn/Quora/Stack Overflow/GitHub/Crunchbase/Product Hunt/G2/Trustpilot 分支仅返回 search_url + check_instructions,并由代码注释明示 'Actual YouTube API would be used in production / This provides the framework for Claude Code to use WebFetch'。属能力边界夸大(真实核查转由 agent 的 WebFetch/搜索完成)。
  • [discrepancy] 安装器『隔离 venv、不动系统 Python』承诺 — README 声明 'Python dependencies are installed into a dedicated virtual environment at `~/.claude/skills/geo/.venv/`. Your system Python is **not** touched',install.sh 确实如此(venv + `uv pip install --python "$VENV_PY"`/`$VENV_PY -m pip install` + 把脚本 shebang 与 SKILL.md 中 python3 调用 sed 成 venv 解释器)。但 install-win.sh 走的是 `$PYTHON_CMD -m pip install --user -r "$SOURCE_DIR/requirements.txt"`(写用户级 site-packages),与承诺不符;/geo update 也用 `python3 -m pip install -r ...`(非 venv 路径)。
  • [ok] hooks 安装路径 — 两个安装器都 `mkdir -p "$INSTALL_DIR/scripts" "$INSTALL_DIR/schema" "$INSTALL_DIR/hooks"` 并在 `[ -d "$SOURCE_DIR/hooks" ]` 守卫下复制 hooks;仓库内确无 hooks/ 目录(本地 ls 报 No such file or directory,git ls-tree 亦无),故该分支在源码态为惰性空操作,不构成未列出的执行面。
  • [ok] 全部 external_deps 二次定位 — 18 条依赖逐条回到调用点复核:requests 在 fetch_page.py/citability_scorer.py/brand_scanner.py/llmstxt_generator.py 四处 requests.get;beautifulsoup4+lxml 在 fetch_page/llmstxt 的 BeautifulSoup(..., "lxml");flask 在 webapp/app.py 顶层 import 且 `app.run(debug=debug, port=5050)`;rich 在 crm_dashboard.py import 块;playwright 由 install.sh 的 venv 内 `-m playwright install chromium` 触发(requirements 亦列 playwright>=1.56.0);pandoc/Chrome/git/uv 均为命令行调用点;Wikipedia/Wikidata/fonts.googleapis.com/jsdelivr/unpkg/api.github.com/raw.githubusercontent.com 均有原文出处。Pillow/urllib3/validators 仅见于 requirements.txt,仓内无直接调用点(已在条目 note 中标注)。
  • [ok] 是否漏掉网络调用/隐藏脚本/混淆内容 — 全量 grep `requests\.|urllib|urlopen|getenv|environ|api_key|API_KEY|token|Authorization|https?://` 无遗漏命中:除已列条目外只剩示例/文档里的 schema.org、w3.org 等纯参考资料 URL,无上传/回传/统计端点;全文无 base64 长串、无 eval/exec、无 subprocess 拼装执行远端内容(webapp 与 crm_dashboard 只读写本地 JSON)。资产面 71 文件全部为文本,无二进制/压缩包。

6結論

  • GEOファーストの定量化フレームワークが自己完結かつ実行可能:6次元の重み付け → 0〜100点のスコア帯 → 重大度 → 改修期限が定義されており、エージェントはルーブリックに従って採点するだけでサイト間や監査回ごとの結果の比較が可能です。
  • 単なるプロンプトのラッパーではない実装:5つのPythonスクリプトがHTML/robots.txt/llms.txtを実際に解析し、ヒューリスティックにスコアリングします。オフラインで再計算可能であり、SSRの誤判定に対応した回帰テストや検証記録も備えています。
  • クライアントへ直接納品可能な成果物:Markdownレポートに加え、pandoc/Chromeによる表紙付きPDF(スコアバッジ、重大度別カラー、改ページ対応)を生成でき、テンプレートやCSSをホワイトラベル用にカスタマイズして代理店がそのまま自社ブランドで納品できます。
  • 堅牢なインストール設計:専用のvenvを用意し、スクリプトのshebangやSKILL.md内のインタープリタ呼び出しをvenvのパスに自動書き換えすることで、依存関係の競合やPATH環境の差異を回避しています。
  • 完結したビジネスワークフロー:prospect/proposal/compareコマンドとCRMダッシュボードにより、監査結果を営業資料や月次レポートに直結させることができ、同種のスキルの中でも珍しい完成度を持っています。
  • 最適な用途: クライアントに対してAI検索可視性(GEO)の診断を提供したい代理店、コンサルタント、マーケティングチームに最適です。ワンクリックでインストール後、0〜100点の監査、クライアント向けレポート、提案書、月次推移の出力が可能で、PDF出力とホワイトラベル対応によりそのまま納品物として活用できます。また、既存のSEOワークフローに「AI引用親和性」を組み込みたいチーム(/geo citability、/geo crawlers、/geo llmstxtなどのサブコマンドを個別実行可能)にも適しています。エンジニアリングの観点では、citability、robots、llms.txt、SSRの判定が可読性とテスト容易性の高いPythonヒューリスティックとして実装されているため、自社開発パイプラインの出発点やリファレンス実装として有用です。
    不向きな用途: 「実際のAIプラットフォーム上の露出データ」を期待するユースケースには適していません。本ツールはAIプラットフォームのAPIを呼び出さず、スコアはルールベースの推定値であるため、ChatGPTやPerplexityで実際に自社が引用されているかを確認するにはリアルタイムクエリやサードパーティデータソースを別途用意する必要があります。信頼できない外部サイトに対して無人・自動で一括監査を行う用途には適していません(Bash+Writeが外部コンテンツと同じコンテキストで動作するため、インジェクションから実行に至るリスクがあります)。Windows環境で厳密な依存関係の分離を求めるユーザーには不向きです(install-win.shがpip install --userを使用)。また、従来のSEO監査のみを目的とする場合にも適していません。スコア設計と判定基準はGEOファーストであり、従来のSEO領域はテクニカルおよび構造化データという低加重の2次元のみをカバーしています。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload geo-seo-claude.tar.gz
    sha256: 3a969f95e983e9c4…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 25f6ae8d6c.