博客搬家:一个简单的AI的使用案例
这个blog之前是用WordPress搭在linode上的,其实一直都有想迁移到Github Pages上的想法,但是因为文章的迁移比较麻烦,需要把使用到的文档格式、图片、链接、Latex公式之类的东西都转换一遍,一直动力不足。
最近有了一个新的想法,用AI来搞这个苦差事!我完全没有自己去了解相关的技术和工具,所有的事情都是和Cursor(模型是claude-4.5-sonnet)一轮一轮沟通需求来完成的,断断续续总共大概花了几个小时的时间,不得不说,效果令人印象深刻,几点比较深的感触:
- 描述需求不需要有负担,不用太具体也完全可以,模型会自己通过现有的内容去理解
- 模型现在的指令跟随已经非常准确了,在繁琐的文本编辑任务上已经完全可用
- Cursor已经可以编码运行并检查执行效果,然后自己修改代码重试了,几轮下来可以自行解决大部分的文本操作任务
- gpt-5在Cursor里的效果确实不如claude-4.5?
- 效果不好的时候也还是要碰碰运气,也许多重试几次就能大力出奇迹(数据的checkpoint能力非常重要)
最离谱的是,文章后面的内容,也是我让模型通过总结这个过程来生成的。
为什么要迁移
在开始之前,先说说为什么要从 WordPress 迁移到 GitHub Pages:
- 静态网站的优势:更快的加载速度、更低的维护成本、不用担心数据库和 PHP 的安全问题
- 版本控制:所有文章都是 Markdown 文件,可以用 Git 管理,便于追踪变更历史
- 写作体验:Markdown 比 WordPress 的编辑器更适合技术文章的写作
- 免费托管:GitHub Pages 完全免费,而且稳定可靠
- 更好的代码高亮:Jekyll 对代码块的支持比 WordPress 更好
但是,迁移这样一个有 63 篇文章、193 张图片、跨度 13 年的技术博客,是一个不小的工程。正好可以试试 AI 编程助手能帮上多大忙。
准备工作
导出 WordPress 数据
首先从 WordPress 后台导出了所有内容,得到一个 XML 文件:kongfy039sblog.wordpress.2025-10-01.xml
。
技术栈选择
和 Claude 讨论后,确定了以下技术栈:
- 静态站点生成器:Jekyll 4.3(GitHub Pages 原生支持)
- 主题:Minimal Mistakes(功能强大、文档完善)
- 评论系统:Disqus(兼容原有评论)
- 数学公式:MathJax 3
- 代码高亮:Rouge
环境准备
Claude 帮我确认了需要的环境:
- Ruby 2.7+ 和 Bundler
- Node.js(用于运行转换工具)
- wordpress-export-to-markdown 转换工具
第一阶段:内容转换
WordPress XML 转 Markdown
使用 wordpress-export-to-markdown
工具将 WordPress XML 转换为 Jekyll 可用的 Markdown 文件:
npx wordpress-export-to-markdown \
--input=backup/kongfy039sblog.wordpress.2025-10-01.xml \
--output=_posts \
--post-folders=false \
--save-attached-images=true \
--save-scraped-images=true
这个过程 Claude 全程指导,包括:
- 确认转换参数的选择
- 处理转换过程中的编码问题
- 验证转换结果的完整性
结果:成功转换了 63 篇文章,生成 193 张图片文件。
初始结构设置
Claude 帮我创建了标准的 Jekyll 目录结构:
blog/
├── _config.yml # Jekyll 配置
├── _posts/ # 63 篇文章
├── _layouts/ # 布局模板
├── _includes/ # 可复用组件
├── assets/
│ ├── images/ # 193 张图片
│ └── css/ # 样式文件
├── Gemfile # Ruby 依赖
└── index.html # 首页
第二阶段:链接和图片修复
这是整个迁移过程中最繁琐的部分,也是 AI 最能发挥作用的地方。
内部链接修复
WordPress 的文章内部引用使用的是完整 URL,需要转换为 Jekyll 的相对路径。
问题示例:
[这篇文章](https://kongfy.wordpress.com/2014/11/10/machine-learning/)
目标格式:
[这篇文章](/2014/11/machine-learning小结1/)
我只需要告诉 Claude:”需要把所有内部博客链接转换为相对路径”,它就:
- 自动搜索所有包含 WordPress URL 的文件
- 分析 Jekyll 的 permalink 格式
- 批量修复了 48 个文件中的所有内部链接
- 保留了所有外部链接不变
图片路径修复
WordPress 的图片路径也需要更新:
原格式:

目标格式:

Claude 自动处理了:
- 识别所有图片引用
- 更新到 Jekyll assets 目录
- 保持图片文件名不变
- 修复了 45 个文件的图片路径
验证完整性
完成后,Claude 还帮我写了验证脚本,确保:
- 所有文章的 front matter 格式正确
- 没有残留的旧链接
- 所有图片文件都存在
- Markdown 语法没有错误
第三阶段:数学公式迁移
我的博客有很多机器学习和分布式系统的文章,包含大量数学公式。这是最有挑战性的部分。
WordPress LaTeX 格式转换
WordPress 使用特殊的 LaTeX 语法:
[latex]formula[/latex]
- 块级公式$latex formula$
- 行内公式
需要转换为标准 MathJax 格式:
- 行内公式:
$formula$
- 块级公式:
$$formula$$
Claude 的处理策略:
- 智能识别:扫描所有文章,识别出 24 篇包含数学公式的文章
- 格式转换:自动转换所有 LaTeX 标记
- 添加标识:在文章 front matter 中添加
mathjax: true
- 配置 MathJax:创建
_includes/head/custom.html
配置文件
转换示例:
# 修复前
[latex]\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}[/latex]
# 修复后
$$\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}$$
数学公式显示问题
迁移后发现一个新问题:某些公式应该居中显示但没有居中。
问题分析:
- 使用
$\displaystyle ...$
的公式是展示样式,但不会居中 - 改用
$$...$$
后出现转义字符处理问题
最终解决方案:
使用 \[...\]
格式(标准 LaTeX 块级公式语法):
- ✅ 公式独占一行
- ✅ 公式居中显示
- ✅ 转义字符处理稳定
- ✅ 在首页摘要中也能正确渲染
Claude 自动修复了 5 篇文章中的 19 个块级公式。
修复示例:
# 修复前(不居中)
$\displaystyle \max_{v\in C_1}f(v) < \max_{v\in C_2}f(v)$
# 修复后(居中)
\[\max_{v\in C_1}f(v) < \max_{v\in C_2}f(v)\]
第四阶段:代码高亮配置
选择高亮方案
Jekyll 默认使用 Rouge 进行语法高亮。我想要类似 Sublime Text 的 Monokai 主题。
Claude 给出了几种方案:
- 使用 Minimal Mistakes 主题自带的皮肤
- 生成自定义 Rouge CSS
- 完全手写样式
我选择了方案 2,Claude 帮我:
# 生成 Monokai Sublime 主题
rougify style monokai.sublime > assets/css/syntax.css
然后创建快速切换主题的脚本:
#!/bin/bash
# switch-highlight-theme.sh
THEME=$1
if [ -z "$THEME" ]; then
echo "Usage: ./switch-highlight-theme.sh [theme-name]"
echo "Available: github, monokai, monokai.sublime, gruvbox, etc."
exit 1
fi
rougify style "$THEME" > assets/css/syntax.css
echo "✅ Switched to $THEME theme"
这样以后想换主题只需要:
./switch-highlight-theme.sh github
第五阶段:评论系统集成
Disqus 配置
原博客使用 Disqus 评论系统,需要保留原有评论。
Claude 帮我:
- 在
_config.yml
中配置 Disqus shortname - 确保 Minimal Mistakes 主题的评论功能启用
- 生成 URL 映射文件用于评论迁移
Disqus URL 映射:
由于 URL 结构变化,需要告诉 Disqus 新旧 URL 的对应关系:
https://kongfy.wordpress.com/2014/11/10/machine-learning/, https://blog.kongfy.com/2014/11/machine-learning小结1/
https://kongfy.wordpress.com/2015/03/16/kosaraju/, https://blog.kongfy.com/2015/03/有向图强连通分支/
...
Claude 自动生成了包含所有 63 篇文章的映射文件。
第六阶段:主题和布局优化
选择主题皮肤
Minimal Mistakes 提供了多种皮肤,我选择了 contrast
(高对比度):
minimal_mistakes_skin: "contrast"
配置导航和页面
Claude 帮我创建了:
- 关于页面(
_pages/about.md
) - 分类归档页(
_pages/categories.md
) - 标签归档页(
_pages/tags.md
) - 年份归档页(
_pages/year-archive.md
)
配置导航菜单:
# _data/navigation.yml
main:
- title: "文章"
url: /year-archive/
- title: "分类"
url: /categories/
- title: "标签"
url: /tags/
- title: "关于"
url: /about/
首页布局优化
默认的首页显示全文,我想改成显示摘要。Claude 建议:
- 在文章中添加
<!--more-->
标记 - 使用自定义首页布局
我选择了方案 2,Claude 创建了 _layouts/home.html
:
---
layout: archive
---
{{ content }}
<h3 class="archive__subtitle">{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}</h3>
{% if paginator %}
{% assign posts = paginator.posts %}
{% else %}
{% assign posts = site.posts %}
{% endif %}
{% assign entries_layout = page.entries_layout | default: 'list' %}
<div class="entries-{{ entries_layout }}">
{% for post in posts %}
{% include archive-single.html type=entries_layout %}
{% endfor %}
</div>
{% include paginator.html %}
第七阶段:部署到 GitHub Pages
仓库配置
Claude 指导我配置 GitHub Pages:
- 创建仓库
kongfy/blog
- 配置自定义域名
blog.kongfy.com
- 创建
CNAME
文件 - 配置 DNS 记录
自动部署
GitHub Pages 支持 Jekyll 自动构建,但有插件限制。Claude 帮我:
- 确认所有使用的插件都在 GitHub Pages 白名单中
- 配置
_config.yml
的生产环境设置 - 创建部署文档
GITHUB_DEPLOY.md
最终配置:
# _config.yml
url: "https://blog.kongfy.com"
repository: "kongfy/blog"
baseurl: ""
# 生产环境配置
environment: production
# GitHub Pages 插件
plugins:
- jekyll-feed
- jekyll-seo-tag
- jekyll-sitemap
- jekyll-paginate
- jekyll-include-cache
本地测试
部署前,Claude 提醒我进行完整的本地测试:
# 清理缓存
bundle exec jekyll clean
# 构建生产版本
JEKYLL_ENV=production bundle exec jekyll build
# 本地预览
bundle exec jekyll serve
检查清单:
- ✅ 所有文章显示正常
- ✅ 数学公式渲染正确
- ✅ 代码高亮主题正确
- ✅ 图片都能加载
- ✅ 内部链接都有效
- ✅ 导航菜单正常工作
- ✅ 分页功能正常
数据统计
经过大约 2 天的工作,完成了整个迁移过程:
内容统计
- 文章总数:63 篇
- 图片数量:193 张
- 跨度时间:2012-2020(13 年)
- 涉及分类:C/C++、Python、Linux、机器学习、分布式系统、算法等
修复统计
- 修复内部链接:48 个文件
- 修复图片路径:45 个文件
- 转换数学公式:24 个文件
- 修复块级公式:5 个文件,19 处
- 添加代码语言标识:若干处(未精确统计)
配置统计
- 创建配置文件:7 个
- 创建页面:4 个(About、Categories、Tags、Archive)
- 创建布局文件:2 个
- 创建脚本:1 个(主题切换脚本)
- 生成文档:7 个
AI Agent 的能力展现
通过这次完整的博客迁移项目,我对 AI 编程助手的能力有了更深刻的认识。
Claude 擅长的任务
1. 批量重复性工作
最出色的能力。修复 48 个文件的内部链接、45 个文件的图片路径、24 个文件的数学公式,这些工作如果手动做需要几天时间,而且容易出错。Claude 几分钟就能完成,准确率接近 100%。
2. 技术选型和架构设计
能够基于需求给出合理的技术栈建议:
- Jekyll vs Hugo vs Hexo 的对比
- Minimal Mistakes vs 其他主题的选择
- 评论系统、数学公式渲染方案的权衡
建议都很中肯,考虑了易用性、生态、长期维护等因素。
3. 问题诊断和调试
遇到问题时,Claude 能够:
- 快速定位问题根源
- 给出多个解决方案
- 分析每个方案的优劣
- 提供具体的实现步骤
比如数学公式显示问题,Claude 从 Markdown 渲染、MathJax 配置、Jekyll 处理流程等多个角度分析,最终找到最佳方案。
4. 文档生成
基于实际操作过程,自动生成结构化、详细的文档。这些文档不是简单的操作记录,而是包含:
- 问题背景和分析
- 解决方案和原理
- 示例代码和配置
- 注意事项和最佳实践
质量很高,可以直接作为项目文档使用。
5. 代码理解和修改
能够理解:
- Jekyll 的目录结构和配置规则
- Liquid 模板语法
- Minimal Mistakes 主题的架构
- Kramdown Markdown 的特殊语法
- MathJax 配置选项
在此基础上进行精确的代码修改。
6. 全局把控
整个迁移过程涉及多个阶段,每个阶段都有依赖关系。Claude 能够:
- 规划合理的执行顺序
- 在适当的时候提醒后续任务
- 记住之前的决策和配置
- 保持整体一致性
总结
这次使用 Cursor 和 Claude 4.5 进行博客迁移的经历非常愉快。整个过程中,我感觉像是在和一个经验丰富的同事结对编程:
- 需要我做决策时,它会给出建议和分析
- 需要执行任务时,它高效且准确
- 遇到问题时,它能够快速诊断并给出方案
- 完成后,它会自动整理文档
最终结果:
- ✅ 63 篇文章完整迁移
- ✅ 193 张图片全部保留
- ✅ 所有内部链接正常工作
- ✅ 数学公式完美渲染
- ✅ 代码高亮美观
- ✅ 评论系统正常运行
- ✅ 完整的文档体系
原本预计需要一周的工作,在 AI 的帮助下两天就完成了,而且质量更高。
AI Agent 正在改变软件开发的方式。它不会取代程序员,但会让程序员变得更强大。关键在于学会如何与 AI 协作,将它作为强大的工具,而不是完全依赖或完全排斥。
对于那些还没有尝试 AI 编程助手的开发者,我强烈建议试一试。你会发现,编程可以更高效、更有趣。
对于已经在使用的开发者,继续探索人机协作的最佳模式。我相信我们正处在一个激动人心的时代,AI 和人类的协作将创造出更多可能性。
项目仓库:https://github.com/kongfy/blog
工具推荐:
- Cursor - AI 编程编辑器
- Claude - Anthropic 的 AI 助手
- Jekyll - 静态站点生成器
- Minimal Mistakes - Jekyll 主题
欢迎交流和反馈!如果你也在考虑博客迁移,或者想了解更多 AI 编程助手的使用经验,欢迎留言讨论。
Comments