Community程式設計與開發github.com

ummydev/ai-search

當使用者希望網站對AI助手(ChatGPT、Claude、Perplexity、Gemini、Copilot、Google AI Overviews)可讀、準確且可引用,讓它們正確描述產品並引用來源時使用。涵蓋 llms.txt、針對AI爬蟲的 robots.txt、定義句、比較表與FAQ、公開定價、Organization 與 WebSite 結構化資料,以及品牌命名。

ai-search 是什麼?

此技能旨在解決一個常見痛點:AI 助手(如 ChatGPT、Claude、Perplexity 等)在回答「什麼是 X」、「X 的定價」或「Y 的最佳工具」時,通常只抓取少數頁面,並從中提取句子和表格行來引用。如果某個事實沒有以純文字形式出現在頁面上,助手就會猜測,或引用其他來源,導致資訊不準確。此技能提供一套完整的 11 步驟工作流程,幫助開發者建立一個「AI 友善」的產品網站。 核心原則是「一次撰寫,處處呈現」:將產品定義、狀態、定價、支援平台等關鍵事實集中在一個事實表(fact sheet)中,然後從該表自動生成 /llms.txt、/llms-full.txt、JSON-LD 結構化資料,以及各頁面的關鍵內容。步驟包括:建立事實表、發布並連結 /llms.txt、正確設定 robots.txt 以允許 AI 爬蟲(同時保護私有路徑)、在每個關鍵頁面頂部放置一句定義、製作有日期標記的比較表和獨立的 FAQ、公開定價頁面、使用 Organization 與 WebSite 結構化資料解決品牌名稱衝突、保持品牌後綴一致,以及定期手動檢查 AI 助手的實際回答。 此技能支援所有主要 AI 平台(OpenAI、Anthropic、Perplexity、Google、Microsoft),並涵蓋從內容創作到技術配置的完整範圍。它特別適用於產品已在多個 AI 助手中被提及,但常被錯誤描述、引用競爭對手,或因品牌名稱混淆而難以被找到的團隊。技能文檔中還包含了團隊在實踐中遇到的常見陷阱,例如沒有公開定價、狀態更新不一致、未連結 llms.txt、robots.txt 群組覆蓋問題,以及競爭對手頁面抓取不可靠等,並提供了具體的解決方案。

相容平台✓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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

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 標題、一個引言區塊引用、一些純文字事實,然後是 H2 章節的連結,格式為 - [Title](url): what it covers。一個名為 Optional 的章節標記助手可以跳過的連結。

# Acme AI

> Acme AI 是一款發票比對工具,能為小型財務團隊協調 Stripe 付款與銀行存款。它在瀏覽器中運行,並連接 Stripe 和 Plaid。

