Back to Blog
GEOSEOClaude CodeAI SearchJSON-LDllms.txt
March 27, 2026·3 min read·14 views

你的網站對 AI 來說是隱形的 — 用 GEO 讓搜尋引擎找到你

跑了一次 GEO audit,我的網站只拿 31 分。問題不是內容不好,是 AI 搜尋引擎根本看不到它。這篇記錄我怎麼用一套開源 Claude Code skills 做完整 audit,然後在同一天把分數拉到 46。

你花了幾十個小時寫的技術文章,Google 搜得到。但你問 ChatGPT, Claude, Perplexity 同一個問題,它們引用的永遠是別人的內容。

不是你寫得不好。是 AI 搜尋引擎根本不知道你的網站存在。


🔵 GEO 是什麼,為什麼你該在意

GEO (Generative Engine Optimization) 是針對 AI 搜尋引擎的 SEO。傳統 SEO 讓 Google 排名靠前,GEO 讓 AI 系統願意引用你的內容

差別在哪? Google 看 backlinks 和 keyword density。AI 模型看的是:

  • Structured Data (JSON-LD): 你是誰? 這篇文章的作者是誰? 什麼時候發表的?
  • Brand Authority: Reddit, YouTube, Wikipedia 上有人提過你嗎?
  • llms.txt: 你有沒有主動告訴 AI 系統你的網站有什麼?
  • Content Citability: 你的內容是不是「可以被引用」的格式?

根據研究,到 2028 年傳統搜尋流量會下降 50%。AI 搜尋正在吃掉 Google 的份額。如果你的網站對 AI 不可見,你正在失去越來越大比例的潛在讀者。


🟡 31 分的震撼: 我的 Audit 結果

我用 geo-seo-claude 這套 Claude Code skills 對自己的網站跑了一次完整 audit。這套工具會平行啟動 5 個 AI agent,分別分析不同維度:

/geo audit https://0xjoeytw.xyz

3 分鐘後,報告出來了:

CategoryScore狀態
AI Citability24/100Critical
Brand Authority12/100Critical
Content E-E-A-T52/100Fair
Technical62/100Fair
Structured Data0/100Critical
Platform Optimization29/100Poor
Composite31/100Poor

Structured Data 是 0 分。零。我的網站沒有任何 JSON-LD, 沒有 Open Graph tags, 沒有 llms.txt。對 AI 來說,我的網站就是一堆 HTML,它不知道作者是誰,文章什麼時候發表的,甚至不確定這是一個個人網站還是垃圾站。

但最反直覺的是: Content Citability 其實不低。我的文章裡有原創的合規率數據, 有 token 成本分析表, 有三層 enforcement 框架。這些內容的 citability 分數到 74/100。

問題不是內容不好。是好內容被裝在一個 AI 看不懂的容器裡。


🟢 同一天修完: 6 個 Quick Wins

報告裡最有價值的部分是 Priority Actions。前 6 項全是 code-level changes,不需要改任何文章內容:

1. JSON-LD Schema — 告訴 AI「我是誰」

在 Next.js root layout 加入 Person + WebSite schema:

const jsonLdPerson = {
  '@context': 'https://schema.org',
  '@type': 'Person',
  '@id': 'https://0xjoeytw.xyz/#person',
  name: 'Joey Chen',
  sameAs: [
    'https://github.com/molu0219',
    'https://twitter.com/0xjoeytw',
  ],
  knowsAbout: ['Blockchain', 'Claude Code', 'AI Development'],
}

關鍵是 @idsameAs@id 讓所有文章的 author 都指向同一個實體。sameAs 把你的 GitHub, Twitter 串起來,幫助 AI 做 entity resolution — 把不同平台上的「Joey Chen」識別為同一個人。

每篇 blog post 再加 BlogPosting schema,引用同一個 @id:

author: { '@type': 'Person', '@id': 'https://0xjoeytw.xyz/#person' }

2. Open Graph + Twitter Card

沒有 OG tags = 分享到任何平台都沒有預覽。AI 系統也用 OG tags 來理解頁面主題。

3. lang="zh-TW" 修正

原本是 lang="en" 但內容是中文。這讓搜尋引擎搞不清楚該把你的內容推給誰。

4. /llms.txt — AI 的 sitemap

llms.txt 是一個新興標準,告訴 AI 系統你的網站結構和重點內容。像 robots.txt 是給爬蟲看的, llms.txt 是給 AI 看的:

# Joey Chen — Developer & Builder
> Personal website focused on Claude Code workflows...

## Blog Posts
- [Claude Code Dev Workflow](https://0xjoeytw.xyz/blog/...): Complete workflow design...

5. AI Crawler 明確規則

robots.txt 加入 GPTBot, ClaudeBot, PerplexityBot 等明確的 Allow 規則。雖然 wildcard 已經允許了,但明確寫出來是一個「我歡迎 AI 索引」的信號。

6. Security Headers

HSTS, X-Frame-Options, X-Content-Type-Options。這些是信任信號,搜尋引擎會參考。


🔵 更深一層: excerpt_en 的分離設計

這是我覺得最巧妙的一招。

我的文章全是繁體中文。但 AI 搜尋引擎主要引用英文,中文內容被引用的機率低 30-40%。翻譯全文成本太高,而且讀者就是要看中文。

解法: meta 層英文,UI 層中文

在 Supabase 的 posts table 加一個 excerpt_en 欄位,然後在 Next.js 的 generateMetadata 裡:

const description = data.excerpt_en || data.excerpt || undefined

這行 code 的效果:

  • <meta name="description"> — 英文
  • og:description — 英文
  • JSON-LD BlogPosting.description — 英文
  • 頁面上顯示的摘要 — 中文

AI crawler 看到英文 meta,讀者看到中文 UI。零衝突。


🟡 為什麼只到 46 分?

做完所有 code-level changes,估計分數從 31 → 46。為什麼沒到 80?

因為 Brand Authority 佔 20% 權重,而且只有 12 分:

  • Reddit: 0 (從沒發過文)
  • YouTube: 0 (沒頻道)
  • dev.to / Medium: 0
  • Wikipedia: 0
  • GitHub: 只有 2 followers

AI 模型判斷一個來源是否可信,很大程度看「其他地方有沒有人提到你」。如果只有你自己的網站在說你是專家,AI 不太會引用你。

技術基礎設施是門票,但 Brand Authority 才是入場券。你需要在 AI 會去看的平台上建立存在感。


收尾: GEO 的三個行動層次

  1. 今天就能做 (code changes): JSON-LD schema, OG tags, llms.txt, lang 修正, security headers → 這些能把你從 "invisible" 變成 "detectable"

  2. 這週可以做 (content + data): 充實 About 頁, 加 privacy policy, 文章加英文 meta → 從 "detectable" 變成 "understandable"

  3. 持續做 (distribution): 在 Reddit, dev.to, YouTube 建立存在感 → 從 "understandable" 變成 "trustworthy"

如果你也想跑一次 GEO audit,geo-seo-claude 是開源的,直接裝到 Claude Code 就能用。第一步永遠是知道自己幾分。

Joey Chen

Joey Chen

Build things that are interesting. All made by AI.

AIWeb3