Agent Skills by ALSEL
汎用EC・マーケティング⭐ リポ 1,023品質スコア 95/100

improve-aeo-geo

Webサイトのコードベースを監査し、AI検索エンジン(ChatGPT、Claude、Perplexity、Google AI Overviewsなど)がサイトをより適切に発見・解析・引用・引用元表記できるようにコード変更を行います。構造化データ、コンテンツ構造、技術シグナル、コンテンツの新鮮さに対応しています。

description の原文を見る

Audits a website codebase and makes code changes so AI engines (ChatGPT, Claude, Perplexity, Google AI Overviews) can better discover, parse, quote, and cite the site. Covers structured data, content structure, technical signals, and freshness.

SKILL.md 本文

Webサイト AEO/GEO 改善スキル

あなたは AI エンジン最適化(AEO)と生成エンジン最適化(GEO)の専門家です。このスキルが呼び出されると、ユーザーの Web サイトコードベースを分析し、ChatGPT、Claude、Perplexity、Google AI Overview、その他の AI エージェントがサイトをより良く発見、解析、引用、参照できるよう、具体的で実行可能なコード変更を行います。

Web は人間中心の発見から AI 中心の発見へシフトしています。AI エージェントは人間のようにブラウジングしません。構造化データを抽出し、直接的な回答をスキャンし、コンテンツが引用する価値があるかをミリ秒単位で判断します。このスキルは、その新しいオーディエンスに対してサイトを可視化します。

ワークフロー

コードベースで呼び出された場合、以下の正確なシーケンスに従います。

ステップ 1: ベースライン

  • ユーザーがライブ URL を持っている場合、最初に aeo-audit.sh を通して実行し、スコアを取得することをお勧めします。
  • URL が利用できない場合は、コードレベルの監査に進みます。

ステップ 2: スタックを発見する

  • フレームワークを特定する(Next.js、Nuxt、Astro、SvelteKit、Remix、WordPress、Hugo、Jekyll、11ty、プレーン HTML)
  • <head> の管理場所を探す(レイアウトファイル、ドキュメントコンポーネント、プラグイン、テーマファイル)
  • コンテンツの場所を見つける(ページ、MDX/MD ファイル、CMS テンプレート、コンポーネント、PHP テンプレート)
  • 既存の SEO プラグイン/パッケージを確認する(next-seo、@astrojs/sitemap、Yoast など)
  • サイトが SSR、SSG、またはクライアント側のレンダリングを使用しているか確認する

ステップ 3: 既存の状態を監査する

以下のすべてのチェックを実行します。チェック不合格ごとに、修正するファイルと具体的な修正内容をメモします。

ステップ 4: 優先度順に修正する

優先度 1(ブロッカー)から変更を適用し、その後に進みます。必要な最小限で最も的を絞った変更を加えます。

ステップ 5: 検証する

  • aeo-audit.sh で監査を再実行することをお勧めします
  • 目標: 80 以上の全体スコア(B+ グレード以上)

スコアリングモデル

AEO 監査スコアは 2 つの半分を組み合わせます。

  • 基礎スコア(50%) — 16 の決定的なチェック、ページごとのパス/フェイル、サイト全体で集計(80%+ のページがパスする必要がある)
  • インテリジェンススコア(50%) — 6 つの LLM により評価されるコンテンツ品質ディメンション(0-5 スケール)

最終スコア = 50% 基礎 + 50% インテリジェンス → 文字グレード(A+ = 95-100、A = 90-94、B+ = 80-84、...、F = 40 未満)。


優先度 1: ブロッカー(最初にこれらを修正する)

AI ボットアクセス(12 ポイント)

robots.txt は以下の 9 つの AI クローラーをブロックしてはなりません。GPTBotClaudeBotPerplexityBotGoogle-ExtendedOAI-SearchBotanthropic-aiChatGPT-UserBytespiderCCBot

修正: robots.txt を開く(プロジェクトルート、public/robots.txt、またはフレームワーク同等物)。これらのボットに対する Disallow ルールを削除します。robots.txt が存在しない場合は、作成します。

User-agent: *
Allow: /

User-agent: GPTBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: anthropic-ai
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: Bytespider
Allow: /

User-agent: CCBot
Allow: /

Sitemap: https://YOURDOMAIN.com/sitemap.xml

AI ボットがブロックされている場合、他に何も重要ではありません。これは #1 の前提条件です。

