两台电脑通过云端部署同一个博客,Token 是通行证

部署状态全在 Cloudflare 云端,和电脑无关

换电脑继续写博客:跨机追加文章的完整注意事项

这套博客用 Cloudflare Pages Direct Upload 托管,纯 Python 部署,不依赖 Git、Node.js 或 GitHub。换台电脑、用 WorkBuddy 对话继续往 lk-blog.pages.dev 追加新文章,只要做一次准备,之后每篇文章都是同一个动作。本文把完整注意事项整理成一份,踩过的坑也都列在最后。

一、一次性准备(每台新电脑做一次)

1. 确认 Python 可用。WorkBuddy 自带 Python,但命令行直接敲 python --version 期望 3.8+。若提示 Python was not found ... Microsoft Store,说明点到 Windows 的假占位符——最省事是直接双击 deploy.bat,脚本会绕开占位符优先用 WorkBuddy 自带的 Python。

2. 保存 Cloudflare API Token(这台电脑做一次)。Token 不随项目目录走——有意为之,避免被打包泄露,所以每台新电脑要重新存:

cd <博客项目目录>
python save_token.py
# 粘贴 Token,屏幕不显示字符属正常

存放位置在系统配置目录(项目目录之外):Windows 是 %APPDATA%\CloudflarePagesToken\token.txt。没有 Token 就去 dash.cloudflare.com → API Tokens 创建,权限必须有 Account → Cloudflare Pages → Edit,账号勾选 Endeavorer@163.com's Account。

3. 验证连通:python deploy_cf.py status 能列出最近部署记录,说明 Token 和账号都通。

二、追加新文章的标准步骤

1. 准备文章文件。在 posts/ 下新建 <slug>.html(slug 用英文短横线),在 assets/ 下新建封面 SVG。

风格规约(保持站点一致):

  • 主题色 #1D9E75,重点用 <strong style="color:#1D9E75">
  • h2 标题:border-left:4px solid #1D9E75; padding-left:10px
  • 高亮卡片:background:#F2F8F5; color:#0F6E56
  • 头图放文章顶部,配一行灰色说明
  • 文末"一句话总结"用高亮卡片包整段

2. 更新首页 index.html。在 <div class="post-list"> 后、第一张卡片前插入新文章卡片:thumb 封面 + title 链接 + excerpt 摘要 + meta(tag/日期/子分类)。

3. 自检 + 部署:

python deploy_cf.py check
python deploy_cf.py deploy

4. 验证(必做)——不能只信脚本输出的"成功":

curl -sL https://lk-blog.pages.dev/ | grep "<slug>"
curl -s -o /dev/null -w "%{http_code}" -L https://lk-blog.pages.dev/posts/<slug>

三、踩过的坑(关键注意事项)

坑 1 · index.html 被占用写不进去

症状:Python open('w')、os.replace、mv -f 全报 PermissionError [WinError 5] 拒绝访问。原因:编辑器或资源管理器预览窗格打开着 index.html,持有写锁。解法(不用关进程):复制整个项目目录到临时位置,在副本里改 index.html、从副本部署,完事删副本。部署脚本只读文件,原目录的写锁不影响部署。

坑 2 · 干净 URL 的 308 重定向

/posts/foo.html 会被 Pages 自动 308 到 /posts/foo。curl 不加 -L 看到 308 不是故障,用 curl -sL 确认最终 200。首页链接用 .html 后缀没问题。

坑 3 · 撤销的文章直链仍 200

Direct Upload 按内容哈希累积存储,旧资源不随新 manifest 删除。撤销的文章直链可能仍返回 200,但首页无入口就点不到。要彻底清残留得去 Cloudflare 控制台删旧部署。

坑 4 · Token 安全

Token 等同账号密码,不贴聊天、不截图、不发群。save_token.py --show 只显示前 6 位。出问题去 dash.cloudflare.com → API Tokens 吊销重建。存在系统配置目录而非项目目录,避免被打包泄露。

坑 5 · 别改 deploy_cf.py 的哈希或 manifest 部分

三个致命细节搞错任一都会"部署返回 success 但线上全 404":资源键是 BLAKE3(不是 SHA-256),输入是 base64(内容)+扩展名,取前 32 位十六进制;manifest 键必须带前导斜杠 {"/index.html": ...};metadata 字段驼峰 contentType。脚本已正确实现,别动。

四、最简流程(收藏这一段)

# 新电脑首次
cd <博客项目目录>
python save_token.py    # 存 Token,一次
python deploy_cf.py status    # 验证连通

# 每次追加新文章
# posts/ 加 <slug>.html,assets/ 加封面
# index.html 顶部插卡片
# 若 index.html 被占用 → 复制到临时目录改副本部署
python deploy_cf.py check
python deploy_cf.py deploy
curl -sL https://lk-blog.pages.dev/ | grep "<slug>"

一句话总结

不需要 Git、不需要 Node.js、不需要在本机装任何东西——部署状态全在 Cloudflare 云端。每台新电脑存一次 Token,之后每篇文章都是同一个动作:加文件、改首页、deploy、验证。

部署实践 · 2026-10-06