Communityコーディング&開発github.com

ummmydev/ai-search

サイトをAIアシスタント(ChatGPT、Claude、Perplexity、Gemini、Copilot、Google AI Overviews)にとって読みやすく、正確で引用可能にし、製品を正しく説明させ、引用させるためのスキル。ユーザーが「llms.txt」「llms-full.txt」「AI検索」「GEO」「AEO」「ChatGPTに引用される」「Perplexityの回答に表示される」「AIクローラーを許可する」「robots.txtのGPTBot」「AIが価格を間違える」「AIが別の製品と混同する」「ブランド名の衝突」「Organization schema sameAs」「サイトをエージェントが読めるようにする」などと言った場合に使用します。llms.txt、AIクローラー向けrobots.txt、定義文、比較表とFAQ、公開価格、OrganizationとWebSiteの構造化データ、ブランド名の統一をカバーします。

ai-search とは?

このスキルは、製品のWebサイトをAIアシスタント(ChatGPT、Claude、Perplexity、Gemini、Copilot、Google AI Overviews)が正確に理解し、引用できるように最適化するための包括的なガイドです。AIアシスタントは検索結果から文章や表の行を抽出して回答を生成するため、事実がプレーンテキストで明示されていないと誤った推測や誤引用を行う可能性があります。このスキルでは、事実を一箇所で定義し、すべてのページに展開する「単一情報源」の原則に基づき、llms.txtの生成、AIクローラー向けrobots.txtの設定、各ページ先頭の定義文、比較表やFAQ、公開価格、構造化データ、ブランド名の統一といった具体的なワークフローを提供します。また、実際のAIアシスタントによる回答を定期的にチェックし、誤った事実を修正するプロセスも含まれています。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ummydev/marketing-team-skills/tree/HEAD/skills/ai-search

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

AI検索

「Xとは」「Xの料金」「Yに最適なツール」に答えるアシスタントは、いくつかのページを取得し、文章や表の行を抜き出して引用します。事実がページにプレーンテキストとして存在しない場合、アシスタントは推測するか、それを記述した誰かを引用します。目標は、製品を一度の取得で正確に説明できるようにすることです。

すべてのステップに通じる原則は一つです。各事実を一度だけ書き、あらゆる場所でそれを表示する。 定義、ステータス(ベータ、サインアップ受付中、一般提供)、料金、サポートプラットフォーム、主要URLは一つのソースファイルに保存し、ページ、llms.txt、構造化データはそこから読み込みます。手作業でコピーされた事実は徐々に食い違っていきます。

ワークフロー

1. ファクトシートを作成する

content/facts.ts(またはJSON/YAML)に次の項目を作成します。名前と別名、一文の定義、対象者、ステータス、プランと価格、プラットフォームまたは統合、主要ページURL、公式プロフィール(GitHub、X、LinkedIn、Product Hunt)。各項目を実際の製品と照らし合わせてから記述します。

2. /llms.txt を公開する

llmstxt.orgに従ってください。H1で名前、blockquoteで要約、いくつかのプレーンな事実、次にH2セクションとしてリンクを- [タイトル](url): 内容の説明の形式で記述します。Optionalというセクションは、アシスタントがスキップしてもよいリンクを示します。

# Acme AI

> Acme AIは、小規模な財務チーム向けにStripeの支払いと銀行入金を照合する請求書照合ツールです。ブラウザで動作し、StripeとPlaidに接続します。

