網誌

修復自家網站後學到的 SEO 經驗

過去幾天,我們以搜尋引擎的角度閱讀自家網站,找出六項值得修復的問題。每一頁都宣告了兩個 FAQ 區塊,Google 把我們裝飾用的背景光暈當作縮圖,一組範本頁面在搜尋那些它們並未回答的問題,而邊緣伺服器還擋住了預發佈環境上一個新的網站區段。這些問題都不算嚴重,但它們一直在悄悄地拖累我們的能見度。

網站概覽

mythex.ai 是一個單頁應用程式,我們在建構時進行預渲染:一個腳本走遍每個路由,為每個路由寫出靜態 HTML 檔案,並注入頁面的標題、描述和結構化資料(即告訴搜尋引擎頁面是什麼的 JSON-LD 區塊,參見什麼是結構化資料)。以下大部分問題都與預渲染步驟有關,因為那才是爬蟲真正讀取的 HTML。

1. 每一頁都聲稱自己是 FAQ 頁面

現象。 我們的 HTML 範本在結構化資料中帶有一個全站適用的 FAQPage 區塊,其網址指向 /faq。預渲染隨後又為每頁加上該頁自己的 FAQPage。結果全站每一頁都有兩個,而我們的私隱政策竟然告訴 Google 它就是 FAQ 頁面。

為何重要。 Google 預期每頁最多只有一個 FAQPage。多出一個並指向別處的標記,可能會令該頁的標記被打折扣,而不只是被忽略。

修復方法。 全站區塊已移除。每頁的 FAQ 標記現在只來自一個地方,包括 /faq 本身,它會從完整的問題清單建構標記。沒有 FAQ 的頁面現在不再宣告任何 FAQ,這才是誠實的做法。此外,如果任何頁面再次出現多於一個 FAQPage,預渲染會令建構失敗。只存在於某人記憶中的規則容易被打破;由建構程式強制執行的規則則不會。

2. Google 用了錯誤的圖片代表我們

現象。 在搜尋結果中,Mythex 的縮圖是我們首頁英雄區塊背後那個柔和跳動的光暈,一張裝飾性的背景圖,而不是我們的分享卡片。

發生原因。 我們從來沒有告訴 Google 哪張圖片代表某一頁,所以它就挑了它找到的那張。

修復方法。 解決同一問題的兩個方面:

  • 指明哪張圖屬於該頁。 首頁現在有一個 WebPage 節點,其 primaryImageOfPage 指向分享卡片;每個預渲染頁面的結構化資料都帶有自己的圖片(該頁的分享圖,或預設圖片)。
  • 隱藏裝飾圖。 背景圖現在在 robots.txt 中被禁止,並以 noindex, noimageindex 標頭提供,因此不會出現在圖片搜尋或縮圖中。

3. 搜尋引擎只認得我們的標誌

我們的 Organization 標記只有名稱、標誌和一些社交連結,全是品牌資訊,沒有其他內容。搜尋引擎會根據登記式的事實建構公司的知識面板,因此我們加入了商業登記證上的資料:法定名稱、成立日期、創辦人和註冊地址。我們刻意沒有加入電話號碼。

4. 範本頁面回答了錯誤的問題

現象。 Search Console 顯示三個範本頁面有曝光但沒有點擊。其中一頁在「content strategist portfolio」及其變體的搜尋中排名靠前,另一頁針對「best italian restaurant website design」,第三頁則是圍繞「agile board」的一組搜尋——其中一半的搜尋都包含「free」一字。排名由第二十多名到五十多名不等。

原因。 每個頁面回答的都不是搜尋者所問的問題。想看優質意大利餐廳網站設計的人,卻來到了一個向他推銷建構工具的頁面。

修復方法。 這三頁現在各自加入了一個為搜尋而寫、而非為產品而寫的段落,標題和描述也改用人們實際輸入的字詞,並加入了值得其既有標記的 FAQ。

同一次提交還修復了一個較隱蔽的問題。「相關範本」區塊會取某個類別中的前四個範本,結果每個作品集範本都指向同樣的四個作品集,而該類別的其餘範本則完全沒有內部連結。我們把它改為依子類別排序的循環結構:每個範本頁面現在正好有四個入站連結和四個出站連結。預渲染的 HTML 現在也會輸出這些連結——以前它們只在 JavaScript 運行後才存在,而爬蟲可能永遠不會運行 JavaScript。

5. 每次部署新頁面時即時通知 Bing

Google 不理會 IndexNow,這是一個在 URL 變更時通知搜尋引擎的協定。Bing、Yandex 和 Seznam 使用它,而 Bing 的索引正是 ChatGPT 搜尋所讀取的來源。一個 AI 應用程式建構工具若連 AI 助手也找不到,那就是一種特別的失敗。

顯而易見的做法是每次部署都提交整份網站地圖,但這正是令金鑰被限流的做法,而且大多數部署並沒有改變搜尋引擎在意的任何內容。因此,有一個腳本會比較網站目前提供的網站地圖與剛建構好的網站地圖,只提交兩者的差異。

有兩個細節令它得以運作:

  • 部署前先拍下快照。 基準必須在新建構上線之前取得。部署之後,「線上」的網站地圖已經是新的,每次比較都會得到空結果。
  • 暫時只針對新頁面。 我們的網站地圖沒有 lastmod 日期,因此腳本只會通知新頁面,而不會通知內容更新。如果為每個 URL 都加上建構日期,每次部署都會把整個網站標記為已更改——這正是我們一直在避免的垃圾通知。

它只在正式環境部署時運行,而且絕不會令建構失敗:執行到這一步時,網站已經上線,為了搜尋引擎的通知而令部署變紅並不值得。

6. 我們自己的邊緣伺服器回覆「找不到」

當我們推出 /ai 頁面時(詳見為每一種業務而設的著陸頁),預發佈環境對所有這些頁面都顯示「Not found」,而靜態主機其實正常提供它們。

在我們行銷網域前面的服務只會轉發一份允許清單上的路徑,其他一律回傳硬性 404。/ai 是新的,當時還不在清單上。我們加入了 /ai 和 /ai/*,並附上一個斷言它們可以通過的測試。這只是小問題,但正是那種令新網站區段對爬蟲隱形、而無人察覺的錯誤。

我們的心得

  • 閱讀爬蟲所讀取的 HTML。 其中大部分問題在瀏覽器中看不見,但在預渲染的檔案中一目了然。
  • 把 SEO 規則轉化為建構檢查。 「每頁一個 FAQPage」現在是強制執行的,而不是靠記憶。
  • 清楚告訴搜尋引擎你的意思。 如果你沒有說明哪張圖片或哪些事實代表你,它們就會自行猜測。
  • Search Console 會告訴你人們問的是哪個問題。 有曝光但沒有點擊,通常代表頁面回答了另一個問題。
  • 只提交差異。 只通知有改變的部分,有助於遵守速率限制。

如果你要為自己建構的網站做同樣的事,我們的指南AI 建構網站的 SEO和如何設定 Google Search Console涵蓋了基本內容。

Mythex · Pricing · 用 AI 建造任何嘢 · 網站及應用程式範本 · Mythex 比較 · AI 應用程式開發詞彙表 · 免費 AI 應用程式開發工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(台灣)