跳到主要內容
/

llms.txt 是什麼?為什麼你的網站現在就需要它

llms.txt 是一個放在網站根目錄的純文字檔,用途是告訴 AI 系統「這個網站是什麼、有哪些重要內容、怎麼理解它」。當 ChatGPT、Claude、Perplexity 或任何 LLM-based 搜尋引擎造訪你的網站時,這個檔案就是它們的第一份閱讀指南。

如果你已經知道 GEO(Generative Engine Optimization)的概念,llms.txt 就是 GEO 實作的起點。

為什麼需要 llms.txt

傳統 SEO 有 robots.txtsitemap.xml,告訴搜尋引擎爬蟲哪些頁面可以抓、網站結構長什麼樣。但這些檔案是為 Google 時代設計的——它們處理的是「能不能抓到」,而不是「能不能讀懂」。

AI 搜尋引擎的運作方式不同。它們不只是索引頁面,而是要理解你的內容,然後在回答使用者問題時引用或轉述。問題是:一個充滿 JavaScript render、動態路由和巢狀元件的現代網站,對 LLM 來說並不好讀。

llms.txt 解決的就是這個問題。它用純文字、結構化的方式,把你網站最重要的資訊直接餵給 AI。

三個核心價值:

  1. 降低 AI 理解成本 — LLM 不需要爬完整個網站才知道你是誰、做什麼
  2. 提高被引用機率 — 結構清晰的內容更容易被 AI 搜尋引擎選為回答來源
  3. 控制敘事 — 你決定 AI 看到什麼,而不是讓它自己猜

llms.txt 的格式

llms.txt 沒有強制的 schema,但社群已經收斂出一個常見的結構。以下是一個實際可用的範本:

# 網站名稱

> 一句話描述這個網站的定位和用途。

## 關於

這個網站的核心主題、目標讀者、提供的價值。

## 主要內容

- [文章標題一](/blog/article-one): 簡短描述
- [文章標題二](/blog/article-two): 簡短描述
- [教學文件](/docs/getting-started): 簡短描述

## 技術資訊

- 框架:Next.js
- 部署:Vercel
- 內容格式:MDX

## 聯絡

- 網站:https://example.com
- GitHub:https://github.com/example

重點不是格式完美,而是內容要對 AI 有用。每一段都應該可以被獨立抽取、直接引用。

llms.txt vs llms-full.txt

除了 llms.txt,有些網站會額外提供 llms-full.txt。兩者的差異:

llms.txtllms-full.txt
用途網站摘要和導航完整內容輸出
長度通常 < 2,000 字可能數萬字
適合快速理解網站定位深度索引所有內容
更新頻率低,手動維護即可高,建議自動生成

如果你的網站內容不多(< 50 頁),llms.txt 就夠了。如果你有大量文件、部落格文章或教學內容,llms-full.txt 可以讓 AI 系統做更深度的索引。

一個常見的做法是 llms.txt 放摘要和連結,llms-full.txt 放所有文章的全文。兩者互補。

在 Next.js 上實作

在 Next.js 專案中加入 llms.txt 有幾種方式,從最簡單到最彈性:

方法一:靜態檔案

最直接的做法,把 llms.txt 放在 public/ 目錄下:

public/
├── llms.txt
├── llms-full.txt
├── robots.txt
└── sitemap.xml

這樣 https://yoursite.com/llms.txt 就能直接存取。適合內容不常變動的網站。

方法二:Route Handler 動態生成

如果你的內容經常更新,用 Next.js Route Handler 動態產生:

// app/llms.txt/route.ts
import { allBlogs } from 'contentlayer/generated'

export async function GET() {
  const posts = allBlogs
    .filter((p) => !p.draft)
    .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime())

  const lines = [
    '# Your Site Name',
    '',
    '> 一句話描述你的網站。',
    '',
    '## 文章',
    '',
    ...posts.map((p) => `- [${p.title}](/blog/${p.slug}): ${p.summary}`),
    '',
  ]

  return new Response(lines.join('\n'), {
    headers: { 'Content-Type': 'text/plain; charset=utf-8' },
  })
}

這樣每次有新文章發布,llms.txt 會自動包含最新內容。

方法三:Build 時生成

next.config.js 的 build 階段用腳本生成,適合用 SSG 的網站。把生成邏輯寫在 scripts/generate-llms-txt.mjs,然後在 build 時執行:

{
  "scripts": {
    "prebuild": "node scripts/generate-llms-txt.mjs",
    "build": "next build"
  }
}

三種方法都可以,選擇取決於你的內容更新頻率和部署流程。

搭配 GEO 的完整策略

llms.txt 本身只是基礎設施。要讓它發揮最大效果,需要搭配整體的 GEO 策略:

第一層:讓 AI 找到你

  • llms.txt — 網站級的 AI 閱讀指南
  • robots.txt — 確認沒有擋掉 AI crawler(GPTBot、ClaudeBot、PerplexityBot)
  • Structured Data / Schema.org — 提供機器可讀的結構化資料

第二層:讓 AI 讀懂你

  • 每篇文章前兩段先回答主題問題(answer-first writing)
  • H2 段落可獨立成立,適合被抽取引用
  • 關鍵主張後面跟數字、來源或案例

第三層:讓 AI 信任你

  • 作者資訊完整(E-E-A-T signals)
  • 外部引用和來源標註
  • 內容定期更新,保持時效性

llms.txt 負責第一層。但如果你的文章本身不適合被 AI 引用,有 llms.txt 也沒用。兩者要一起做。

誰已經在用

目前已經有不少知名網站採用 llms.txt:

  • Anthropic 的文件站提供了完整的 llms.txt
  • Cloudflare 在開發者文件中加入了 llms.txt 支援
  • Mintlify 等文件框架已內建 llms.txt 自動生成
  • Fumadocs(本站 docs 使用的框架)也支援 llms.txt 輸出

這不是未來的東西,是現在正在發生的標準化趨勢。

現在就開始

如果你只做一件事,就是在 public/ 下放一個 llms.txt,寫清楚:

  1. 你的網站是什麼
  2. 提供什麼內容
  3. 最重要的頁面連結和摘要

十分鐘就能完成,但對 AI 搜尋引擎來說,這是你從「看不見」變成「看得見」的關鍵一步。

GEO 的競爭才剛開始。當大多數網站還沒有 llms.txt 的時候,先做的人就先拿到優勢。


想學更多 GEO 和 AI 內容策略?訂閱 Newsletter 取得最新教學,或到 Docs 看完整的實作指南。