现在迁站和几年前不太一样了。以前从 WordPress 搬到静态站,很多活都要自己硬写脚本:XML 解析、HTML 清理、图片下载、路径替换、frontmatter 生成。现在有 AI,确实能快很多。
但快不等于可以闭眼。
我更愿意把 AI 当成一个干杂活的助手。它可以写脚本,可以帮我发现漏项,可以把一堆乱糟糟的 HTML 先整理一版。但 URL 怎么保留、哪些内容不能动、哪些页面要 301,这些不能丢给它猜。
先给 AI 一小批样本
不要一上来把整个 WXR 扔给 AI,让它“帮我迁移”。这句话太大了,出来的东西也很容易飘。
我会先给它 3 篇文章样本:
- 一篇普通文章。
- 一篇带图片和代码块的文章。
- 一篇带短代码、评论或相册的复杂文章。
然后让它根据样本写转换脚本,而不是直接改全部内容。
可以这样写提示词:
你是迁移脚本助手。请根据这 3 篇 WordPress WXR item 样本,写一个 Node.js 脚本:
1. 只处理 post_type=post 且 status=publish 的文章。
2. 输出到 src/content/posts/YYYY/MM/DD/slug/index.md。
3. frontmatter 包含 title、date、updated、excerpt、path、permalink、slug、tags、tagSlugs、categories、categorySlugs。
4. 保留正文 HTML,不要把表格和代码块强行转 Markdown。
5. 移除 WordPress block 注释。
6. 生成 old_url,new_url 的 redirects.csv。
7. 不要联网下载图片,只收集图片 URL 到 images.csv。
这个提示词的重点不是“聪明”,而是边界清楚。AI 最怕任务太宽。
AI 适合写检查脚本
我觉得迁移里最适合交给 AI 的,不是正文重写,而是检查。
比如让它写几个脚本:
# 检查远程图片
rg 'https?://.*\\.(jpg|jpeg|png|gif|webp)' src/content/posts
# 检查旧域名
rg 'old-domain.com' src/content/posts
# 检查没有 excerpt 的文章
rg '^excerpt: *$' src/content/posts
也可以让它生成更完整的 Node/Python 检查器:
- 每个
path是否唯一。 - 每个
permalink是否和path对得上。 - 正文里的本地图片是否真实存在。
- RSS 里有没有旧域名。
- sitemap 里有没有重复 URL。
- 标签 slug 是否为空。
这些工作人肉做很烦,机器做正合适。
不要让 AI 大规模改旧文风
WordPress 老文章经常有很多“当时的味道”:错别字、口头禅、旧截图、当年流行的表达。迁移时我不会顺手让 AI 全部润色。
润完可能更顺,但也更不像原来的博客。
我的做法是:旧文章只修结构,不修语气。比如去掉坏掉的短代码、修图片路径、补 frontmatter。正文能不动就不动。
新文章可以用 AI 起草,再自己改。旧文章不一样,它们本来就是时间的一部分。
图片迁移不要只靠模型判断
AI 可以帮你写下载脚本,但不要让它“看起来像图片就替换”。WordPress 里图片可能来自:
wp-content/uploads- CDN
- 旧图床
- 短代码生成的相册
- 自定义字段里的封面图
- REST API media 里的附件
这些来源要扫全。下载失败要留日志,不要静默跳过。
我会让脚本输出三个文件:
images-found.csv
images-downloaded.csv
images-failed.csv
后面再决定失败的图是重试、手动找 archive,还是保留远程地址。
redirects 一定要人看
迁移 WordPress 最容易伤 SEO 的地方,就是旧链接。
AI 可以根据旧 URL 和新 URL 生成 redirects.csv,甚至生成 Astro config:
export default defineConfig({
redirects: {
'/2019/hello-world/': '/2019/01/01/hello-world/',
},
});
但这张表一定要人看。尤其是旧 WordPress 如果改过 permalink、分类前缀、中文 slug、.html 后缀,就会有很多边角情况。
我会抽查这些:
- 搜索流量高的文章。
- 被外站引用的文章。
- 分类页和标签页。
- RSS 里出现过的老链接。
- 带中文路径的链接。
迁移不是为了得到一张漂亮的新路由表,是为了旧读者还能进来。
最后让 AI 做一次审稿,但别让它决定发布
文章和页面生成后,可以让 AI 做一轮“迁移审稿”:
请检查这个 Astro 迁移结果,重点看:
1. 是否有旧 WordPress 域名残留。
2. canonical 是否和 permalink 一致。
3. 图片是否仍指向 wp-content/uploads。
4. 是否有 WordPress block 注释残留。
5. 是否有明显的短代码没有处理。
只报告问题,不要直接改文件。
“只报告问题”这句挺重要。迁移后期最怕工具自动替换一大片,然后你不知道它到底动了什么。
我的态度
AI 时代迁 WordPress 到 Astro,确实轻松了不少。以前要花一天写的解析脚本,现在可能半小时能跑起来。
但站点迁移不是单纯的代码题。它还有历史链接、搜索权重、读者习惯、旧图片、评论和很多乱七八糟的边角。AI 可以帮忙搬箱子,不能替你决定哪些箱子要留。
我会用它,但会让它每一步都留下清单和日志。迁移这种事,能复盘比跑得快更重要。
参考: