維護記錄

完成的工作

  • 刪除 layouts/partials/footer.html(1 行 wrapper)
  • 刪除 layouts/partials/custom_footer.html(156 行,PaperMod footer 的本地 fork)
  • 刪除 hugo.toml[params.cloudflareAnalytics] 配置塊
  • Hugo --minify 構建通過,確認 Cloudflare Web Analytics 注入消失(cf-beacon 匹配 0 次),PaperMod 自帶 footer 功能保留(top-link / scroll-to-top JS / 版權 / Powered by)

決策

  • 移除 Cloudflare 站點統計:custom_footer.html 相對於 PaperMod 原版 footer 唯一真正的差異就是 Cloudflare beacon 注入;既然沒用價值,把 footer 部分整體還原回 PaperMod 默認,避免 PaperMod 升級 footer 時本地 fork 不同步的問題(2026-08-01 已記錄此風險)
  • 保留 layouts/_partials/cover.html:該 override 解決了 PaperMod resources.ByType "image" 不識別 SVG 封面導致 404 的問題,不能刪

下次建議

  • 如果以後又想加自定義站點統計,可以直接在 Hugo 配置啟用內置埋點,或 inline 在 layouts/partials/extend_footer.html(PaperMod 已留 hook),不需要再 fork 整個 footer

維護記錄

完成的工作

  • 修正 CLAUDE.md 中 prettier 安裝命令的事實錯誤:實際是 deno install -g -A npm:prettier@3.9.6 落到 ~/.deno/bin/,不需要 setup-node
  • 修正 scripts/format-markdown.ts 頂部 docstring 的過時描述
  • check-dead-links.yml / test-scripts.yml / validate-posts.yml 三個 push-trigger workflow 加上 if: github.actor != 'github-actions[bot]' 守衛,跟 deploy.yml / sync-covers.yml / update-papermod.yml 一致;節省 bot 推送後再次觸發 CI 的時間
  • 刪除 assets/images/covers/covers/ 死目錄(220 個 SVG,5.4MB):該批封面是 2026-07-21 第一次批量生成時落在 assets/images/covers/ 的;後來 gen-covers.tsCOVERS_DIR 改成 static/images/covers/,但舊的沒清;grep 確認沒有任何 .ts / .md / .yml / .toml 引用該路徑

下次建議

  • 第三方 action 仍用浮動 tag(@v4/@v3/@v2);可考慮釘 SHA 防供應鏈投毒
  • format-markdown.ts(27 行)/ optimize-images.ts(182 行) 仍無單測

維護記錄

完成的工作

  • 刪除全部 31 篇文章中的 categories: 字段(都是 inline categories: ["X"] 格式)— 決定只用 tag 做分類
  • hugo.toml[taxonomies] 中刪掉 category = "categories" 行;現在只剩 tag = "tags"series = "series"(series 也無人使用,可後續考慮一併刪除)
  • Hugo --minify 構建通過(221 篇,466 ms)

決策

  • 分類統一用 tag:之前 categories 和 tags 語義重疊(categories 僅 3 種且只覆蓋 31 篇;tag 是文章主要分類手段);統一後所有文章都通過 tag 分組,/tags/ 頁面真正反映全部分類

下次建議

  • series = "series"[taxonomies] 中也是死配置(無人用 series:),可順手刪

維護記錄

完成的工作

  • 把 14 篇文章中的 軟路由 tag 改為 硬件(語義上 軟路由 是軟件配置路由器,硬件 是更廣義的物理設備類目;後續硬件折騰文也歸這裡)

下次建議

  • tag 表仍偏多(8 個),繼續精簡可考慮:把 日誌(97 篇,大雜燴)拆成 雜記 + 併入 開發/思考;刪除 學習(已基本退役,2021 起再沒用過);刪除 雜談(3 篇,可併入 雜記/思考)

維護記錄

完成的工作

  • 把 50 篇文章的 開發 tag 改為 學習(包括 2 篇原本就有 學習 的:Stack by Rust / Tree by Rust,dedup 後剩 1 個 學習)
  • 順手修了 20200406-Rails-ENV-u0k.mdtag: 單數 typo(之前是死配置,Hugo 不會識別),改為 tags: ["學習"]
  • Hugo --minify 通過(370 ms,221 篇)

決策

  • 學習 現在承擔"技術學習/開發"語義(吸收了原 開發),覆蓋 58 篇;原 學習 主要貼在 2020 年早期學習筆記上,語義自然延伸