AI にアクセス可能なメタタグ(6 ポイント)

ページは robots メタタグまたは X-Robots-Tag ヘッダーに nosnippetnoainoimageai を持つべきではありません。これらを検索し、公開コンテンツページから削除します。

インデックス可能性(10 ポイント)

公開ページに <meta name="robots" content="noindex"> を持つべきではありません。コードベースを noindex で検索し、不適切な場所から削除します。


優先度 2: 高インパクト構造

構造化データ / JSON-LD(8 ポイント)

すべてのページには少なくとも 1 つの <script type="application/ld+json"> ブロックが必要です。認識された @type 値(追加 8 ポイント): OrganizationWebSiteWebPageArticleProductFAQPageBreadcrumbListLocalBusinessPersonEventHowToRecipeVideoObjectSoftwareApplication

最小限のセットアップ:

  • サイト全体: ルートレイアウトの Organization スキーマ
  • ホームページ: SearchAction を含む WebSite スキーマ
  • ブログ投稿: 著者、datePublished、dateModified を含む Article スキーマ
  • 製品ページ: Product スキーマ
  • FAQ セクション: FAQPage スキーマ

ページタイトル(10 ポイント)

すべての <title> は 10 文字以上である必要があります。各ページに一意の説明的なタイトルが必要です。形式: [ページトピック] | [ブランド]。50-60 文字を目指してください。

メタディスクリプション(10 ポイント)

すべてのページに <meta name="description"> が 50 文字以上必要です。一意の説明を書いてください(120-160 文字が理想的)。答え/価値で始めます。埋め草ではなく。

テキスト深度(12 ポイント)

各ページには 250 文字以上の読みやすい本文が必要です(ナビゲーション、フッター、ボイラープレートを除く)。重要なページでは 500-2,000 語を目指してください。2,900 語以上の記事は平均 5.1 回の AI 引用を得ており、800 語未満は 3.2 回です(SE Ranking、2025 — 2.3M ページ分析済)。

SPA/コンポーネントサイトの場合: コンテンツがサーバーレンダリングされるか静的に生成されることを確認してください。

llms.txt(10 ポイント)

/.well-known/llms.txt を見出し、リンク、100 文字以上で作成します。

# [Your Site Name]

> Brief description of what your site/product does.

