LEARN · ARTICLE
llms.txt 怎麼寫,讓 AI agent 找得到重點

作者:Rock Lee 實測日期:2026-11-09(Asia/Taipei)
為什麼寫這篇
越來越多人不是自己逛網站,而是叫 AI agent 去讀。網頁是做給人看的,選單、腳本、樣式一大堆,agent 要從裡面挖出「重點在哪、網址是什麼」並不容易。llms.txt 就是為這件事提出的:在網站根目錄放一份 Markdown 小地圖,告訴 agent 這個網站是什麼、重要頁面在哪。
先講清楚邊界:媒體轉述過 Google 的 Gary Illyes(2025 年)說 Google 不支援 llms.txt,John Mueller 也說當時沒有 AI 系統在用。所以 llms.txt 不會幫 SEO 或 AdSense 加分,它只是給 agent 的便利。
我替 rocki.org 加了 llms.txt,也在每篇教學文末放了「複製這段給你的 AI agent」區塊。這篇記錄怎麼寫、怎麼驗收,包括一個我自己沒想到的失敗:Lighthouse 判我的 llms.txt 不合格。

實測環境
| 項目 | 實測值 |
|---|---|
| 受測網站 | rocki.org(Next.js,Vercel) |
| 檢查工具 | Lighthouse 13.6.0(Agentic Browsing 類別) |
| 問答模型 | gemini-3.8-flash-low(透過 Antigravity CLI) |
| 規格依據 | llmstxt.org 提案(Jeremy Howard,2024-09-03 發布,2026-08-10 修訂為 v2) |
步驟
1. 先搞懂格式
依 llmstxt.org 的提案,檔案放在網站根目錄的 /llms.txt,內容依序是:
- 一個
#大標題,寫網站名稱。這是唯一必要的部分。 - 一段
>開頭的引言,用一兩句話說明網站。 - 一般說明段落(不能再放標題)。
- 用
##分段的「檔案清單」,每一項是- [名稱](網址): 說明。 - 可以有一段
## Optional,放次要連結,agent 時間不夠時可略過。
2. 確認你的檔案真的上線
curl -sI https://rocki.org/llms.txt curl -s https://rocki.org/llms.txt | wc -l -c
我們的上線版回 HTTP 200、text/plain,51 行、1,913 bytes。內容有大標題、各頁路由、作者、公開聯絡管道、繁中教學網址,還有給 agent 的三條規矩:不要貼金鑰、登入和付款留給人、照文章寫的環境與驗收標準做。
但最後一行指令透露了問題:裡面 Markdown 連結是 0 個,網址全是直接貼的。


3. 用 Lighthouse 的 Agentic Browsing 檢查
新版 Lighthouse 多了一個「Agentic Browsing」類別(報告上註明仍在開發、之後可能改)。只跑這一類:
npx lighthouse https://rocki.org/ --only-categories=agentic-browsing --output=html --output-path=./agentic
結果 2/3,失敗的正是 llms.txt:「File does not appear to contain any links.」正式站首頁和預覽站的教學列表頁,結果都一樣。

4. 看懂它怎麼判
我直接翻了 Lighthouse 13.6.0 這項檢查的原始碼,規則只有三條:
- 要有一行
# 標題 - 至少一個
[文字](網址)格式的連結 - 內容至少 50 個字元
另外,如果 /llms.txt 回 4xx(例如根本沒放),這項算「不適用」,不扣分;回 5xx 或 429 才算失敗。換句話說,放了但格式不對,比沒放還難看。

5. 改寫成規格格式
改法是照第 1 步的結構重排:
- 加一段
>引言,說明網站與教學區 - 網址全部改成
[名稱](網址): 說明 - 分成「繁中教學/About/English lab/Optional」四段
- 給 agent 的規矩保留在說明段落
改完 1,409 字元,比原本還短。我在本機架了一個測試伺服器,把新檔放在根目錄再跑 Lighthouse:llms.txt 通過,類別 3/3。要提醒的是,那個本機頁面很陽春,這次只能證明 llms.txt 這一項過關。


6. 文章頁加「複製給 AI agent」區塊
llms.txt 是整站的地圖,文章末的指令區塊則是單篇的操作說明。每篇都有一個可一鍵複製的區塊,內容固定五段:目標、前提(禁止讀憑證、禁止破壞性指令)、步驟、驗收、安全(付款與登入留給人)。我用自動化瀏覽器按了複製鈕,按鈕變成「已複製」,剪貼簿拿到 553 個字元,內容完整。