下次建議

  • 當前 tag:日誌 97 / 學習 58 / 思考 40 / 硬件 14 / 安全 6 / 雜談 3 / 書評 1
  • 仍有 日誌(大雜燴)和 雜談(3 篇,邊緣)可以繼續精簡

維護記錄

完成的工作

  • 給全部 221 篇文章補全 description: 字段(原來只有 9 篇有內容、30 篇是空 "",其餘完全缺失)
  • 日誌類 94 篇:直接寫日期(2020年04月06日 風格),機械處理
  • 非日誌類 117 篇:4 個 subagent 並行讀取正文,生成 80-150 字中文摘要(已驗證 PaperMod 把 description 渲染到 meta[name=description]og:descriptiontwitter:description 三處)
  • 2 篇 draft 但空正文(20200407-Linux-Process-0ca / 20250115-AHK的快捷鍵腳本方案-0ca)用標題生成了佔位描述
  • Hugo --minify 通過(288 ms,221 篇全部有 description)

決策

  • 全部 description 用中文雙引號包裹(description: "..."),保持博客中文環境一致
  • 插入位置統一在 date: 行之後;空 description: "" 直接在原位替換
  • 摘要規則:不重複標題信息、客觀中性、長度可控

下次建議

  • 部分早期文章(2020-2021)的標題比較模糊(如 Log 142020-9-19),AI 生成的 description 可能不太有意義,但仍優於完全缺失
  • 沒有動 hugo.toml[params]description = ""(全站 fallback);如果想統一,可以改為 blog 簡介

維護記錄

完成的工作

  • 啟用 Hugo 多語言:在 hugo.toml[languages] 塊,簡體 zh(默認,URL 不帶前綴)+ 繁體 zh-tw(URL 帶 /zh-tw/);defaultContentLanguageInSubdir = false 讓默認語言留在根路徑
  • pip install opencc-python-reimplemented 裝到 .tools/pip/(sandbox 不讓裝到 HOME),用 OpenCC('s2tw') 把所有內容轉繁中臺灣標準
  • 轉換 222 個 content/posts/*.md*.zh-tw.md;16 個 content/claudelog/*.md*.zh-tw.md;另外 about.md / archives.md / search.md / posts/_index.md 也都加了對應 zh-tw 版本
  • 每個 zh-tw 文件 front matter 加 language: "zh-tw"(Hugo 多語言約定)
  • 複製 PaperMod 的 themes/PaperMod/i18n/zh-tw.yaml 到本地 i18n/zh-tw.yaml(UI 文案:分鐘/字/目錄/上一頁/下一頁/語言 等)
  • zh-tw 菜單用中文繁體顯示名:文章 / 維護日誌 / 原始碼 / 彙整 / 搜尋 / 標籤 / 關於;homeInfoParams.Content 也轉繁中(假如我走進海裡, 你會拉住我麼?)
  • Hugo 修復 languageCode 棄用警告,改用 locale(zh-CN / zh-TW)
  • Hugo --minify 雙語構建通過:ZH 259 頁 / ZH-TW 257 頁(差 2 個是歷史 alias 重定向目錄,不重要)
  • 已驗證生成的 zh-tw HTML 含 <html lang=zh-tw>og:locale=zh_TWog:description 是繁體中文、hreflang 雙向鏈接、語言切換器菜單正確顯示

決策

  • s2tw(簡體→臺灣繁體)而不是 s2t(僅字符轉換):前者同時做用詞轉換(軟件→軟件、網絡→網絡、視頻→影片、內存→記憶體);後者只轉字符會保留大陸用詞
  • OpenCC 轉換覆蓋整篇文件(包括 front matter):會把 title/description/tags 等中文值的字符也轉;英文字段/URL/代碼塊不動
  • claudelog 也一起轉了:雖然不是"文章",但既然公開在站點,雙語可讀性更一致
  • 不動 defaultContentLanguageInSubdir = false:保持簡體版 URL 不帶 /zh/ 前綴(避免破壞現有 SEO/外鏈),只有繁體版帶 /zh-tw/

下次建議

  • Hugo 0.161 還有 3 個 PaperMod 模板的棄用警告(LanguageDirection / LanguageCode / LanguageName),等 PaperMod 升級時自然解決
  • 2 個差量(20260805-qds / 20260817-jtc)是歷史 alias 目錄只在 zh 出現,不影響正常瀏覽,可加忽略
  • s2tw 自動轉換的術語可能在少數地方不準確(如博客自創詞、品牌名),需要人工抽查
  • OpenCC 對 emoji/英文標點不轉換,只動中文字符,所以不會破壞 Markdown 語法

推送

本批未推送,等待用戶授權。