前一篇把 GitHub Pages 接上自己的網域。
👉 Part 3:Namecheap 註冊、Cloudflare DNS 與 GitHub Pages 自訂網域
網站能打開之後,我還想知道有沒有人來看、大家從哪裡找到文章。這篇接著設定 Google Analytics 4(GA4)與 Google Search Console,範例網址統一用
https://blog.yungwei.com/,網站名稱是 Was Wei weiß。
一、GA4:觀察流量與使用者行為#

GA4 可以看流量來源、瀏覽頁面與互動事件。先到 Google Analytics 登入,找出自己要管理的網站。
已經有 GA4,就先找既有 property 與 stream#
網站換名字或網域時,先沿用這個網站既有的 property(資源)與 web data stream(網站資料串流),不要只因為名稱不同就另開一份,讓後續資料分散。
- 在資源選單選對原本追蹤這個網站的 GA4 property。
- 到「管理」→「資料收集與修改」→「資料串流」,開啟既有的網站串流。
- 編輯串流詳細資料,網站網址使用
https://blog.yungwei.com/,串流名稱可改成Was Wei weiß。 - 記下同一份串流的評估 ID(Measurement ID),格式是
G-XXXXXXXXXX;Hugo 也繼續使用這組 ID。
資源與串流名稱是辨識用的文字,真正接收事件的是安裝在網站上的 ID。改後台網址不會替網站自動裝好追蹤碼。串流修改位置可對照 Google 官方說明。
第一次使用,才建立新的資源與串流#
如果原本完全沒有 GA4,照首次設定流程建立帳戶、property,再新增 Web 串流。帳戶名稱可以自行取,時區與幣別依自己的報表需求填寫:
| 項目 | 本篇範例/填寫方式 |
|---|---|
| Property 名稱 | Was Wei weiß,或自己認得的網站名稱 |
| 平台 | Web/網站 |
| 網站網址 | https://blog.yungwei.com/;介面若將協定拆開,選 HTTPS,網址欄只填 blog.yungwei.com |
| 串流名稱 | Was Wei weiß |
| 評估 ID | 使用系統提供的 G-...,不要照抄文章的佔位值 |
我當初直接拿網站網域當 property 名稱,也可以;名稱不需要跟網址綁死。原本就有帳戶的話,也不用為了每個網站重建帳戶。
二、把評估 ID 接到 Hugo#
以 Blowfish 為例,不需要自己改主題的 <head> 或再貼一份完整 GA script。在 Weisblog/config/_default/hugo.toml 設定:
[services]
[services.googleAnalytics]
id = "G-XXXXXXXXXX"將佔位值換成自己的評估 ID。若檔案已經有 [services] 或 [services.googleAnalytics],就編輯原本的區段,不要重複宣告。設定名稱可對照 Hugo services 文件與 Blowfish 設定說明。
主題怎麼把設定變成追蹤碼?#
我當時檢查 Blowfish 的 layouts/partials/head.html,看到正式環境才載入分析功能:
{{/* Analytics */}}
{{ if hugo.IsProduction }}
{{ partial "analytics/main.html" . }}
{{ end }}接著 analytics/main.html 會檢查是否有填 GA ID:
{{ if site.Config.Services.GoogleAnalytics.ID }}
{{ partial "analytics/ga.html" . }}
{{ end }}analytics/ga.html 再將設定帶入 Google tag:
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.Config.Services.GoogleAnalytics.ID }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ site.Config.Services.GoogleAnalytics.ID }}');
</script>這些是主題原理的閱讀範例,不用再貼進自己的文章或 layout。主題版本更新時,檔案位置與內容可能調整,應以自己安裝版本為準。
一般的 hugo server 使用 development 環境;上面的正式環境判斷可避免本地預覽載入 GA。若自己指定 production 或另加了追蹤碼,本地測試仍可能送出事件。正式建置使用 production,發布前也要確認沒有把評估 ID 或追蹤功能關掉。
若已設定 Part 2 的 Actions,先預覽並核對這次提交的內容,再推送讓網站重新建置:
git add .
git commit -m "Configure Google Analytics"
git push驗證事件是否送到正確串流#
發布後,打開自己的正式網站,再回到同一個 GA4 property 的即時報表,觀察是否收到與測試時間相符的事件。必要時用 Google Tag Assistant 核對 ID 與頁面網址,並留意是否重複安裝。
看到「已啟用資料收集」或活躍使用者大於 0,不能單獨證明新網域設定正確;那也可能是舊網址或其他頁面送來的資料。應把正確 ID、正式頁面和實際事件一起核對。阻擋追蹤的擴充套件、同意設定或報表延遲,也可能讓測試暫時看不到資料。
三、Search Console:檢查搜尋收錄#