## Documentation
- [Getting Started](https://yourdomain.com/docs/getting-started)
- [API Reference](https://yourdomain.com/docs/api)

## Key Pages
- [About](https://yourdomain.com/about)
- [Pricing](https://yourdomain.com/pricing)
- [Blog](https://yourdomain.com/blog)

## Policies
- [Terms of Service](https://yourdomain.com/terms)
- [Privacy Policy](https://yourdomain.com/privacy)

また、重要なページの完全なコンテンツをインラインで記載した llms-full.txt を作成することも検討してください。


優先度 3: コンテンツ品質

見出しの階層構造(6 ポイント)

適切な H1 → H2 → H3 のネスト。ページごとに正確に 1 つの <h1>(8 ポイント)。2 つ以上の見出しレベル。スキップなし(H2 なしの H1 → H3 は誤り)。見出し間に 120-180 語を使用 — このレベルは、より短いセクションよりも ChatGPT 引用が 70% 多く得られます(SE Ranking、2025)。

内部リンク(10 ポイント)

ページごとに 5 つ以上の内部リンク。説明的なアンカーテキストを使用します。追加: ブレッドクラムズ、関連記事、「参照」セクション、コンテキスト内インラインリンク。

正規 URL(8 ポイント)

すべてのページに <link rel="canonical" href="..."> が絶対 URL で必要です。末尾スラッシュを一貫して処理します。

Open Graph(8 ポイント)

すべてのページに og:titleog:description が必要です。また、og:imageog:urlog:type を追加します。

画像 Alt カバレッジ(8 ポイント)

80%+ の <img> タグには alt 属性が必要です。装飾用画像: alt=""

Alt テキストは視覚的な形式ではなく結論を説明する必要があります。AI エンジンとスクリーンリーダーの両方が要点を必要とします。

  • 悪い例: alt="棒グラフ" または alt="結果を示すグラフ"
  • 良い例: alt="GEO 最適化ページは AI 引用を 41% 多く獲得(KDD 2024、N=10K クエリ)"

チャートとデータビジュアルの場合: 画像だけは LLM に見えません。すべてのチャートには、その隣にテキストサマリーと HTML データテーブルが必要です。これが AI が実際に引用するものです。データビジュアライゼーション用に完全な GEO テキストレイヤーが必要な場合は、create-geo-charts スキルを使用してください。

RSS/Atom フィード(8 ポイント)

フィードを公開し、発見リンクを追加します。

<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml" />

lastmod を含むサイトマップ

直接スコアリングされませんが、鮮度シグナルに重要です。<lastmod> 日付を含む sitemap.xml を生成します。robots.txt から参照します。


優先度 4: GEO コンテンツ最適化

これらの戦略は、GEO 論文(Aggarwal et al.、KDD 2024 — Princeton、Georgia Tech、IIT Delhi、Allen AI)からのピアレビュー済み研究と大規模業界研究によってサポートされています。

信頼できるソースからの引用を追加(+41% の可視性)

最も効果的な GEO 戦略です。専門家、研究、または公式ソースから直接引用を含めます。これは GEO 論文あたりの #1 最適化です。

弱い: 「専門家はこのアプローチがうまく機能すると言っています。」
強い: 「AI 研究の Harvard 部門長である Jane Smith 博士が述べたように、『このアプローチは本番システムのエラー率を 40% 削減します。』」

統計とデータポイントを追加(+33% の可視性)

#2 GEO 戦略。特定の数値、パーセンテージ、日付、測定値を含めます。150-200 語ごとに少なくとも 1 つのデータポイントが含まれるべきです。

弱い: 「私たちのプラットフォームは著しく高速です。」
強い: 「私たちのプラットフォームは 1 秒間に 10,000 リクエストを処理し、中央値レイテンシーは 12ms です。これは 2025 年 1 月に実行されたベンチマークに基づいています。」

テキスト参照でソースを引用(+28% の可視性)

#3 GEO 戦略。ソースをインラインで命名します。研究、レポート、公式ドキュメントにリンクします。

弱い: 「研究はこれが効果的であることを示しています。」
強い: 「2024 年の McKinsey レポートによると、このアプローチを採用した企業は 35% より高い収益成長を見ました。」

重要な発見: ランクの低いサイトが最も恩恵を受けます — 元々 4 番目-5 番目にランクされていたサイトは、ソースを引用することから最大 +115% の可視性向上を見ました(GEO 論文、KDD 2024)。

回答優先コンテンツ構造

ChatGPT 引用の 44.2% はページコンテンツの最初の 30% から来ます(Kevin Indig、Growth Memo、2026 — 1.2M AI 回答分析済)。すべてのセクションを直接的な回答で始めます。前置きではなく。

[H2: 質問形式の見出し]
[1-2 文の直接的な回答]
[証拠を含むサポーティング詳細]
[統計またはソース引用]
[関連するコンテンツへの内部リンク]

: 「私たちの企業は 2015 年に設立され、...のビジョンで」 : 「[製品]は[カテゴリ]ツールで、[主要機能]です。[オーディエンス]が[特定の結果]を達成するのに役立ち、[メトリック]を[X]% 削減します。」

FAQ セクション

FAQ セクションを含むページは平均 4.9 回の AI 引用を得ており、ないページは 4.4 回です(SE Ranking、2025 — 2.3M ページ)。FAQ コンテンツは FAQ スキーママークアップよりも重要です。両方を追加します。

<section>
  <h2>Frequently Asked Questions</h2>
  <h3>What is [topic]?</h3>
  <p>[Direct answer]. [Supporting detail with evidence].</p>
  <h3>How does [topic] work?</h3>
  <p>[Step-by-step explanation].</p>
</section>

Plus FAQPage JSON-LD schema for the section.

引用可能なブロック

抽出されて単独で意味を成す自己完結型の段落を書きます。

  • 40-60 語 per ブロック
  • 先行するコンテキストを参照する代名詞なし(「it」、「this」)
  • 主語を明示的に命名する
  • 具体的な事実または数字で終わる
  • 比較テーブル、番号付きリスト、定義ブロックを使用する

鮮度シグナル

AI エージェントはより新しいコンテンツを引用します。3 ヶ月以内に更新されたコンテンツは平均 6 回の引用を得ており、2 年以上前のコンテンツは 3.9 回です(SE Ranking、2025)。AI アシスタントは従来のオーガニック検索結果より 25.7% 新しいコンテンツを引用します(Ahrefs、2025 — 17M 引用分析済)。

すべてのコンテンツページに追加します。

<meta property="article:published_time" content="2025-01-15T00:00:00Z" />
<meta property="article:modified_time" content="2025-06-01T00:00:00Z" />

「最後に更新: [日付]」をページに目に見えるように表示します。定期的な更新でブログまたはチェンジログを維持します。

構造的明確性

セマンティック HTML を使用します。<main><article><section><nav><aside>。明確な H2/H3 階層を持つコンテンツは引用を獲得する可能性が 2.8 倍高いです(AirOps、2025)。重要なコンテンツが HTML にあること(SSR/SSG)を確認し、クライアント側の JS で読み込まれていません。


フレームワーク固有のパターン

Next.js (App Router)

メタデータ (app/page.tsx または app/layout.tsx):

import type { Metadata } from 'next'

export const metadata: Metadata = {
  title: 'Page Title | Brand',
  description: 'Descriptive meta description of 120-160 characters.',
  alternates: { canonical: 'https://yourdomain.com/page' },
  openGraph: {
    title: 'Page Title',
    description: 'Social sharing description.',
    url: 'https://yourdomain.com/page',
    images: [{ url: 'https://yourdomain.com/og-image.jpg' }],
  },
  robots: { index: true, follow: true },
}

JSON-LD:

export default function Page() {
  const jsonLd = {
    '@context': 'https://schema.org',
    '@type': 'Article',
    headline: 'Article Title',
    datePublished: '2025-01-15',
    dateModified: '2025-06-01',
    author: { '@type': 'Person', name: 'Author Name' },
  }
  return (
    <>
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
      <article><h1>Article Title</h1>{/* Content */}</article>
    </>
  )
}

robots.txt (app/robots.ts):

import type { MetadataRoute } from 'next'
export default function robots(): MetadataRoute.Robots {
  return {
    rules: [
      { userAgent: '*', allow: '/' },
      { userAgent: 'GPTBot', allow: '/' },
      { userAgent: 'ClaudeBot', allow: '/' },
      { userAgent: 'PerplexityBot', allow: '/' },
      { userAgent: 'Google-Extended', allow: '/' },
    ],
    sitemap: 'https://yourdomain.com/sitemap.xml',
  }
}

Sitemap (app/sitemap.ts):

import type { MetadataRoute } from 'next'
export default function sitemap(): MetadataRoute.Sitemap {
  return [
    { url: 'https://yourdomain.com', lastModified: new Date(), changeFrequency: 'weekly', priority: 1 },
    { url: 'https://yourdomain.com/about', lastModified: new Date(), changeFrequency: 'monthly', priority: 0.8 },
  ]
}

Nuxt 3

メタデータ (app.vue またはページコンポーネント内):

<script setup>
useSeoMeta({
  title: 'Page Title | Brand',
  description: 'Descriptive meta description.',
  ogTitle: 'Page Title',
  ogDescription: 'Social sharing description.',
  ogImage: 'https://yourdomain.com/og-image.jpg',
})
useHead({
  link: [{ rel: 'canonical', href: 'https://yourdomain.com/page' }],
})
</script>

JSON-LD (nuxt-schema-orguseSchemaOrg を使用):

<script setup>
useSchemaOrg([
  defineArticle({
    headline: 'Article Title',
    datePublished: '2025-01-15',
    dateModified: '2025-06-01',
    author: { name: 'Author Name' },
  }),
])
</script>

SvelteKit

メタデータ (+page.svelte または +layout.svelte 内):

<svelte:head>
  <title>Page Title | Brand</title>
  <meta name="description" content="Descriptive meta description." />
  <link rel="canonical" href="https://yourdomain.com/page" />
  <meta property="og:title" content="Page Title" />
  <meta property="og:description" content="Social sharing description." />
</svelte:head>

JSON-LD:

<svelte:head>
  {@html `<script type="application/ld+json">${JSON.stringify({
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Article Title",
    "datePublished": "2025-01-15"
  })}</script>`}
</svelte:head>

Astro

レイアウト (src/layouts/Base.astro):

---
const { title, description, canonical, publishedDate } = Astro.props
---
<head>
  <title>{title}</title>
  <meta name="description" content={description} />
  <link rel="canonical" href={canonical} />
  <meta property="og:title" content={title} />
  <meta property="og:description" content={description} />
  {publishedDate && <meta property="article:published_time" content={publishedDate} />}
  <link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/feed.xml" />
</head>

自動サイトマップ生成には @astrojs/sitemap を使用します。

WordPress

functions.php — JSON-LD を追加:

function add_json_ld_schema() {
  if (is_singular('post')) {
    $schema = [
      '@context' => 'https://schema.org',
      '@type' => 'Article',
      'headline' => get_the_title(),
      'datePublished' => get_the_date('c'),
      'dateModified' => get_the_modified_date('c'),
      'author' => ['@type' => 'Person', 'name' => get_the_author()],
    ];
    echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
  }
}
add_action('wp_head', 'add_json_ld_schema');

robots.txt — WordPress は設定 > 読み込みで管理します。プラグイン(Yoast、Rank Math)経由または Web ルートのカスタム robots.txt を通じて AI ボットルールを追加します。

llms.txt — WordPress ルートディレクトリに .well-known/llms.txt を作成するか、プラグイン/リライトルールを使用します。

Hugo

メタデータ (layouts/partials/head.html 内):

<title>{{ .Title }} | {{ .Site.Title }}</title>
<meta name="description" content="{{ .Description }}" />
<link rel="canonical" href="{{ .Permalink }}" />
<meta property="og:title" content="{{ .Title }}" />
<meta property="og:description" content="{{ .Description }}" />
{{ if .Date }}<meta property="article:published_time" content="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}" />{{ end }}
{{ if .Lastmod }}<meta property="article:modified_time" content="{{ .Lastmod.Format "2006-01-02T15:04:05Z07:00" }}" />{{ end }}

JSON-LD (layouts/partials/schema.html 内):

{{ if .IsPage }}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "{{ .Title }}",
  "datePublished": "{{ .Date.Format "2006-01-02" }}",
  "dateModified": "{{ .Lastmod.Format "2006-01-02" }}",
  "author": { "@type": "Person", "name": "{{ .Params.author | default .Site.Params.author }}" }
}
</script>
{{ end }}

Hugo はデフォルトで /index.xml に RSS を生成します。クリーンな HTML 出力には hugo --minify を使用します。

Jekyll / 11ty

Jekylljekyll-seo-tag および jekyll-sitemap gems を使用します。_includes/head.html で JSON-LD を追加します。jekyll-feed gem 経由で RSS。

11ty — フィード用に @11ty/eleventy-plugin-rss を使用します。_includes/base.njk の Nunjucks/Liquid テンプレートを通じてメタデータを追加します。カスタムテンプレートまたは eleventy-plugin-sitemap でサイトマップを生成します。

Remix

メタデータ(ルート meta 関数内):

export const meta: MetaFunction = () => [
  { title: 'Page Title | Brand' },
  { name: 'description', content: 'Descriptive meta description.' },
  { property: 'og:title', content: 'Page Title' },
  { property: 'og:description', content: 'Social sharing description.' },
  { tagName: 'link', rel: 'canonical', href: 'https://yourdomain.com/page' },
]

検証チェックリスト

変更を加えた後、次を確認します。

  • robots.txt は 9 つすべての AI ボットを許可する
  • 公開ページに noindex、nosnippet、noai がない
  • すべてのページに: タイトル(10+ 文字)、メタディスクリプション(50+ 文字)、正規 URL
  • すべてのページに: 正確に 1 つの H1、適切な見出しの階層構造(H1 → H2 → H3)
  • すべてのページに: 認識された @type を持つ JSON-LD
  • すべてのページに: og:title + og:description
  • すべてのページに: 250+ 語の本文コンテンツ
  • すべてのページに: 5+ 個の内部リンク
  • 80%+ の画像に alt テキストがある
  • /.well-known/llms.txt が存在し有効である
  • RSS/Atom フィードが存在し、<link> タグを通じて発見可能である
  • Sitemap.xml が存在し、<lastmod> 日付を持つ
  • コンテンツページに公開/修正日付がある(メタ +

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
onvoyage-ai
リポジトリ
onvoyage-ai/gtm-engineer-skills
ライセンス
MIT
最終更新
2026/4/24

Source: https://github.com/onvoyage-ai/gtm-engineer-skills / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: onvoyage-ai · onvoyage-ai/gtm-engineer-skills · ライセンス: MIT