# SEO 基礎:搜尋引擎怎麼讀懂一個網頁 URL: https://seo-aeo-geo-notes.pages.dev/articles/seo-basics/ Updated: 2026-09-27 > SEO 是讓搜尋引擎「爬得到、看得懂、願意排前面」。最基本的功課是每頁有獨特的 title 與 description、一個 H1、正確的 canonical,並用內部連結把頁面串起來;其餘的一切都建立在「內容真的有用」之上。 ## 搜尋引擎是怎麼運作的? Google 官方把流程分成三個階段([Google 搜尋運作方式](https://developers.google.com/search/docs/fundamentals/how-search-works)): 1. **爬取(Crawling)**:Googlebot 順著連結與 sitemap 找到網址,下載頁面。 2. **收錄(Indexing)**:分析頁面文字、標籤、圖片,判斷主題,決定要不要存進索引。 3. **提供搜尋結果(Serving)**:使用者搜尋時,從索引中挑出最相關、品質最好的頁面排序。 所以 SEO 的問題也可以照這三層來診斷:**爬不到**(被 robots.txt 擋、沒有連結指向)、**不收錄**(noindex、重複內容、品質太低)、**排不前面**(內容不如競爭對手)。 ## 哪五個頁面元素最重要? | 元素 | 作用 | 常見錯誤 | |---|---|---| | `` | 搜尋結果的藍色標題,最重要的單一 SEO 元素 | 整站都用同一個 title | | `meta description` | 搜尋結果的摘要文字,影響點擊率 | 空白或與內容無關 | | `<h1>` 與小標題 | 告訴搜尋引擎頁面主題與段落結構 | 用 CSS 做大字卻沒用標題標籤 | | `canonical` | 同一內容多個網址時,指定哪個是正本 | 所有頁面都指向首頁 | | 內部連結 | 讓爬蟲發現頁面、傳遞權重 | 重要頁面沒有任何連結指向(孤兒頁) | ### title 要怎麼寫? - 每頁都要**獨一無二**,把最重要的關鍵字放前面。 - 中文約 30 字、英文約 60 字元以內,太長會被截斷。 - 格式建議:`頁面主題|網站名稱`。本站就是這樣寫的。 ### meta description 會影響排名嗎? 不直接影響。但它是搜尋結果裡的「廣告文案」,寫得好會提高點擊率。Google 也可能不用你寫的,而是從內文挑一段更符合搜尋字詞的文字。 ### canonical 是什麼? 同一篇內容可能有好幾個網址:`?utm_source=` 參數版、有沒有結尾斜線、`http` 與 `https`。`<link rel="canonical">` 告訴搜尋引擎「這幾個是同一頁,請以這個網址為準」。每頁都加一個**指向自己**的 canonical 是最保險的做法。要注意 canonical 對 Google 來說是「建議」而非命令。 ## robots.txt 和 noindex 差在哪? 這是最常搞混的一組: - **robots.txt 的 Disallow**:叫爬蟲「不要來抓」。但如果別的網站有連結過來,網址仍可能出現在搜尋結果(只是沒有摘要)。 - **meta robots noindex**:叫搜尋引擎「抓了但不要收錄」。 致命組合是**兩個一起用**:robots.txt 擋住了,爬蟲就看不到頁面上的 noindex,結果反而移除不掉。要從搜尋結果移除頁面,應該**只用 noindex**,讓爬蟲可以進來讀到它。 ## 怎麼檢查自己的網站? 1. 用本站的 [SEO 健康檢查](/tools/seo-check/)一次看完上面所有元素。 2. 在瀏覽器按「檢視原始碼」,確認 title、description、canonical 真的在 HTML 裡。 3. 上線後到 [Google Search Console](https://search.google.com/search-console) 用「網址審查」看 Google 實際看到的版本。 官方的完整入門教材是 [Google 搜尋引擎最佳化(SEO)入門指南](https://developers.google.com/search/docs/fundamentals/seo-starter-guide),建議整份讀一次。 **Q: meta keywords 還有用嗎?** 沒有。Google 早在 2009 年就公開表示不使用 meta keywords 作為排名依據,現在寫了也不會有任何效果。 **Q: 新網站多久會被 Google 收錄?** 沒有固定時間,從幾天到幾週都有可能。把網站提交到 Google Search Console 並送出 sitemap,可以加快被發現的速度,但不保證收錄。 **Q: SEO 做完就會排第一嗎?** 不會。技術面 SEO 只是讓搜尋引擎能正確理解你的網頁,排名主要取決於內容是否比其他頁面更能滿足搜尋者的需求。 --- # 結構化資料 JSON-LD:讓機器確定你在說什麼 URL: https://seo-aeo-geo-notes.pages.dev/articles/structured-data/ Updated: 2026-09-27 > 結構化資料是用 schema.org 詞彙、以 JSON-LD 格式寫在頁面裡的「機器可讀說明書」,明確告訴搜尋引擎與 AI 這頁是文章還是產品、作者是誰、何時更新。它是取得複合式搜尋結果的前提,也讓 AI 更有把握引用你。 ## 結構化資料是什麼? 人看網頁能一眼認出「這是作者名字」「這是價格」,但對機器來說都只是文字。結構化資料就是用一套共通詞彙([schema.org](https://schema.org/))把這些意義**明確標注**出來。 最推薦的寫法是 **JSON-LD**:一段放在 `<script type="application/ld+json">` 裡的 JSON,不影響畫面。 ```json { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "結構化資料 JSON-LD:讓機器確定你在說什麼", "datePublished": "2026-09-27T00:00:00.000Z", "dateModified": "2026-09-27T00:00:00.000Z", "author": { "@type": "Person", "name": "LanDi" } } ``` ## 為什麼 SEO 和 GEO 都需要它? - **SEO**:是取得複合式搜尋結果(星等評分、麵包屑、產品價格、活動日期)的前提。詳見 [Google 結構化資料簡介](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data)。 - **AEO/GEO**:答案引擎要從網頁「抽出事實」。作者、日期、組織、產品規格用結構化資料寫清楚,比從自然語言中推測更可靠。 ## 該用哪些類型? | 網站類型 | 建議的 schema 類型 | |---|---| | 所有網站首頁 | `WebSite`、`Organization` 或 `Person` | | 部落格、新聞 | `Article`/`BlogPosting`/`NewsArticle` | | 電商 | `Product`(含 `Offer`、`AggregateRating`) | | 在地商家 | `LocalBusiness` | | 有層級的頁面 | `BreadcrumbList` | | 問答內容 | `FAQPage`、`QAPage` | ### FAQ 和 HowTo 還值得做嗎? 要知道一個重要變化:Google 在 [2023 年 8 月宣布](https://developers.google.com/search/blog/2023/08/howto-faq-changes),FAQ 複合式結果只會顯示給知名的政府與醫療網站,HowTo 複合式結果則已停止顯示。所以一般網站加 `FAQPage` **不會**再得到展開式的問答結果。 本站仍然保留 FAQPage,原因是:頁面上的 FAQ 區塊本身就是 AEO 的好內容格式,標記它不會有壞處,而其他搜尋引擎與 AI 系統仍可能讀取它。 ## 怎麼寫、怎麼驗證? 1. **找對類型**:到 [Google 搜尋藝廊](https://developers.google.com/search/docs/appearance/structured-data/search-gallery) 查 Google 支援哪些類型與必要欄位。 2. **寫 JSON-LD**:放在 `<head>` 或 `<body>` 都可以。 3. **驗證語法**:用 [Schema Markup Validator](https://validator.schema.org/) 檢查是否符合 schema.org。 4. **驗證 Google 資格**:用 [複合式搜尋結果測試](https://search.google.com/test/rich-results) 看能否產生複合式結果。 5. **上線後監控**:Search Console 的「強化功能」報表會列出錯誤。 ### 最常見的三個錯誤 - **JSON 語法錯誤**:多一個逗號,整段就被忽略。本站的健康檢查會抓出這個問題。 - **標記看不到的內容**:例如標了評分但頁面上沒有顯示評分。 - **日期格式錯誤**:請使用 ISO 8601,例如 `2026-09-27T00:00:00Z`。 **Q: 加了結構化資料就一定會出現複合式搜尋結果嗎?** 不一定。結構化資料只是讓頁面「有資格」,Google 會自行決定是否顯示。 **Q: JSON-LD、Microdata、RDFa 該用哪個?** Google 三種都支援,但官方建議使用 JSON-LD,因為它與 HTML 內容分開、最容易維護。 **Q: 結構化資料可以寫頁面上沒有的內容嗎?** 不行。結構化資料必須反映使用者在頁面上看得到的內容,標記看不到的內容違反 Google 的指南,可能導致人工處置。 --- # AEO 答案引擎優化:讓你的內容直接成為答案 URL: https://seo-aeo-geo-notes.pages.dev/articles/aeo/ Updated: 2026-09-27 > AEO 是讓內容能被搜尋引擎或 AI 直接擷取為答案的優化方法。核心寫法是用使用者真正會問的問題當小標題,緊接一段 40 到 60 字的直接答案,再用清單或表格展開細節。 ## AEO 是什麼? **AEO(Answer Engine Optimization,答案引擎優化)**是讓你的內容被「答案引擎」直接拿去回答使用者的優化方法。答案引擎包括: - Google 的**精選摘要**(Featured Snippet)與「其他人也問了」 - 語音助理(Siri、Google 助理、Alexa) - AI 摘要,例如 Google 的 AI Overviews 傳統 SEO 的目標是「被點擊」;AEO 的目標是「被引用」。 ## AEO 和 SEO、GEO 有什麼不同? | | SEO | AEO | GEO | |---|---|---|---| | 目標 | 在搜尋結果排前面 | 成為直接答案 | 被生成式 AI 引用 | | 成果長相 | 藍色連結 | 精選摘要、語音回答 | ChatGPT/Perplexity 回答中的引用來源 | | 關鍵手段 | 技術面+關鍵字+連結 | 內容結構 | 可信度+可被 AI 讀取 | 三者的界線其實很模糊,業界用詞也不一致。實務上可以把它們看成同一件事的三層:**先被收錄(SEO)→ 內容好擷取(AEO)→ 值得被 AI 信任引用(GEO)**。 ## 怎麼寫出容易被擷取的內容? ### 1. 用使用者真正會問的問題當小標題 到 Google 搜尋你的主題,看「其他人也問了」區塊,或用 Search Console 查使用者實際搜尋的字詞。把這些問題直接變成 `<h2>`、`<h3>`。 ### 2. 先答後論(倒金字塔) 問題標題下的**第一段就直接回答**,40 到 60 字,不要鋪陳背景。之後再補充原因、例外、細節。這也是新聞寫作的「倒金字塔」結構。 > 不好:「在討論 canonical 之前,我們先來回顧網址的歷史……」 > > 好:「canonical 是告訴搜尋引擎『哪個網址是正本』的標籤,用於同一內容有多個網址時。」 ### 3. 步驟用清單、比較用表格 搜尋引擎很常直接擷取有序清單(步驟)與表格(比較)作為精選摘要。內容本質是步驟或比較時,就不要寫成長段落。 ### 4. 加上 FAQ 區塊 在文章結尾整理 3 到 5 個相關問題與簡短回答。注意 Google 已不再對一般網站顯示 FAQ 複合式結果(見〈[結構化資料](/articles/structured-data/)〉),但 FAQ 格式對 AI 擷取仍然友善。 ## 怎麼知道有沒有被選為答案? - 直接搜尋你的目標問題,看精選摘要是誰。 - Search Console 的成效報表中,曝光高但點擊率異常低的查詢,常常是答案已經顯示在結果頁上了。 - 用本站的 [健康檢查工具](/tools/seo-check/) 檢查 AEO 分類:問句式標題、開頭段落長度、清單與表格。 **Q: AEO 和 SEO 是對立的嗎?** 不是。AEO 建立在 SEO 之上:頁面要先能被收錄,才有機會被選為答案。AEO 多出來的是「內容的組織方式」。 **Q: 被選為精選摘要會不會讓點擊變少?** 有可能。當答案已經顯示在搜尋結果上,部分使用者不會再點進來。但被選為答案能建立品牌認知,而且需要深入了解的使用者仍會點擊。 **Q: 答案段落應該寫多長?** 常見的建議是 40 到 60 字(英文約 40 到 60 個單字),足以完整回答問題,又短到可以被整段引用。 --- # GEO 生成式引擎優化:讓 ChatGPT、Perplexity 引用你 URL: https://seo-aeo-geo-notes.pages.dev/articles/geo/ Updated: 2026-09-27 > GEO 是讓生成式 AI(ChatGPT、Perplexity、Gemini、Claude)在回答時引用你的優化方法。前提是 AI 爬蟲讀得到你的內容(robots.txt 不擋、內容不靠 JavaScript 產生),再來是內容值得被引用:具體數據、權威來源、清楚的作者與更新日期。 ## GEO 是什麼? **GEO(Generative Engine Optimization,生成式引擎優化)**一詞來自 2023 年普林斯頓大學等研究者的論文〈[GEO: Generative Engine Optimization](https://arxiv.org/abs/2311.09735)〉。研究發現,在內容中**加入引用來源、引述與統計數據**,能明顯提高被生成式引擎引用的機會,作者報告的提升幅度最高約 40%。 簡單說:SEO 爭取的是排名,GEO 爭取的是 AI 回答裡的那個**引用連結**。 ## AI 是怎麼找到並引用內容的? 多數 AI 助理回答需要即時資訊的問題時,流程大致是: 1. 把使用者的問題改寫成搜尋查詢。 2. 透過搜尋索引(自家的或 Bing、Google 等)找出候選網頁。 3. 抓取網頁內容,挑出能回答問題的段落。 4. 生成回答,並附上來源連結。 這代表兩件事:**傳統 SEO 仍然是基礎**(第 2 步),而**內容要能被 AI 爬蟲讀到並拆成可引用的段落**(第 3 步)。 ## AI 爬蟲有哪些?該擋還是該放? 各家通常把「訓練用」和「搜尋用」的爬蟲分開: | 爬蟲 | 公司 | 用途 | |---|---|---| | `OAI-SearchBot` | OpenAI | ChatGPT 搜尋 | | `ChatGPT-User` | OpenAI | 使用者在對話中要求讀取網頁 | | `GPTBot` | OpenAI | 模型訓練 | | `Claude-SearchBot` | Anthropic | Claude 搜尋 | | `Claude-User` | Anthropic | 使用者要求讀取網頁 | | `ClaudeBot` | Anthropic | 模型訓練 | | `PerplexityBot` | Perplexity | Perplexity 搜尋索引 | | `Google-Extended` | Google | 控制內容是否用於 Gemini 訓練(不影響 Google 搜尋) | 資料來源:[OpenAI 爬蟲說明](https://platform.openai.com/docs/bots)、[Google 爬蟲清單](https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers)。 策略建議: - **想被 AI 引用**:一定要允許**搜尋用**的爬蟲。 - **不想內容被拿去訓練**:可以只擋**訓練用**的爬蟲,這不影響被搜尋引用。 - **注意 CDN 設定**:Cloudflare 等服務有「封鎖 AI 機器人」的開關,會在防火牆層直接擋掉,robots.txt 完全看不出來。網站若用了 CDN,請記得檢查這個設定。 ## 為什麼伺服器端渲染對 GEO 很重要? Googlebot 會執行 JavaScript,但**多數 AI 爬蟲不會**。如果你的網站是純前端渲染(例如只有一個空的 `<div id="root">`,內容靠 JavaScript 產生),AI 爬蟲看到的就是一片空白。 檢查方法很簡單:在瀏覽器按「檢視原始碼」(不是開發者工具的 Elements),看文章內容在不在 HTML 裡。本站的[健康檢查工具](/tools/seo-check/)也會計算原始 HTML 中的可見字數。 ## 怎麼寫出 AI 願意引用的內容? 1. **給具體數據**:「LCP 應低於 2.5 秒」比「網站要快」更容易被引用。 2. **引用權威來源**並附連結,讓 AI 能交叉驗證。 3. **清楚的作者與日期**:標示作者、背景與最後更新日期,並用結構化資料標記。 4. **一段一個重點**:AI 是以段落為單位擷取,每段都應能獨立被理解。 5. **提供獨家資訊**:第一手經驗、實測數據、原創研究,是 AI 無法從別處取得的東西。 ## llms.txt 值得做嗎? [llms.txt](https://llmstxt.org/) 是 2024 年提出的格式:在網站根目錄放一份 Markdown,列出網站最重要的內容,方便大型語言模型閱讀。 誠實的現況是:它是**社群提案**,主要 AI 搜尋引擎並未公開承諾會讀取它,Google 也表示不需要它。本站有做,是因為成本很低(建置時自動產生),但不要期待它帶來流量。 ## 怎麼測量 GEO 成效? - **直接問 AI**:到 ChatGPT、Perplexity、Gemini 問你的目標問題,看引用來源有沒有你。建議固定一組問題定期記錄。 - **看流量來源**:分析工具中來自 `chatgpt.com`、`perplexity.ai` 等網域的轉介流量。 - **看伺服器日誌**:AI 爬蟲有沒有來抓,抓了哪些頁面。 更多量測方法請看〈[上線後怎麼量測成效](/articles/measure/)〉。 **Q: 擋掉 GPTBot 會讓 ChatGPT 無法引用我嗎?** 不一定。OpenAI 把爬蟲分開:GPTBot 用於模型訓練,OAI-SearchBot 用於 ChatGPT 搜尋。只擋 GPTBot 仍可以出現在 ChatGPT 的搜尋結果中。 **Q: 做了 llms.txt 就會被 AI 引用嗎?** 不會。llms.txt 目前是社群提案,主要 AI 搜尋引擎並未公開承諾會使用它。它的成本很低可以做,但不應期待它帶來流量。 **Q: GEO 需要跟 SEO 分開做嗎?** 大部分不需要。Google 表示在 AI Overviews 中出現不需要額外的優化,一般的 SEO 最佳實務就適用;而多數 AI 搜尋也會參考傳統搜尋引擎的結果。 --- # 多語系 SEO 與 hreflang:同一篇文章的中英文版本怎麼共存 URL: https://seo-aeo-geo-notes.pages.dev/articles/hreflang/ Updated: 2026-09-27 > hreflang 是告訴搜尋引擎「這頁有哪些語言版本」的標籤,讓搜尋者看到自己語言的版本。每個版本都必須列出包含自己在內的所有版本(雙向互指),語系代碼要用 ISO 格式(例如 zh-TW、en),並加上 x-default 當作預設。 ## 什麼時候需要 hreflang? 當同一份內容有**多個語言或地區版本**時。例如本站每篇文章都有繁中版與英文版。沒有 hreflang 時,搜尋引擎可能會: - 把英文版顯示給台灣的使用者,或反過來。 - 把兩個版本當成重複內容,只收錄其中一個。 單一語系的網站不需要 hreflang。 ## 網址結構該怎麼選? | 結構 | 例子 | 優點 | 缺點 | |---|---|---|---| | 子目錄 | `example.com/en/` | 共用網域權重、最容易維護 | 地區訊號較弱 | | 子網域 | `en.example.com` | 可以分開部署 | 權重分散 | | 國家網域 | `example.co.uk` | 地區訊號最強 | 成本高、要分別經營 | | 網址參數 | `?lang=en` | — | **Google 不建議** | 多數情況選**子目錄**最划算。本站用的就是子目錄:預設語系繁中不加前綴,英文加 `/en/`。 ## hreflang 怎麼寫? 在每個語言版本的 `<head>` 都放上**完整的一組**: ```html <link rel="alternate" hreflang="zh-TW" href="https://example.com/articles/geo/" /> <link rel="alternate" hreflang="en" href="https://example.com/en/articles/geo/" /> <link rel="alternate" hreflang="x-default" href="https://example.com/articles/geo/" /> ``` 三條規則: 1. **包含自己**:中文版也要列出指向自己的 `zh-TW`。 2. **雙向互指**:中文版指向英文版,英文版也必須指回中文版。只有單向的 hreflang 會被忽略。 3. **使用絕對網址**:要包含 `https://` 與網域。 ### x-default 是什麼? `x-default` 指定「沒有符合使用者語言的版本時,要顯示哪一頁」,通常指向預設語言或語言選擇頁。 ## 除了 HTML 還能在哪裡宣告? Google 支援三種方式,選一種即可([官方說明](https://developers.google.com/search/docs/specialty/international/localized-versions)): - HTML `<head>` 裡的 `<link>` 標籤(最常見) - HTTP 標頭(適合 PDF 等非 HTML 檔案) - XML sitemap 中的 `xhtml:link` 本站同時用了 HTML 標籤與 sitemap,兩者內容一致不會衝突。 ## 最常見的錯誤 - **語系代碼寫錯**:`en-UK` 是錯的,英國要用 `en-GB`;地區碼不能單獨使用,`TW` 不是合法的 hreflang。 - **只有單向**:新增英文版時忘了回頭更新中文版。 - **canonical 指向其他語言**:會讓那個語言版本無法被收錄。 - **語言切換靠 IP 自動轉址**:Googlebot 主要從美國爬取,可能永遠看不到其他語言版本。請讓使用者手動切換,不要強制轉址。 用本站的[健康檢查工具](/tools/seo-check/)檢查任何網址,會驗證 hreflang 是否包含自己與 x-default。 **Q: 用 hreflang 就不需要 canonical 了嗎?** 兩者都需要。每個語言版本都應該有指向自己的 canonical,不要把英文版的 canonical 指向中文版,否則英文版會被當成副本而不被收錄。 **Q: 繁體中文應該用 zh-TW 還是 zh-Hant?** 兩者 Google 都接受。zh-TW 表示「台灣使用的中文」,zh-Hant 表示「繁體字」。主要讀者在台灣時用 zh-TW 最直接。 **Q: 可以只靠自動翻譯產生英文版嗎?** 可以但要謹慎。品質低落的自動翻譯內容可能被視為低品質頁面。至少要人工校對,並確保內容對目標讀者有用。 --- # Core Web Vitals:網站速度怎麼量、怎麼改 URL: https://seo-aeo-geo-notes.pages.dev/articles/core-web-vitals/ Updated: 2026-09-27 > Core Web Vitals 是 Google 衡量使用者體驗的三項指標:LCP(最大內容繪製)應低於 2.5 秒、INP(互動到下一次繪製)應低於 200 毫秒、CLS(累計版面配置位移)應低於 0.1,以 75% 的真實造訪達標為準。它是排名訊號之一,但比重低於內容相關性。 ## Core Web Vitals 是哪三項? | 指標 | 衡量什麼 | 良好 | 需要改善 | 不佳 | |---|---|---|---|---| | **LCP** 最大內容繪製 | 主要內容多快出現 | ≤ 2.5 秒 | ≤ 4 秒 | > 4 秒 | | **INP** 互動到下一次繪製 | 點擊後多快有反應 | ≤ 200 毫秒 | ≤ 500 毫秒 | > 500 毫秒 | | **CLS** 累計版面配置位移 | 畫面會不會亂跳 | ≤ 0.1 | ≤ 0.25 | > 0.25 | 判斷標準是**第 75 百分位數**:75% 的真實造訪達到「良好」,這一項才算及格。門檻出自 [web.dev 的 Web Vitals 說明](https://web.dev/articles/vitals)。 ## 實驗室數據和實際數據有什麼不同? - **實驗室數據**(Lighthouse):在模擬的裝置與網路下測一次。適合開發時除錯,但不代表真實使用者。 - **實際數據**(CrUX,Chrome 使用者體驗報告):來自真實 Chrome 使用者的統計。**Google 排名用的是這個。** 新網站流量太少時沒有實際數據,只能先看實驗室數據。 ## 每一項怎麼改善? ### LCP 太慢 - 縮短伺服器回應時間(TTFB 建議低於 800 毫秒),使用 CDN。 - 主要圖片不要延遲載入(不要對首屏圖片加 `loading="lazy"`),並使用 WebP、AVIF 等新格式。 - 減少阻擋渲染的 CSS 與 JavaScript。 ### INP 太慢 - 減少主執行緒上的長時間 JavaScript 工作。 - 移除用不到的第三方腳本(廣告、追蹤碼、聊天小工具通常是元兇)。 - 把大量運算拆成小段,或延後到使用者互動之後。 ### CLS 太高 - 圖片與影片都要設定 `width` 與 `height`,讓瀏覽器預留空間。 - 廣告與嵌入內容預留固定大小的容器。 - 網頁字型使用 `font-display: optional` 或預先載入,避免換字型時版面跳動。 ## 用什麼工具量測? 1. **[PageSpeed Insights](https://pagespeed.web.dev/)**:同時顯示實際數據(若有)與實驗室數據。 2. **Search Console 的「Core Web Vitals」報表**:整站哪些網址不及格。 3. **Chrome 開發者工具的 Performance 面板**:找出是哪段程式造成延遲。 ## 為什麼靜態網站特別快? 本站選擇 Astro 的原因之一:它預設把頁面建置成純 HTML,**不送出任何 JavaScript**,除非你明確需要。沒有 JavaScript 要下載與執行,LCP 與 INP 自然就好。這對 GEO 也有幫助,因為 AI 爬蟲不需要執行 JavaScript 就能讀到內容(見〈[GEO 生成式引擎優化](/articles/geo/)〉)。 **Q: PageSpeed Insights 分數 100 分才算好嗎?** 不需要。Lighthouse 分數是實驗室模擬值,Google 排名使用的是真實使用者的 Core Web Vitals 數據。三項指標都在「良好」範圍內就足夠了。 **Q: FID 還是 Core Web Vitals 嗎?** 不是。FID 已在 2024 年 3 月被 INP 取代,INP 衡量整個造訪期間所有互動的反應速度,比 FID 更完整。 **Q: 網站速度對排名影響有多大?** Google 表示頁面體驗是排名訊號之一,但內容相關性遠比速度重要。當多個頁面內容品質相近時,體驗較好的可能勝出。 --- # 上線後怎麼量測成效:Search Console、Bing 與 AI 引用追蹤 URL: https://seo-aeo-geo-notes.pages.dev/articles/measure/ Updated: 2026-09-27 > 上線後分三層驗證:頁面本身正確嗎(健康檢查、複合式搜尋結果測試)、搜尋引擎收錄了嗎(Google Search Console 與 Bing Webmaster Tools 的收錄與成效報表)、AI 引用了嗎(定期拿固定問題問 ChatGPT 與 Perplexity,並觀察來自 AI 平台的轉介流量)。 ## 第一層:頁面本身正確嗎? 上線前後都要做,而且最好自動化: 1. **建置時自動檢查**:本站每次建置都會跑檢查腳本,缺 title 或 JSON-LD 格式錯誤就直接失敗,錯誤不會上線。 2. **[健康檢查工具](/tools/seo-check/)**:抽查任何一頁的 30 多項指標。 3. **[複合式搜尋結果測試](https://search.google.com/test/rich-results)**:確認結構化資料符合 Google 的要求。 ## 第二層:搜尋引擎收錄了嗎? ### Google Search Console 1. 到 [Google Search Console](https://search.google.com/search-console) 新增資源。自有網域建議用「網域」資源(DNS 驗證);免費子網域只能用「網址前置字元」(上傳 HTML 驗證檔或加 meta 標籤)。 2. 在「Sitemap」提交 `sitemap-index.xml`。 3. 用「網址審查」查單一網址,必要時「要求建立索引」。 上線幾週後要看的報表: | 報表 | 看什麼 | |---|---| | 網頁(索引) | 多少頁已收錄、未收錄的原因 | | 成效 | 曝光、點擊、點閱率、平均排名、使用者搜尋的字詞 | | Core Web Vitals | 真實使用者體驗是否及格 | | 強化功能 | 結構化資料錯誤 | ### Bing Webmaster Tools [Bing Webmaster Tools](https://www.bing.com/webmasters) 可以直接從 Search Console 匯入網站,不用重新驗證。別忽略 Bing:ChatGPT 等 AI 服務的搜尋功能與 Bing 索引有密切關係。 ### IndexNow:主動通知搜尋引擎 [IndexNow](https://www.indexnow.org/) 讓你在內容更新時主動通知 Bing 等搜尋引擎,而不是等它們來爬。做法是在網站根目錄放一個金鑰檔,然後把更新的網址送到 API。Google 目前不支援。 ## 第三層:AI 引用了嗎? 目前沒有像 Search Console 那樣的官方 AI 引用報表,只能自己建立追蹤方法: 1. **固定題庫**:列出 10 到 20 個你希望被引用的問題,每兩週拿去問 ChatGPT(開啟搜尋)、Perplexity、Gemini,記錄有沒有引用你、引用哪一頁。 2. **轉介流量**:在分析工具中觀察來自 `chatgpt.com`、`perplexity.ai`、`gemini.google.com`、`copilot.microsoft.com` 的流量。 3. **爬蟲日誌**:CDN 或伺服器日誌中搜尋 `OAI-SearchBot`、`PerplexityBot`、`Claude-SearchBot`,確認它們有來抓。 ## 要等多久才看得到成效? - **收錄**:送出 sitemap 後幾天到幾週。 - **排名穩定**:新網站通常要數個月。 - **AI 引用**:取決於搜尋索引的收錄與內容權威性,沒有固定時間。 SEO 是長期工作。建議每月固定檢查一次上面三層,把數字記下來,比每天盯著排名更有意義。 **Q: Search Console 驗證網站擁有權有哪些方式?** 網域資源要用 DNS TXT 記錄驗證;網址前置字元資源可以用上傳 HTML 檔案、加 meta 標籤、Google Analytics 等方式。使用免費子網域(例如 pages.dev)時,只能用網址前置字元資源。 **Q: 為什麼 Search Console 顯示「已檢索 - 目前尚未建立索引」?** 代表 Google 抓過這頁但決定暫不收錄,常見原因是內容太少、與其他頁重複或品質不足。新網站很常見,通常需要時間與更多外部連結。 **Q: IndexNow 對 Google 有用嗎?** 目前沒有。IndexNow 由 Bing、Yandex 等搜尋引擎支援,Google 尚未採用。Google 請使用 sitemap 與 Search Console。 --- # SEO Basics: How Search Engines Understand a Web Page URL: https://seo-aeo-geo-notes.pages.dev/en/articles/seo-basics/ Updated: 2026-09-27 > SEO means making your pages crawlable, understandable, and worth ranking. The basics are a unique title and description on every page, a single H1, a correct canonical, and internal links that tie your pages together. Everything else rests on content that is genuinely useful. ## How do search engines work? Google officially describes the process in three stages ([How Google Search Works](https://developers.google.com/search/docs/fundamentals/how-search-works)): 1. **Crawling**: Googlebot follows links and sitemaps to discover URLs and downloads the pages. 2. **Indexing**: Google analyzes the page's text, tags, and images, works out what it's about, and decides whether to store it in the index. 3. **Serving search results**: When someone searches, Google picks the most relevant, highest-quality pages from the index and ranks them. That means SEO problems can be diagnosed along the same three layers: **not crawled** (blocked by robots.txt, no links pointing to the page), **not indexed** (noindex, duplicate content, low quality), and **not ranking** (the content is weaker than the competition). ## Which five page elements matter most? | Element | What it does | Common mistake | |---|---|---| | `<title>` | The blue headline in search results; the single most important SEO element | Using the same title across the whole site | | `meta description` | The snippet text in search results; affects click-through rate | Left blank or unrelated to the content | | `<h1>` and subheadings | Tell search engines the page topic and section structure | Big text styled with CSS instead of heading tags | | `canonical` | When the same content lives at several URLs, names the original | Every page pointing to the homepage | | Internal links | Help crawlers discover pages and pass authority | Important pages with no links pointing to them (orphan pages) | ### How should I write a title? - Make every title **unique**, and put the most important keyword first. - Keep it to about 60 characters in English (about 30 characters in CJK languages); longer titles get truncated. - Suggested format: `Page Topic | Site Name`. This site follows that format. ### Does the meta description affect rankings? Not directly. But it acts as the "ad copy" in search results, and a good one improves click-through rate. Google may also ignore yours and pull a passage from the page that better matches the search query. ### What is a canonical? The same content can end up at several URLs: a version with `?utm_source=` parameters, with or without a trailing slash, `http` versus `https`. `<link rel="canonical">` tells search engines, "These are all the same page; treat this URL as the one that counts." Adding a **self-referencing** canonical to every page is the safest approach. Keep in mind that to Google, a canonical is a "hint," not a directive. ## What's the difference between robots.txt and noindex? This is the pair people confuse most often: - **robots.txt Disallow**: tells crawlers "don't fetch this." But if other sites link to the URL, it can still appear in search results (just without a snippet). - **meta robots noindex**: tells search engines "you can fetch this, but don't index it." The fatal combination is **using both together**: if robots.txt blocks the page, crawlers never see the noindex on it, so the page can't be removed. To remove a page from search results, **use noindex only** and let crawlers in so they can read it. ## How do I check my own site? 1. Use this site's [SEO Health Check](/en/tools/seo-check/) to review all of the elements above in one pass. 2. Use your browser's "View Page Source" to confirm the title, description, and canonical are actually in the HTML. 3. After launch, use "URL Inspection" in [Google Search Console](https://search.google.com/search-console) to see the version Google actually sees. The complete official primer is Google's [Search Engine Optimization (SEO) Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide). It's worth reading from start to finish. **Q: Do meta keywords still matter?** No. Google stated publicly back in 2009 that it does not use meta keywords as a ranking factor. Adding them today has no effect at all. **Q: How long does it take Google to index a new site?** There is no fixed timeline; it can take anywhere from a few days to a few weeks. Adding your site to Google Search Console and submitting a sitemap can help Google discover it faster, but it does not guarantee indexing. **Q: Will my site rank first once the SEO is done?** No. Technical SEO only makes sure search engines can understand your pages correctly. Rankings depend mainly on whether your content satisfies searchers better than other pages do. --- # Structured Data with JSON-LD: Tell Machines What You Mean URL: https://seo-aeo-geo-notes.pages.dev/en/articles/structured-data/ Updated: 2026-09-27 > Structured data is a machine-readable description written into the page in JSON-LD format using the schema.org vocabulary. It tells search engines and AI explicitly whether a page is an article or a product, who wrote it, and when it was updated. It is a prerequisite for rich results, and it gives AI more confidence to cite you. ## What is structured data? A person looking at a web page can instantly tell "this is the author's name" or "this is the price," but to a machine it's all just text. Structured data uses a shared vocabulary ([schema.org](https://schema.org/)) to **explicitly label** that meaning. The recommended format is **JSON-LD**: a block of JSON inside `<script type="application/ld+json">` that doesn't affect what's displayed. ```json { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "Structured Data with JSON-LD: Tell Machines What You Mean", "datePublished": "2026-09-27T00:00:00.000Z", "dateModified": "2026-09-27T00:00:00.000Z", "author": { "@type": "Person", "name": "LanDi" } } ``` ## Why do both SEO and GEO need it? - **SEO**: It's a prerequisite for rich results (star ratings, breadcrumbs, product prices, event dates). See Google's [Introduction to structured data](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data). - **AEO/GEO**: Answer engines need to "extract facts" from web pages. Spelling out the author, dates, organization, and product specs in structured data is more reliable than having them inferred from natural language. ## Which types should I use? | Site type | Recommended schema types | |---|---| | Homepage of any site | `WebSite`, `Organization` or `Person` | | Blogs, news | `Article`/`BlogPosting`/`NewsArticle` | | E-commerce | `Product` (with `Offer`, `AggregateRating`) | | Local businesses | `LocalBusiness` | | Pages in a hierarchy | `BreadcrumbList` | | Q&A content | `FAQPage`, `QAPage` | ### Are FAQ and HowTo still worth doing? There's one important change to know about: Google [announced in August 2023](https://developers.google.com/search/blog/2023/08/howto-faq-changes) that FAQ rich results would only be shown for well-known, authoritative government and health websites, and that HowTo rich results would no longer be shown. So for a typical site, adding `FAQPage` **no longer** produces expandable Q&A results. This site still keeps FAQPage because the on-page FAQ section is itself a good content format for AEO, marking it up does no harm, and other search engines and AI systems may still read it. ## How do I write and validate it? 1. **Pick the right type**: Check the [Google Search Gallery](https://developers.google.com/search/docs/appearance/structured-data/search-gallery) to see which types Google supports and their required properties. 2. **Write the JSON-LD**: It can go in either `<head>` or `<body>`. 3. **Validate the syntax**: Use the [Schema Markup Validator](https://validator.schema.org/) to check it against schema.org. 4. **Check Google eligibility**: Use the [Rich Results Test](https://search.google.com/test/rich-results) to see whether it can produce rich results. 5. **Monitor after launch**: The "Enhancements" reports in Search Console list any errors. ### The three most common mistakes - **JSON syntax errors**: One extra comma and the whole block is ignored. This site's health check catches this. - **Marking up content that isn't visible**: For example, marking up a rating that isn't displayed on the page. - **Wrong date format**: Use ISO 8601, for example `2026-09-27T00:00:00Z`. **Q: Does adding structured data guarantee rich results?** No. Structured data only makes a page eligible; Google decides on its own whether to show rich results. **Q: Should I use JSON-LD, Microdata, or RDFa?** Google supports all three, but officially recommends JSON-LD because it is kept separate from the HTML content and is the easiest to maintain. **Q: Can structured data include content that isn't on the page?** No. Structured data must reflect content users can see on the page. Marking up hidden content violates Google's guidelines and can lead to a manual action. --- # Answer Engine Optimization (AEO): Become the Direct Answer URL: https://seo-aeo-geo-notes.pages.dev/en/articles/aeo/ Updated: 2026-09-27 > AEO is the practice of optimizing content so search engines or AI can extract it directly as an answer. The core technique is to use the questions users actually ask as subheadings, follow each one immediately with a 40–60 word direct answer, and then expand on the details with lists or tables. ## What is AEO? **AEO (Answer Engine Optimization)** is the practice of optimizing your content so that "answer engines" use it directly to answer users. Answer engines include: - Google's **featured snippets** and "People Also Ask" - Voice assistants (Siri, Google Assistant, Alexa) - AI summaries, such as Google's AI Overviews The goal of traditional SEO is to "get clicked"; the goal of AEO is to "get quoted." ## How is AEO different from SEO and GEO? | | SEO | AEO | GEO | |---|---|---|---| | Goal | Rank high in search results | Become the direct answer | Get cited by generative AI | | What success looks like | Blue links | Featured snippets, voice answers | A cited source in ChatGPT/Perplexity answers | | Key levers | Technical + keywords + links | Content structure | Credibility + readable by AI | The lines between the three are actually blurry, and the industry doesn't use the terms consistently. In practice, you can think of them as three layers of the same thing: **get indexed (SEO) → make content easy to extract (AEO) → be trustworthy enough for AI to cite (GEO)**. ## How do I write content that's easy to extract? ### 1. Use the questions users actually ask as subheadings Search for your topic on Google and look at the "People Also Ask" box, or use Search Console to see the queries people actually search for. Turn those questions directly into `<h2>` and `<h3>` headings. ### 2. Answer first, explain later (the inverted pyramid) Under each question heading, **answer it directly in the first paragraph**, in 40–60 words, with no background build-up. Then add the reasons, exceptions, and details. This is the "inverted pyramid" structure used in news writing. > Bad: "Before we talk about canonicals, let's review the history of URLs..." > > Good: "A canonical is a tag that tells search engines which URL is the original, used when the same content lives at several URLs." ### 3. Use lists for steps and tables for comparisons Search engines frequently pull ordered lists (steps) and tables (comparisons) directly into featured snippets. When your content is essentially steps or a comparison, don't write it as long paragraphs. ### 4. Add an FAQ section At the end of the article, collect 3 to 5 related questions with short answers. Note that Google no longer shows FAQ rich results for typical sites (see [Structured Data](/en/articles/structured-data/)), but the FAQ format is still friendly to AI extraction. ## How do I know if I've been chosen as the answer? - Search your target question directly and see who holds the featured snippet. - In Search Console's Performance report, queries with high impressions but an unusually low click-through rate often mean the answer is already shown on the results page. - Use this site's [health check tool](/en/tools/seo-check/) to review the AEO category: question-style headings, opening paragraph length, and lists and tables. **Q: Are AEO and SEO at odds with each other?** No. AEO builds on SEO; a page has to be indexed before it has any chance of being chosen as an answer. What AEO adds is how the content is organized. **Q: Will being chosen as a featured snippet reduce clicks?** It can. When the answer is already shown on the results page, some users won't click through. But being the answer builds brand awareness, and users who need to go deeper will still click. **Q: How long should an answer paragraph be?** A common recommendation is 40–60 words, which is enough to fully answer the question yet short enough to be quoted in full. --- # GEO: Getting ChatGPT and Perplexity to Cite Your Content URL: https://seo-aeo-geo-notes.pages.dev/en/articles/geo/ Updated: 2026-09-27 > GEO is the practice of optimizing so that generative AI (ChatGPT, Perplexity, Gemini, Claude) cites you in its answers. The prerequisite is that AI crawlers can read your content (not blocked in robots.txt, not generated by JavaScript). After that, the content has to be worth citing, with concrete data, authoritative sources, and a clear author and update date. ## What is GEO? The term **GEO (Generative Engine Optimization)** comes from a 2023 paper by researchers at Princeton University and elsewhere, "[GEO: Generative Engine Optimization](https://arxiv.org/abs/2311.09735)." The study found that **adding citations, quotations, and statistics** to content noticeably increases the chance of being cited by generative engines, with the authors reporting improvements of up to about 40%. Put simply: SEO competes for rankings; GEO competes for the **citation link** in an AI answer. ## How does AI find and cite content? When most AI assistants answer a question that needs up-to-date information, the process roughly looks like this: 1. Rewrite the user's question as a search query. 2. Find candidate pages through a search index (their own, or Bing, Google, etc.). 3. Fetch the page content and pick out passages that answer the question. 4. Generate the answer and attach source links. This means two things: **traditional SEO is still the foundation** (step 2), and **your content must be readable by AI crawlers and break down into citable passages** (step 3). ## Which AI crawlers exist, and should I block or allow them? Companies usually separate their "training" crawlers from their "search" crawlers: | Crawler | Company | Purpose | |---|---|---| | `OAI-SearchBot` | OpenAI | ChatGPT search | | `ChatGPT-User` | OpenAI | Fetching a page when a user asks for it in a conversation | | `GPTBot` | OpenAI | Model training | | `Claude-SearchBot` | Anthropic | Claude search | | `Claude-User` | Anthropic | Fetching a page when a user asks for it | | `ClaudeBot` | Anthropic | Model training | | `PerplexityBot` | Perplexity | Perplexity search index | | `Google-Extended` | Google | Controls whether content is used for Gemini training (does not affect Google Search) | Sources: [OpenAI crawler documentation](https://platform.openai.com/docs/bots), [Google's list of crawlers](https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers). Recommended strategy: - **If you want AI to cite you**: you must allow the **search** crawlers. - **If you don't want your content used for training**: you can block only the **training** crawlers. This doesn't affect being cited in search. - **Check your CDN settings**: Services like Cloudflare have a "block AI bots" toggle that blocks crawlers at the firewall level, which you'd never see from robots.txt. If your site uses a CDN, be sure to check this setting. ## Why does server-side rendering matter for GEO? Googlebot executes JavaScript, but **most AI crawlers don't**. If your site is purely client-side rendered (for example, just an empty `<div id="root">` with content generated by JavaScript), AI crawlers see a blank page. Checking is easy: use your browser's "View Page Source" (not the Elements panel in DevTools) and see whether the article content is in the HTML. This site's [health check tool](/en/tools/seo-check/) also counts the visible words in the raw HTML. ## How do I write content AI wants to cite? 1. **Give concrete data**: "LCP should be under 2.5 seconds" is more likely to be cited than "your site should be fast." 2. **Cite authoritative sources** with links, so AI can cross-check. 3. **Show a clear author and date**: State the author, their background, and the last-updated date, and mark them up with structured data. 4. **One point per paragraph**: AI extracts content paragraph by paragraph, so each paragraph should make sense on its own. 5. **Offer exclusive information**: First-hand experience, test data, and original research are things AI can't get anywhere else. ## Is llms.txt worth doing? [llms.txt](https://llmstxt.org/) is a format proposed in 2024: a Markdown file placed at the site root that lists the site's most important content so large language models can read it easily. The honest status: it is a **community proposal**, the major AI search engines have not publicly committed to reading it, and Google has said it isn't needed. This site includes one because the cost is very low (it's generated automatically at build time), but don't expect it to bring traffic. ## How do I measure GEO results? - **Ask the AI directly**: Ask ChatGPT, Perplexity, and Gemini your target questions and see whether you appear among the cited sources. Keep a fixed set of questions and record the results regularly. - **Check traffic sources**: Look at referral traffic in your analytics from domains such as `chatgpt.com` and `perplexity.ai`. - **Check server logs**: See whether AI crawlers are visiting and which pages they fetch. For more measurement methods, see [Post-Launch Measurement: Search Console, Bing & AI Citations](/en/articles/measure/). **Q: If I block GPTBot, will ChatGPT be unable to cite me?** Not necessarily. OpenAI splits its crawlers. GPTBot is used for model training, and OAI-SearchBot is used for ChatGPT search. Blocking only GPTBot still lets you appear in ChatGPT's search results. **Q: Will adding llms.txt get me cited by AI?** No. llms.txt is currently a community proposal, and the major AI search engines have not publicly committed to using it. It is cheap enough to add, but you should not expect it to bring traffic. **Q: Does GEO need to be done separately from SEO?** Mostly no. Google says no extra optimization is needed to appear in AI Overviews and that standard SEO best practices apply, and most AI search tools also draw on traditional search engine results. --- # Multilingual SEO & hreflang: One Article, Two Languages URL: https://seo-aeo-geo-notes.pages.dev/en/articles/hreflang/ Updated: 2026-09-27 > hreflang is a tag that tells search engines which language versions a page has, so searchers see the version in their own language. Every version must list all versions including itself (return links in both directions), language codes must use ISO format (for example zh-TW, en), and an x-default should be added as the fallback. ## When do you need hreflang? When the same content exists in **multiple language or regional versions**. For example, every article on this site has a Traditional Chinese version and an English version. Without hreflang, search engines might: - Show the English version to users in Taiwan, or vice versa. - Treat the two versions as duplicate content and index only one of them. A single-language site doesn't need hreflang. ## Which URL structure should you choose? | Structure | Example | Pros | Cons | |---|---|---|---| | Subdirectory | `example.com/en/` | Shares domain authority; easiest to maintain | Weaker regional signal | | Subdomain | `en.example.com` | Can be deployed separately | Authority is split | | Country-code domain | `example.co.uk` | Strongest regional signal | Expensive; each must be run separately | | URL parameter | `?lang=en` | — | **Not recommended by Google** | In most cases a **subdirectory** is the best value. That's what this site uses: the default language, Traditional Chinese, has no prefix, and English gets `/en/`. ## How do you write hreflang? Put the **complete set** in the `<head>` of every language version: ```html <link rel="alternate" hreflang="zh-TW" href="https://example.com/articles/geo/" /> <link rel="alternate" hreflang="en" href="https://example.com/en/articles/geo/" /> <link rel="alternate" hreflang="x-default" href="https://example.com/articles/geo/" /> ``` Three rules: 1. **Include itself**: The Chinese version must also list a `zh-TW` entry pointing to itself. 2. **Link in both directions**: If the Chinese version points to the English version, the English version must point back to the Chinese version. One-way hreflang is ignored. 3. **Use absolute URLs**: Include `https://` and the domain. ### What is x-default? `x-default` specifies which page to show when no version matches the user's language. It usually points to the default language or a language selector page. ## Where else can you declare it besides HTML? Google supports three methods; pick any one ([official documentation](https://developers.google.com/search/docs/specialty/international/localized-versions)): - `<link>` tags in the HTML `<head>` (most common) - HTTP headers (suited to non-HTML files such as PDFs) - `xhtml:link` in an XML sitemap This site uses both HTML tags and the sitemap; since they're consistent, they don't conflict. ## What are the most common mistakes? - **Wrong language codes**: `en-UK` is wrong; the UK is `en-GB`. A region code can't be used on its own, so `TW` is not a valid hreflang value. - **One-way links only**: Adding an English version and forgetting to go back and update the Chinese version. - **Canonical pointing to another language**: This prevents that language version from being indexed. - **Automatic IP-based language redirects**: Googlebot crawls mainly from the US, so it may never see your other language versions. Let users switch languages manually instead of forcing a redirect. Check any URL with this site's [health check tool](/en/tools/seo-check/); it verifies whether the hreflang set includes the page itself and an x-default. **Q: If I use hreflang, do I still need a canonical?** You need both. Each language version should have a self-referencing canonical. Don't point the English version's canonical to the Chinese version, or the English version will be treated as a duplicate and won't be indexed. **Q: Should Traditional Chinese use zh-TW or zh-Hant?** Google accepts both. zh-TW means "Chinese as used in Taiwan," while zh-Hant means "Traditional Chinese script." If your main readers are in Taiwan, zh-TW is the most direct choice. **Q: Can I create the English version with machine translation alone?** You can, but be careful. Poor-quality machine-translated content may be treated as low-quality pages. At a minimum, have a human review it and make sure the content is useful to the target audience. --- # Core Web Vitals: How to Measure and Improve Site Speed URL: https://seo-aeo-geo-notes.pages.dev/en/articles/core-web-vitals/ Updated: 2026-09-27 > Core Web Vitals are Google's three user-experience metrics. LCP (Largest Contentful Paint) should be under 2.5 seconds, INP (Interaction to Next Paint) under 200 milliseconds, and CLS (Cumulative Layout Shift) under 0.1, measured at 75% of real visits. They are one ranking signal, but they carry less weight than content relevance. ## What are the three Core Web Vitals? | Metric | What it measures | Good | Needs improvement | Poor | |---|---|---|---|---| | **LCP** Largest Contentful Paint | How fast the main content appears | ≤ 2.5 s | ≤ 4 s | > 4 s | | **INP** Interaction to Next Paint | How fast the page responds after a click | ≤ 200 ms | ≤ 500 ms | > 500 ms | | **CLS** Cumulative Layout Shift | Whether the layout jumps around | ≤ 0.1 | ≤ 0.25 | > 0.25 | The benchmark is the **75th percentile**: a metric passes only if 75% of real visits reach "Good." The thresholds come from [web.dev's Web Vitals guide](https://web.dev/articles/vitals). ## What's the difference between lab data and field data? - **Lab data** (Lighthouse): a single test on a simulated device and network. Useful for debugging during development, but not representative of real users. - **Field data** (CrUX, the Chrome User Experience Report): statistics from real Chrome users. **This is what Google uses for ranking.** A new site with too little traffic has no field data, so you can only look at lab data at first. ## How do you improve each one? ### LCP is too slow - Reduce server response time (TTFB under 800 milliseconds is recommended) and use a CDN. - Don't lazy-load the main image (don't add `loading="lazy"` to above-the-fold images), and use modern formats such as WebP and AVIF. - Reduce render-blocking CSS and JavaScript. ### INP is too slow - Reduce long JavaScript tasks on the main thread. - Remove third-party scripts you don't need (ads, tracking codes, and chat widgets are usually the culprits). - Break heavy computation into smaller chunks, or defer it until after user interaction. ### CLS is too high - Set `width` and `height` on images and videos so the browser can reserve space. - Reserve fixed-size containers for ads and embeds. - Use `font-display: optional` or preload web fonts to avoid layout shifts when fonts swap. ## Which tools should you use to measure? 1. **[PageSpeed Insights](https://pagespeed.web.dev/)**: shows field data (if available) and lab data side by side. 2. **Search Console's "Core Web Vitals" report**: shows which URLs across the site fail. 3. **The Performance panel in Chrome DevTools**: pinpoints which code is causing delays. ## Why are static sites especially fast? One of the reasons this site chose Astro: by default it builds pages as plain HTML and **ships no JavaScript** unless you explicitly need it. With no JavaScript to download and execute, LCP and INP are good by default. This also helps GEO, because AI crawlers can read the content without executing JavaScript (see [GEO: Getting ChatGPT and Perplexity to Cite Your Content](/en/articles/geo/)). **Q: Does a PageSpeed Insights score need to be 100 to count as good?** No. The Lighthouse score is a simulated lab value, while Google's rankings use Core Web Vitals data from real users. Having all three metrics in the "Good" range is enough. **Q: Is FID still a Core Web Vital?** No. FID was replaced by INP in March 2024. INP measures the responsiveness of all interactions throughout a visit, making it more complete than FID. **Q: How much does site speed affect rankings?** Google says page experience is one ranking signal, but content relevance matters far more than speed. When several pages have similar content quality, the one with the better experience may win. --- # Post-Launch Measurement: Search Console, Bing & AI Citations URL: https://seo-aeo-geo-notes.pages.dev/en/articles/measure/ Updated: 2026-09-27 > After launch, verify in three layers: Is the page itself correct (health check, Rich Results Test)? Have search engines indexed it (the indexing and performance reports in Google Search Console and Bing Webmaster Tools)? Is AI citing it (regularly ask ChatGPT and Perplexity a fixed set of questions, and watch referral traffic from AI platforms)? ## Layer 1: Is the page itself correct? Do this both before and after launch, and ideally automate it: 1. **Automatic checks at build time**: This site runs a check script on every build. A missing title or malformed JSON-LD fails the build, so errors never go live. 2. **[Health check tool](/en/tools/seo-check/)**: Spot-check 30+ indicators on any page. 3. **[Rich Results Test](https://search.google.com/test/rich-results)**: Confirm your structured data meets Google's requirements. ## Layer 2: Have search engines indexed it? ### Google Search Console 1. Add a property in [Google Search Console](https://search.google.com/search-console). For a domain you own, a "Domain" property (DNS verification) is recommended; a free subdomain can only use a "URL prefix" property (upload an HTML verification file or add a meta tag). 2. Submit `sitemap-index.xml` under "Sitemaps." 3. Use "URL Inspection" to check individual URLs, and "Request Indexing" when needed. Reports to review a few weeks after launch: | Report | What to look for | |---|---| | Pages (Indexing) | How many pages are indexed, and why others aren't | | Performance | Impressions, clicks, CTR, average position, the queries users searched | | Core Web Vitals | Whether real-user experience passes | | Enhancements | Structured data errors | ### Bing Webmaster Tools [Bing Webmaster Tools](https://www.bing.com/webmasters) can import your site directly from Search Console with no need to verify again. Don't overlook Bing: the search features of AI services such as ChatGPT are closely tied to the Bing index. ### IndexNow: proactively notify search engines [IndexNow](https://www.indexnow.org/) lets you notify Bing and other search engines as soon as content is updated, instead of waiting for them to crawl. You place a key file at the site root, then submit updated URLs to the API. Google does not currently support it. ## Layer 3: Is AI citing it? There's currently no official AI citation report like Search Console, so you have to build your own tracking: 1. **A fixed question set**: List 10 to 20 questions you want to be cited for. Every two weeks, ask them in ChatGPT (with search on), Perplexity, and Gemini, and record whether you're cited and which page. 2. **Referral traffic**: In your analytics tool, watch traffic from `chatgpt.com`, `perplexity.ai`, `gemini.google.com`, and `copilot.microsoft.com`. 3. **Crawler logs**: Search your CDN or server logs for `OAI-SearchBot`, `PerplexityBot`, and `Claude-SearchBot` to confirm they're fetching your pages. ## How long until you see results? - **Indexing**: a few days to a few weeks after submitting a sitemap. - **Stable rankings**: usually several months for a new site. - **AI citations**: depends on search index coverage and content authority; there's no fixed timeline. SEO is long-term work. Check the three layers above once a month and write the numbers down; that's more meaningful than watching rankings every day. **Q: What are the ways to verify site ownership in Search Console?** A Domain property must be verified with a DNS TXT record. A URL-prefix property can be verified by uploading an HTML file, adding a meta tag, using Google Analytics, and other methods. If you use a free subdomain (such as pages.dev), you can only use a URL-prefix property. **Q: Why does Search Console show "Crawled - currently not indexed"?** It means Google has crawled the page but decided not to index it for now. Common reasons are thin content, duplication with other pages, or insufficient quality. It's very common on new sites and usually takes time and more external links. **Q: Does IndexNow work for Google?** Not currently. IndexNow is supported by search engines such as Bing and Yandex, but Google has not adopted it. For Google, use sitemaps and Search Console. ---