Posts for: #Cloudflare

把父亲的 WordPress.com 博客迁到 Hugo + Cloudflare Pages

父亲从 2005 年开始在 WordPress.com 写博客,到 2025 年一共 786 篇文章、591 条评论、78 段视频。这几天把它整站搬到了 Hugo + Cloudflare Pages,托管在 wuwufu.com

记录一下工具链和几个要留意的地方。

整体方案

  • 内容:wp2hugo 从 WordPress 导出的 WXR XML 转 Markdown
  • 主题:PaperMod,自定义布局模仿原站 Twenty Seventeen 的头图风格
  • 评论:REST API 抓回来,生成静态 HTML 嵌入每篇文章末尾
  • 视频:ffmpeg x265 2-pass 压缩,从 10.1GB 压到 587MB
  • 托管:Cloudflare Pages,DNS 也搬到 Cloudflare

内容转换:wp2hugo

WordPress 后台导出 WXR XML(Tools → Export),然后跑 wp2hugo,出来就是 Hugo 友好的目录结构:content/posts/*.md + static/wp-content/uploads/

转换后 Markdown 里会有一些残留的 WordPress shortcode([gallery][embed] 这些),还有空标题、重复文章,写了几个清理脚本扫一遍。

评论:自己抓,嵌进去

WordPress.com 因为不是自托管,用不了评论迁移插件。但 20 年下来 591 条评论不能丢。

好在 WordPress.com 开放了 REST API,按文章 ID 翻页抓:

[阅读全文]

把 Hugo 博客从 GitHub Pages 迁移到 Cloudflare Pages

这个博客之前用 GitHub Pages 托管,通过 GitHub Actions 构建 Hugo,推到 main 分支就自动部署。用了一段时间,没什么大问题,但 Cloudflare Pages 有几个吸引我的地方:构建速度更快,自带 CDN 和 DDoS 防护,DNS 和托管在同一个面板管理。

迁移很简单,整个过程不到二十分钟。

Cloudflare Pages 创建项目

登录 Cloudflare Dashboard,进 Workers & Pages,点 Create,选 Pages,连接 GitHub 仓库。

构建配置:

  • Framework preset:Hugo
  • Build command:hugo --gc --minify
  • Build output directory:public

环境变量加一条:HUGO_VERSION = 0.159.2(和原来 GitHub Actions 里保持一致)。Cloudflare 内置的 Hugo 版本比较旧,不设这个大概率构建失败。

设好之后 Cloudflare 会立即触发一次构建,几十秒就能完成。构建成功后会分配一个 xxx.pages.dev 的临时域名,可以先打开看看效果对不对。

DNS 迁移

在 Cloudflare 添加域名,它会给你两个 nameserver,类似 alice.ns.cloudflare.combob.ns.cloudflare.com

去域名注册商(或者原来用的 DNS 服务商,比如 DNSPod)把 nameserver 改成 Cloudflare 给的这两个。改完之后等 DNS 传播,通常几分钟到几小时。

[阅读全文]