- 対象者: 1〜50人の企業で手動で支払いを照合している財務リーダー。
- ステータス: サインアップ受付中(2026年11月以降)。
- 料金(https://acme.example/pricing): Free, 0ドル、月50件の請求書まで; Pro, 29ドル/月、無制限の請求書; Team, 79ドル/月、最大10シート。価格はUSD。
- 混同しないでください: Acme Anvil(無関係なハードウェア企業)。

## 主要ページ
- [料金](https://acme.example/pricing): プラン、制限、含まれるもの。
- [Acme AI vs Rival](https://acme.example/vs/rival): 機能と価格の比較、2026年11月6日確認。

## FAQ
- Acme AIは無料ですか? はい、月50件の請求書まで無料です。ProとTeamは有料です。

## Optional
- [ブログ](https://acme.example/blog): 製品アップデートとガイド。

ファクトシートとページメタデータから生成します(ルートハンドラーまたはビルドスクリプト)。新しいページを手作業で編集せずに表示できるようにします。ステータスコード200、text/plainまたはtext/markdown; charset=utf-8で提供し、ログイン、リダイレクト、JavaScriptは不要です。確認:

curl -sI https://acme.example/llms.txt | head -5        # 200かつテキストコンテンツタイプ
curl -s  https://acme.example/llms.txt | head -30

3. オプションで /llms-full.txt を追加する

最も引用させたいページ(製品、料金、比較、ドキュメント)の全文Markdownを、それぞれ独自の# タイトルとSource: <url>行の下に配置します。ビルド時に生成します。ブログのアーカイブや古いものは含めないでください。

4. リンクを設置する

フッターにプレーンなllms.txtリンクを配置し、オプションで<link rel="alternate" type="text/markdown" href="/llms.txt">を<head>に追加します。リンクがないファイルは、パスを推測するクローラーのみが見つけます。

5. AIクローラーを許可する(robots.txtとCDN)

ユーザーエージェント所有者用途
OAI-SearchBotOpenAIChatGPT検索インデックス
ChatGPT-UserOpenAIユーザーが質問したページの取得
GPTBotOpenAIモデルトレーニング
Claude-SearchBot / Claude-User / ClaudeBotAnthropic検索インデックス / ユーザー取得 / トレーニング
PerplexityBot / Perplexity-UserPerplexity検索インデックス / ユーザー取得
Google-ExtendedGoogleGeminiトレーニングとグラウンディングのトークン。Google検索やAI Overviewsには影響しません
BingbotMicrosoftBingインデックス。Copilotはこれに基づいて回答します

検索およびユーザー取得エージェントは、あなたが引用されるかどうかを決定します。トレーニングエージェントはビジネス上の選択であり、推薦されたい製品は通常これらも許可します。

User-agent: *
Allow: /
Disallow: /api/
Disallow: /app/

User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: GPTBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: ClaudeBot
User-agent: PerplexityBot
User-agent: Perplexity-User
User-agent: Google-Extended
Allow: /
Disallow: /api/
Disallow: /app/

Sitemap: https://acme.example/sitemap.xml

クローラーは自分を指定したグループのみに従うため、名前付きグループはすべてのDisallowを繰り返さなければ、プライベートパスが公開されます。robots.txtはCDNを上書きできません。一部のCDNは「AIボットをブロック」スイッチを提供し、robots.txtに関係なく403を返します。スポットチェックし、CDNのボットレポートまたはサーバーログで実際のクローラーヒットを確認します(CDNはボットIPを検証するため、偽装されたUser-Agentを異なる扱いにする場合があります):

curl -s -o /dev/null -w '%{http_code}\n' -A 'Mozilla/5.0 (compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot)' https://acme.example/pricing

6. 各主要ページの先頭に一文の定義を配置する

H1のすぐ下、サーバーサイドレンダリングされたHTMLに、「<名前> は、<誰> のために <何をする> <カテゴリ> です。」と記述します。2文目で差別化要因を示します。同じ文をホームページ、llms.txt、Organization.description、ディレクトリ一覧、SNSバイオでも再利用します。キャッチフレーズ(「金融、再定義」)はアシスタントに引用するものを与えません。多くのAIフェッチャーはJavaScriptを実行しないため、生のHTMLを確認します:

curl -s https://acme.example/ | grep -c "is an invoice-matching tool"     # 1以上を期待

7. 比較表とFAQ

  • 表: 実際のHTML <table>で、製品ごとに1行、購入者が尋ねる列(価格、プラットフォーム、オープンソース、主な制限)を用意します。日付を記入します(「2026年11月6日確認」)。各事実はベンダー自身のサイト、ドキュメント、料金ページ、またはGitHub APIから取得します。ベンダーが公開していないものには「未公開」と書き、決して推測しないでください。
  • FAQ: 質問を見出しとして、検索者の言葉で記述します。2〜4文の回答で、単独で成立し、最初の文が質問に答えるものとします。アシスタントが間違えやすい質問(価格、「無料か」、「Xで動作するか」、「<同名の製品>と同じか」)をカバーします。FAQPageマークアップはオプションです。引用されるのは表示されているQ&Aです。

8. 価格を公開する

/pricingページに、プラン名、価格、通貨、請求期間、制限をテキストで表示します(画像や計算機のみではありません)。llms.txtとSoftwareApplication.offersにも反映します。回答やディレクトリ一覧には価格または価格モデル(無料、フリーミアム、有料)が必要です。これがないと推測されたり、スキップされたりします。有料プランがまだ稼働していない場合は、そのように明記します(「Pro: 近日公開; それまではすべて無料」)。

{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Acme AI",
  "applicationCategory": "BusinessApplication", "operatingSystem": "Web",
  "offers": [ { "@type": "Offer", "name": "Free", "price": "0", "priceCurrency": "USD" },
              { "@type": "Offer", "name": "Pro", "price": "29", "priceCurrency": "USD" } ] }

9. 名前が衝突する場合のOrganizationとWebSiteデータ

ブランド名だけで検索したときに別の製品が最初に表示される場合は、識別しやすい形式(「Acme AI」)を選び、それをあらゆる場所で使用し、バリアントを一つのエンティティに結び付ける構造化データを用意します:

{ "@context": "https://schema.org", "@type": "Organization",
  "name": "Acme AI", "alternateName": ["Acme", "acme.example"],
  "url": "https://acme.example/", "logo": "https://acme.example/logo.png",
  "description": "Acme AIは、小規模な財務チーム向けにStripeの支払いと銀行入金を照合する請求書照合ツールです。",
  "sameAs": ["https://github.com/acme-ai", "https://x.com/acmeai", "https://www.linkedin.com/company/acme-ai"] }

同じnameとalternateNameを持つWebSiteオブジェクトを追加します。Googleは検索結果のサイト名にこれを使用します。sameAsには、あなたが管理していてサイトにリンクを戻しているプロフィールのみをリストします。

10. ブランドサフィックスを統一する

タイトルでは1つのサフィックスを一貫して使用します。| Acme AI、og:site_nameでも同じ文字列、llms.txtのH1、SNSバイオ、GitHub組織でも同様です。タイトルは60文字以内(中国語、日本語、韓国語の場合は約30文字)に収め、キーワードを先頭に置き、サフィックスは収まる場合のみ追加します。

11. アシスタントが実際に何を言うか確認する

毎月、および大きな変更の後、ChatGPT(検索オン)、Perplexity、Claude、Gemini、Copilotで手動で5〜10のプロンプトを試します。「Acme AIとは?」「Acme AIの料金」「<カテゴリ>に最適な<対象者>」「<競合>の代替」「Acme AI vs <競合>」。通常のインターフェースで一度に1つのプロンプト。チャットUIをスクリプト化しないでください。日付、アシスタント、プロンプト、言及されたかどうか、引用されたURL、誤った事実をdocs/seo/ai-answers.mdに記録します。誤った事実の背後にあるソースページを修正し、再確認します。トラフィックについては、リファラー(chatgpt.com、perplexity.ai、claude.ai、gemini.google.com、copilot.microsoft.com)でセグメント化します。

チェックリスト

  • ファクトシートが存在し、ページ、llms.txt、JSON-LDがそこから読み込まれている
  • /llms.txtが200でテキストとして返され、生成されており、フッターからリンクされている
  • robots.txtがAIエージェントを許可し、Disallowを繰り返している。CDNがそれらをブロックしていない
  • 各主要ページが生のHTML内で一文の定義で始まっている
  • 比較表に日付と出典が明記され、不明な点は「未公開」と記載されている
  • FAQの回答が単独で成立し、価格、「無料か」、名前の混同をカバーしている
  • /pricingが公開されており、llms.txtとoffersが一致している
  • OrganizationとWebSiteがname、alternateName、description、sameAsを保持している
  • 1つのブランドサフィックスがすべての場所で使用され、タイトルは60文字以内
  • アシスタントの回答が記録され、誤った事実がページまで追跡されて修正されている

遭遇した落とし穴

  • 公開価格がない。 /pricingが404を返し、llms.txtとSoftwareApplicationにオファーがなく、自身の比較表でも「未公開」と書かざるを得ませんでした。3つのプランをテキストで記載した/pricingページを作成し、llms.txtとoffersに反映することで修正しました。有料ティアは「近日公開」とマークされています。
  • ステータスのずれ。 サインアップ受付開始後、9言語の約300ファイル(llms.txtを含む)がまだ「早期アクセス」と表示していました。現在はステータスを1つの定数から取得しています。
  • リンクがないファイル。 監査の結果、llms.txtへのリンク、llms-full.txt、サイトマップのlastmodが存在しないページが見つかりました。
  • robots.txtグループの上書き。 AIクローラーに独自のグループを与え、Disallowを繰り返さなかった場合、APIやログインパスが公開されていたでしょう。
  • ブランドの衝突。 ブランド名だけで検索すると、同名のクルースケジューリングアプリが最初に表示されました。「<名前> AI」をタイトル、alternateName、sameAsで使用するよう変更しました。
  • 切り詰められ、一貫性のないタイトル。 49の英語タイトルが57〜88文字で、サフィックスが混在していました。60文字以下にカットし、キーワードを先頭に、サフィックスは収まる場合のみとしました。
  • 競合ページの信頼性の低い取得。 調査サブエージェントが競合の価格ページを取得したところ、改ざんされたように見える結果が返ってきました。公開前に実際のブラウザで確認しました。別のベンダーの価格ページはフェッチャーに403を返したため、ドキュメントから価格を取得し、出典を明記しました。
  • 「無料」と早まって書いた。 価格が公開されるまでは「未公開」と書き、「無料」とは書きませんでした。アシスタントはページに書かれていることを繰り返します。

関連スキル

  • seo-page: 定義、表、FAQが配置されるページテンプレート。
  • competitor-pages: 比較ページと代替ページ。アシスタントが頻繁に引用します。
  • programmatic-pages: llms.txtセクションと構造化データの大規模生成。
  • multilingual-seo: 言語ごとのローカライズされた定義、タイトル、サフィックス長。
  • keyword-research, trend-keywords: 回答すべき質問とテストすべきプロンプト。
  • index-push: ページをクロールさせる。BingのインデックスがCopilotに供給されます。
  • seo-daily-report: AI経由のアクセスをレポートの独自行として表示。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

ummydev/index-push

When the user wants to get new or changed pages crawled and indexed by Google and Bing quickly, instead of waiting weeks for the sitemap to be read. Use after any deploy that adds or updates pages, and when the user says "get this indexed", "request indexing", "submit to Google", "submit URLs to Bing", "IndexNow", "ping search engines", "resubmit the sitemap", "why isn't my page indexed", "Discovered – currently not indexed", "URL is unknown to Google", "Quota Exceeded in Search Console" or "indexing queue". Covers IndexNow, Search Console URL Inspection and sitemaps, Bing Webmaster URL submission, a prioritized queue file, and diagnosing pages that stay out of the index.

ummydev/remotion-video

When the user wants to make a vertical promo video of their own software product in code with Remotion, rebuilding the product's real UI instead of screen-recording it, with a TTS voice-over, captions timed to the voice and camera moves that zoom into details. Use when the user says "Remotion", "make a product video", "faceless demo video", "UI motion video", "programmatic video", "product reel", "animate our UI", "render the video", or wants a TikTok or Reels video about their app that an agent can re-render after every change.

ummydev/short-video-formats

When the user wants to choose or plan the format of a promo short video for TikTok, Instagram Reels, YouTube Shorts or Xiaohongshu, especially for a software product, dev tool or AI agent. Covers the four formats that carry this category (talking head over a demo, phone filming the screen, faceless UI demo, talking-head open into full-screen demo), screen layout rules, hooks and endings like "comment X and I'll send it", and how to make an AI presenter. Use when the user says "what kind of video should we make", "video format", "talking head", "faceless video", "AI presenter", "AI avatar", "UGC style", "hook ideas", "how should the first frame look", "comment to get the link", or "视频形式".

ummydev/video-retro

When the user wants to review how their short videos performed on TikTok, Instagram Reels or other platforms and decide what to make next. Covers reading views, likes, comments, saves and follows without scraping, the stats log, 24-hour and 72-hour checks, comparing topics, formats and hooks, the daily report and recording what to change. Use when the user says "how did the video do", "video stats", "复盘", "retro", "which videos worked", "why did this flop", "weekly video report", "update the stats", or at the start or end of a short-video working day.

関連スキル