結果
格式過關只是第一層。我更想知道:agent 拿到這份檔案,真的比較會回答嗎? 於是用同一個模型、同樣 4 個問題(教學列表網址、某篇教學網址、操作規矩、作者與聯絡方式),只換餵給它的資料,並要求它資料裡沒有就說沒有:
| 給 agent 的資料 | 字元數 | 4 題答對 |
|---|---|---|
| A:只給 /tw 首頁的純文字 | 1,715 | 1 題(網址兩題答「資料中沒有」,規矩也答不出) |
| B:目前上線的 llms.txt(裸網址版) | 1,870 | 4 題 |
| C:第一次改寫版 | 1,303 | 3 題(聯絡方式只答得出聯絡頁) |
| C2:補回聯絡連結的改寫版 | 1,409 | 4 題,5.2 秒 |

兩個意外:
- 裸網址版對 agent 其實夠用。 B 跟 C2 都全對。改成 Markdown 連結,主要是為了符合規格和 Lighthouse,不是因為模型看不懂。
- 我第一次改寫時刪掉了 X 和 GitHub 的連結,C 就答不出完整聯絡方式。要不是有這組問答測試,我只會看到 Lighthouse 綠燈,不會發現資訊少了。
純文字版答不出網址很合理:網頁轉成純文字時,連結網址就消失了,這正是 llms.txt 存在的理由。
踩坑紀錄
- 以為「有放」就好。 網址直接貼、沒有
[文字](網址),Lighthouse 直接判失敗。 - 改格式時順手刪資訊。 我把聯絡方式縮成一個聯絡頁連結,agent 就答不出 X 和 GitHub。改完一定要重跑問答。
- 本機測試只證明一項。 本機頁面太簡單,Agentic Browsing 3/3 不代表正式站其他項目也會過。
- 把 llms.txt 當 SEO 工具。 Google 方面的公開說法是不用它,別期待排名或廣告審核因此變好。
- 規矩寫在檔案裡,不代表 agent 一定遵守。 這次的測試只證明它「讀得到、答得出」,沒有測它執行時會不會照做。
常見問題
Q1:llms.txt 跟 robots.txt 有什麼不同? robots.txt 告訴爬蟲哪些路徑可以抓;llms.txt 是一份 Markdown 導覽,告訴 agent 網站在講什麼、重要頁面在哪。兩者用途不同,也不會互相取代。
Q2:一定要放嗎? 不放不會被扣分(Lighthouse 對 4xx 判「不適用」)。如果你希望 agent 能快速找到重點頁面,再放;放了就照格式寫。
Q3:要不要中英文都寫? 我們的教學是繁中、Lab 是英文,所以段落標題跟說明混用兩種語言。目前沒有測過哪一種語言對 agent 比較好,這部分未測。
Q4:每次新增文章都要手動改嗎? 目前我們是手動改。比較穩的做法是從網站的文章清單自動產生,但這篇還沒實作,未測。
複製這段給你的 AI agent
目標:檢查一個網站的 /llms.txt 是否符合 llmstxt.org 格式,並草擬改寫版。只讀,不部署、不改線上檔案。 前提與禁止事項: - 只用公開網址讀取;不要登入、不要讀取或輸出任何 token、密碼、Cookie。 - 不要修改網站、不要 git push、不要部署。 - 草稿存在本機一個新檔案,不要覆蓋現有檔案。 步驟: 1. curl -sI <網站>/llms.txt,回報 HTTP 狀態與 content-type。 2. 抓下內容,回報:行數、字元數、有沒有 "# " 標題、有沒有 "> " 引言、Markdown 連結 [文字](網址) 的數量。 3. 若可執行 Lighthouse:npx lighthouse <網站> --only-categories=agentic-browsing --output=json,回報 llms-txt 這項的分數與錯誤訊息。 4. 依格式草擬改寫版:H1 → 引言 → 說明段落 → 用 ## 分段的 "- [名稱](網址): 說明" 清單 → ## Optional。不得刪掉原檔中的任何網址或聯絡方式。 5. 列出原檔與草稿的網址清單對照,確認沒有遺漏。 驗收:附上步驟 1~3 的數字、草稿全文、網址對照表;回報中沒有任何金鑰或個人帳號字串。