- 目標對象:中小型公司(1-50 人)的財務主管,目前手動進行付款對帳。
- 狀態:開放註冊(自 2026 年 11 月起)。
- 定價 (https://acme.example/pricing):免費版,$0,每月最多 50 張發票;專業版,每月 $29,無限發票;團隊版,每月 $79,最多 10 個席位。價格以美元計。
- 請勿混淆:Acme Anvil,一家不相關的硬體公司。

## 關鍵頁面
- [定價](https://acme.example/pricing):方案、限制和包含的內容。
- [Acme AI 與 Rival 比較](https://acme.example/vs/rival):功能與價格對比,最後檢查於 2026-11-06。

## 常見問題 (FAQ)
- Acme AI 是免費的嗎?是的,每月最多 50 張發票。專業版和團隊版是付費的。

## 可選
- [部落格](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 文字(產品、定價、比較、文件),每個頁面在自己的 # Title 下,並帶有 Source: <url> 行。在建置時生成。省略部落格存檔和任何過時的內容。

4. 連結到它

在頁尾放置一個純文字 llms.txt 連結,並可選地在 <head> 中添加 <link rel="alternate" type="text/markdown" href="/llms.txt">。一個沒有任何連結指向的檔案,只有猜測路徑的爬蟲才能找到。

5. 允許 AI 爬蟲(robots.txt 和 CDN)

User-agent擁有者用途
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 的機器人報告或伺服器日誌中確認真實的爬蟲點擊(驗證機器人 IP 的 CDN 可能會以不同方式處理偽造的 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 中:「<名稱> 是一個 <類別>,它為 <目標對象> 做 <什麼>。」第二句話給出差異化因素。在首頁、llms.txt、Organization.description、目錄列表和社交媒體個人簡介中重複使用相同的句子。一個口號(例如「Finance, reimagined」)對助手來說沒有引用價值。許多 AI 抓取器不執行 JavaScript,因此請檢查原始 HTML:

curl -s https://acme.example/ | grep -c "is an invoice-matching tool"     # 預期為 1 或更多

7. 比較表和 FAQ

  • 表格: 一個真實的 HTML <table>,每行一個產品,欄位包含買家想知道的內容(價格、平台、是否開源、主要限制)。標註日期(例如「Checked 2026-11-06」)。每個事實來自供應商自己的網站、文件、定價頁面或 GitHub API。當供應商沒有公開某些資訊時,寫「Not published」;永遠不要估算。
  • FAQ: 問題以搜尋者的用語作為標題;答案由 2-4 個句子組成,能獨立存在,第一句回答問題。涵蓋助手經常答錯的問題:價格、「是否免費」、「是否與 X 兼容」、「是否與 <同名產品> 相同」。FAQPage 標記是可選的;可見的 Q&A 才是被引用的內容。

8. 公開定價

創建一個 /pricing 頁面,以文字形式呈現方案名稱、價格、貨幣、計費週期和限制,而不僅僅放在圖片或計算器中。在 llms.txt 和 SoftwareApplication.offers 中鏡像此資訊。答案和目錄列表需要價格或定價模式(免費、免費增值、付費);如果沒有,它們會猜測或跳過你。如果付費方案尚未上線,請說明(例如「Pro: coming soon; everything is free until then」)。

{ "@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 is an invoice-matching tool that reconciles Stripe payouts with bank deposits for small finance teams.",
  "sameAs": ["https://github.com/acme-ai", "https://x.com/acmeai", "https://www.linkedin.com/company/acme-ai"] }

添加一個具有相同 name 和 alternateName 的 WebSite 物件;Google 使用它在搜尋結果中顯示網站名稱。只在 sameAs 中列出你控制的、且連結回網站的檔案。

10. 保持品牌後綴一致

在所有地方使用一個統一的後綴:標題中的 | Acme AI,與 og:site_name、llms.txt 的 H1、社交媒體簡介和 GitHub 組織中的字串相同。保持標題在 60 個字元以內(中文、日文和韓文約 30 個字元),關鍵詞優先;只有在放得下時才添加後綴。

11. 檢查助手實際說了什麼

每月一次,以及在重大變更後,在 ChatGPT(開啟搜尋功能)、Perplexity、Claude、Gemini 和 Copilot 上手動提問 5-10 個提示詞:「什麼是 Acme AI?」、「Acme AI 定價」、「針對 <目標對象> 的最佳 <類別>」、「<競爭對手> 替代方案」、「Acme AI vs <競爭對手>」。在普通介面中一次一個提示詞;不要編寫對話 UI 的腳本。在 docs/seo/ai-answers.md 中記錄日期、助手、提示詞、你是否被提及、被引用的 URL 以及任何錯誤的事實。修復每個錯誤事實背後的來源頁面,然後重新檢查。對於流量,按引用來源分段分析:chatgpt.com、perplexity.ai、claude.ai、gemini.google.com、copilot.microsoft.com。

檢查清單

  • 事實表已存在;頁面、llms.txt 和 JSON-LD 從中讀取
  • /llms.txt 以文字類型返回 200,由自動生成,並在頁尾有連結
  • robots.txt 允許 AI 代理並重複禁止規則;CDN 不封鎖它們
  • 每個關鍵頁面以原始 HTML 中的一句定義開頭
  • 比較表有日期標記和來源;未知項目標記為「Not published」
  • FAQ 答案可獨立存在,並涵蓋價格、「是否免費」和名稱混淆
  • /pricing 是公開的;llms.txt 和 offers 與之匹配
  • Organization 和 WebSite 攜帶名稱、別名、描述和 sameAs
  • 在所有地方使用統一的品牌後綴;標題在 60 個字元以內
  • 記錄助手回答;錯誤的事實追溯到頁面並已修復

我們遇到的陷阱

  • 沒有公開定價。 /pricing 返回 404,llms.txt 和 SoftwareApplication 沒有任何優惠,我們自己的比較表不得不對自己說「Not published」。一個包含三個方案的文字版 /pricing 頁面,鏡像到 llms.txt 和 offers 中,解決了這個問題;付費層級標記為「coming soon」。
  • 狀態偏差。 在開放註冊後,包括 llms.txt 在內,9 種語言的大約 300 個檔案仍然顯示「early access」。狀態現在來自一個常數。
  • 沒有被任何檔案連結的文件。 一次審計發現沒有頁面連結到 llms.txt,沒有 llms-full.txt,並且 sitemap 中沒有 lastmod。
  • robots.txt 群組覆蓋。 為 AI 爬蟲提供自己的群組而不重複禁止規則,將會開放 API 和登入路徑給它們。
  • 品牌衝突。 搜尋我們的裸品牌名稱時,首先出現一個同名的排程應用程式。我們在標題、alternateName 和 sameAs 中切換為「 AI」。
  • 截斷且不一致的標題。 49 個英文標題長度在 57-88 個字元之間,且後綴不一致。我們將它們縮減到 60 個字元或更少,關鍵詞優先,只有當空間足夠時才添加後綴。
  • 競爭對手頁面抓取不可靠。 一個研究子代理對競爭對手定價頁面的抓取返回了看似被篡改的內容;我們在真實瀏覽器中確認後才發布。另一個供應商的定價頁面對抓取器返回了 403,因此我們從他們的文件中獲取價格,並說明了來源。
  • 過早地寫「免費」。 在定價發布之前,我們寫「not published」,而不是「free」。助手會重複頁面上的任何內容。

相關技能

  • 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.

相關技能