从零到日更三篇:Cloudflare Pages 个人博客搭建全记录

从零到日更三篇:Cloudflare Pages 个人博客搭建全记录

本站(ki 的折腾笔记)从 2026 年 10 月 2 日上线,到现在日更三篇、被搜索引擎收录,还长出了 6 个在线工具页。这篇把搭建过程中的所有关键决策复盘一遍,适合想自己搭博客的人照着抄作业。

一、为什么自研 SSG,而不用 Hexo / Hugo

市面上的静态生成器都很成熟,但我们最后自己写了个不到 500 行的 Python 脚本(build.py,零依赖),理由:

  1. 完全可控:想加工具页、标签页、搜索页,改几十行就行,不用跟主题较劲。
  2. 构建飞快:17 篇文章 + 工具页,本地构建 0.3 秒。
  3. 无依赖就是稳定:没有 node_modules,没有版本地狱,十年后还能跑。

代价是 Markdown 解析、分页这些要自己写。我们的 Markdown 子集只支持标题、代码块、加粗、列表、表格、引用、链接——写博客够用了,复杂的排版需求本来也不该出现在技术文章里。

二、部署:Cloudflare Pages 免费套餐

wrangler pages deploy dist --project-name=tech-blog 一行命令上线。选 Cloudflare Pages 的理由:

  • 免费套餐足够个人博客:无限带宽(合理使用)、全球 CDN。
  • 自定义域名配一条 CNAME 就行,HTTPS 自动。
  • 每次构建给 CSS 加版本号,彻底解决 CDN 缓存导致的用户端样式错乱——我们第一天就被旧 CSS 坑过,题图被撑到 2048px。

API token 只给最小权限(Pages 编辑 + DNS 编辑),存在 600 权限的文件里,随时可撤销。

三、SEO 与 GEO:让搜索引擎和 AI 都找到你

传统 SEO 四件套一个不能少:

  • sitemap.xml(带 lastmod/changefreq)、robots.txt、rss.xml。
  • 每篇文章的 JSON-LD(BlogPosting + BreadcrumbList)、Open Graph、canonical。
  • 标题自动生成锚点 id,<time> 语义化标签。

GEO(让 AI 搜索引用你)是 2026 年的新功课,我们做了三件事:

  1. /llms.txt:给 AI 爬虫的纯文本索引,全站文章一页看完。
  2. robots.txt 里显式放行 GPTBot、ClaudeBot、PerplexityBot、Google-Extended。
  3. 文章自包含、不写"前文提过"式的断头话——AI 引用时不需要上下文。

上线两天就被收录,AI 搜索也能找到,证明这套管用。

四、安全:站外链接走跳转确认页

技术文章少不了引用外部链接,但直接外链有两个问题:权重流失、用户被带到钓鱼站都不知道。我们的做法:

  • 生成器自动把正文里的站外链接改写成 /go/?url=…。
  • 跳转页显示目标域名,用户点"继续前往"才跳转,无效链接直接拦截。
  • 确认页加 noindex,不被搜索引擎收录。

五、脱敏红线:能公开的只有经验

技术博客最大的风险是手滑泄露敏感信息。我们的铁律写进构建流程:

  • 密钥、密码、token、VPS 真实 IP、个人域名,一律不进正文,用占位符(如 <你的UUID>、我的大阪 VPS)代替。
  • 教程里的配置示例,IP 一律用 203.0.113.x(文档保留段)或泛称。
  • 曾经有一篇文章初版带了真实 IP 和域名,发现后立刻删掉重发——流程的意义就是让人可以犯错,但能兜住。

六、从文章到工具:博客的第二曲线

纯文章的博客是"只看",工具页让它变成"能用"。我们现在有 6 个:IP/ASN 检测、sing-box 节点转换、sing-box 配置检查、JSON/YAML 工具、Wei/Gwei/ETH 转换、Calldata/ABI 解码,统一入口在在线工具。

技术上都是纯前端实现(IP 查询调一次公开 API,其余全本地跑),构建时由生成器统一套模板、进 sitemap。工具页和文章互相引流:sing-box 的文章里链工具,工具页底部链回相关文章。

七、运营:日更三篇与变现计划

内容节奏是早中晚三篇,选题 = 热点扫描 + 方向轮换(VPS / sing-box / 玩机 / Python),同一天三篇方向不重复。AdSense 还没申请——计划是 20+ 篇原创、稳定跑一两个月后再申,通过率高。这类"慢钱"急不得。

结语

搭博客的本质是搭一条内容流水线:写 → 构建 → 部署 → 被找到 → 被使用。工具链越简单,这条线越不容易断。如果你也在考虑动手,从一个 500 行的脚本开始,够了。