Google Search Console 用來查看搜尋曝光、點擊、索引狀態與網站問題。GA4 看使用者到站後的行為,Search Console 則能幫忙檢查 Google 搜尋這一端的狀況。
SEO 是搜尋引擎最佳化,讓內容與網站結構更容易被搜尋引擎理解;完成驗證並不保證排名或立即收錄。
先檢查既有資源涵蓋哪裡#
Search Console 也先找既有資源,但它的邊界跟 GA4 不同。GA4 可以延用原串流追蹤搬站後的網站,Search Console 的資源則依網域或網址前綴決定範圍:
| 既有資源 | 是否涵蓋 https://blog.yungwei.com/ |
|---|---|
Domain 資源 yungwei.com | 包含它的子網域與不同協定,可繼續使用 |
Domain 資源 blog.yungwei.com | 包含這個子網域,可繼續使用 |
URL-prefix https://blog.yungwei.com/ | 包含這個 HTTPS 前綴,可繼續使用 |
其他網域,或 URL-prefix https://yungwei.com/ | 不涵蓋這個部落格,需要適合新網址的資源 |
所以不用每次都重建資源,但也不能把「舊網域的資源」改個顯示名稱,就當成新網域已驗證。保留舊資源供查歷史資料,切換到涵蓋新網址的資源再操作。資源涵蓋規則見 Google 官方說明。
沒有合適資源時,再新增與驗證#
有 DNS 管理權限、想涵蓋整個網域時,新增 Domain 資源 yungwei.com,不含協定與路徑。若只想看部落格,也可以用 URL-prefix https://blog.yungwei.com/;仍使用 GitHub 預設 project site 的讀者,填 https://<username>.github.io/Weisblog/。
我先前使用自訂網域時採用 DNS 驗證。以 yungwei.com 的 Domain 資源為例,複製 Google 提供的驗證字串,到 Cloudflare 的 yungwei.com zone 新增:
| 欄位 | 填寫內容 |
|---|---|
| Type | TXT |
| Name | @,代表這次驗證的根網域 |
| Content | Google 實際提供的 google-site-verification=... 全文 |
| TTL | Auto |
如果建立的是 blog.yungwei.com 的 Domain 資源,DNS 名稱要依該驗證畫面的指示設在 blog,不要一律填 @。TXT 是驗證記錄,不能拿前一篇路由用的 CNAME 取代,也不要覆蓋既有的其他 TXT。
回到 Search Console 點驗證;若暫時失敗,先核對 TXT 所在的名稱與內容、權威 DNS 是否已是 Cloudflare,再等解析更新。驗證完成後保留記錄,Google 可能再次檢查。
URL-prefix 可以使用 HTML tag、檔案或符合條件的 GA 等驗證方式;有 GA4 並不代表一定自動通過,仍須符合 Google 對帳號權限與追蹤碼的要求。依擁有權驗證文件選適合的方法即可。
四、提交 sitemap,確認實際文章狀態#
Hugo 會產生 sitemap。一般可從網站根目錄的 /sitemap.xml 開始;多語網站可能是 sitemap index,再連到各語言的 sitemap。以本篇網址為例:
https://blog.yungwei.com/sitemap.xml先用瀏覽器打開它,確認不是 404,也確認裡面的網址都使用正式網域。若本地正式編譯,對應輸出是 public/sitemap.xml;baseURL 設錯時,清單裡的網址也可能跟著錯。
到涵蓋新網址的 Search Console 資源,開啟「Sitemap」,填入完整 sitemap 網址並提交。看後續讀取狀態與錯誤,多語的子 sitemap 也要能正常讀取。
Google 說明 sitemap 有助於發現網址,但不保證抓取或建立索引。提交成功表示 Google 能處理這份清單,不能直接當成每篇文章都已收錄。
想檢查特定文章時,使用「網址審查」貼入正式文章網址,查看 Google 已知的索引狀態;需要時可測試線上網址、要求建立索引。剛上線的內容可能要等一段時間,沒有固定完成期限。
你也可以在 Google 試搜:
site:blog.yungwei.com這能快速看看有哪些結果,但不是完整的收錄清單。是否收錄某篇文章,仍回 Search Console 看該網址的檢查結果。
如果正在換網域,除了新資源與 sitemap,也要保留舊資源、檢查舊文到新文的一對一轉址,以及 canonical、內部連結是否都使用新網址;符合條件時再依 Google 搬站指南使用地址變更工具。不要把刪掉舊資源當作搬站步驟。
到這裡,從 Hugo 本地建站、GitHub Pages 部署、自訂網域,到流量與搜尋收錄的基本設定,就都有做法可循了。接下來我會繼續介紹 Blowfish 的介面排版與 Hugo 的進階用法。

