博客园博客迁移与美化全过程记录

本文记录一次博客整理过程中从清空事故到恢复、整合、美化的完整历程,以及踩过的坑。

一、起因:整理分类

最初只是想给博客园的 100 篇博文按主题归类成 7 个分类:Linux 运维、后端开发、Java 基础、算法与数据结构、Python 编程、版本控制 Git、生活游戏。

二、事故:update 批量分类清空了正文

批量调用 update_post 设置分类时,自写的博客园 MCP server 有个 bug:只传 categories 不传 body,博客园 metaWeblog.editPost 服务端把没传的 title + description 都设空覆盖。结果 95 篇博文的标题和正文被清空,公开网页上标题、摘要全空。

根因:editPost 接收的是完整 post 结构,没传的字段会被服务端设为空字符串覆盖原值,而不是保留原值。

三、恢复:从 GitHub Solo 仓库拉取正文

博客原文已失效,但好在之前用 Solo 博客(B3log)导出过静态站到 GitHub。流程:

  1. codeload 下载仓库 zip
  2. 解析 articles/年/月/日/时间戳.html 里的正文(在 <section class="item__content--article vditor-reset">)
  3. 提取标题(data-title)+ 正文 + 标签,清掉签名档
  4. 重新发布到博客园

共恢复 122 篇 + 3 篇原文。

四、绕过发布配额

博客园限制 1 分钟 20 篇 + 当日 50 篇。改用 editPost 覆盖现有 postid(编辑不限流),把 57 篇待发内容 update 到现有 postid 上,绕过 newPost 的配额限制。

五、整合系列文章

14 个系列文章合并成 14 篇长文(Linux From Scratch、Scrapy、Spring、剑指 Offer、操作系统、Leetcode、密码学加密算法等),每篇含统一目录 + 按原顺序拼接各原篇,避免短文碎片化。

六、标题与结构优化

  • 标题:用子代理按正文 preview 生成优化标题——修正拼写(Scrach→Scratch)、纯日期标题补主题、泛标题具体化(keyboard_shortcuts→Linux 内核 SysRq 快捷键)
  • 正文结构:开头自动目录(基于 h2/h3 锚点)+ 代码块补 language 标识 + 结尾小结框

七、图片迁移

全文 215 张图,其中 164 张外链图床已失效(b3logfile.com/img.hacpai.com/sogoucdn 连接重置,gitee 403,archive.org 超时)。

手动上传 109 张到博客园图床,整理成对照表(原 URL → 博客园 URL)。脚本解析对照表,用全 URL + 文件名两种方式匹配,共 114 张替换为博客园图床 URL。

踩坑:解析对照表时正则没排除 >,URL 末尾多一个 > 导致图床返回 no such key 404。修复后图正常显示。

八、修复 update_post bug

editPost 前先 getPost 取当前完整 title + description + categories 作基底,合并传入字段再 editPost,没传的字段保留原值不清空。categories 还要清洗博客园返回的 [随笔分类] 前缀。

九、美化:白蓝简约 Sakura 风

  • 全局(页脚 HTML):Live2D 看板娘 + 鼠标点击爱心
  • 文章 body:圆点分隔 + 目录 + 小结框(纯 CSS,无 emoji——emoji 经 MetaWeblog 传输会编码丢失)
  • 页面 CSS:白底卡片 + 蓝色点缀 #3b82f6 + 固定毛玻璃导航 + 二次元背景图 + 半透明蒙版
  • 标题居中、统计居中、日历响应式(手机不溢出)

十、踩坑总结

  1. update_post 单字段更新会清空:editPost 务必传完整 title + body + categories,或先 getPost 合并再写回。
  2. 外链图床不可靠:迁移前先验证图床可访问,失效的图无法补救。
  3. URL 解析正则要排除 HTML 边界字符(>、<、|),否则 URL 带尾字符导致 404。
  4. emoji 经 MetaWeblog 传输可能编码丢失,用 CSS 画的图形或 HTML 实体(&#12304; 等)替代。
  5. CSS 选择器特异性:a:link{color} 特异性高于 .btn{color},会把按钮字染成和背景同色,用 a.btn:link 提高特异性。
  6. 博客园限制:1 分钟 20 篇 + 当日 50 篇发布上限,editPost/deletePost 不占配额。

十一、最终状态

57 篇博文,内容恢复 + 系列整合 + 标题润色 + 结构优化 + 图片迁移 + 白蓝简约美化,全部到位。事故的教训是:批量操作前先小批量验证,update 类接口要确保传完整字段。

posted @ 2026-09-21 11:26  兔子春  阅读(10)  评论(0)    收藏  举报