📅 2026-10-30🕐 阅读约 8 分钟🏷️ CMS 迁移

把蝉知 CMS 整站迁到 Joomla 5:AI + 自写工具链怎么做

先说结论:CMS 迁移这件事,靠手搬一定会出事故,靠 AI 直接生成也不行。可靠的做法是写一条工具链,让每一步都有产物、能核对。

这篇文章拆解我是怎么把蝉知 CMS(ZSITE 8.x)整站迁到 Joomla 5 的。工具链已开源:github.com/zseagate/chanzhi-to-joomla(Python / MIT)。

为什么这件事难

蝉知 CMS(ZSITE 8.x)官方停止维护后,摆在面前的问题不是「能不能升级」,而是「升级这条路已经不存在了」。能选的只有换系统,而换系统意味着内容要整体迁移。

难点在三个地方:

所以我的原则是:不做「一次性脚本」,做「可重复、可核对、可回滚的工具链」。

四步做法

第一步:ETL 抽取

把蝉知库里的文章、栏目、附件、标签抽成中间格式(JSON)。这一步的目的是脱离原系统——中间格式一旦生成,后续所有检查都可以脱离源库做,不反复打扰生产环境。

这一步要记录每个对象的来源主键。后面出了对不上的情况,能追溯到源。

第二步:多栏目补副本

蝉知一篇文章可以挂多个栏目,Joomla 的分类模型不支持同样的挂法。处理方式是补副本,并在映射表里记录「源文章 ID → 目标文章 ID 列表」的对应关系。

这一步最容易踩的坑是重复计数:校验的时候如果把副本当成独立文章统计,总数会虚高,看起来「都迁完了」,其实内容是重复的。映射表必须以源 ID 为准去重。

第三步:增量追平

迁移不可能一天完成,而老站还在更新。做法是设一个增量窗口:全量抽取之后,记录时间戳,迁移期间老站新增和修改的内容按时间戳追平。

这避免了「为了迁移把站停更一周」。代价是需要在某个时间点做一次短暂的停更窗口做最终追平,这个窗口要和客户提前约定。

第四步:模板 1:1 校验

写校验脚本逐页对比新旧页面:栏目数量、文章数量、附件是否都在、内链是否指向了新地址。这一步必须是脚本,不能靠肉眼翻——人眼翻一百页就会漏。

校验不通过的项会生成清单,逐条处理完再验收。

AI 用在哪,不用在哪

这是我最想说清楚的一段。AI 用于提速,不用在决策。

AI 擅长的部分

AI 不能替代的部分

一句话总结:AI 把「写脚本、读文档、看报错」的时间压缩了,但「决定怎么做、错了怎么办」依然是人的事。

边界与风险

如果你也面对一个停更的老 CMS:先别急着选新系统,先把老站的内容量、栏目结构、附件数量、模板定制程度摸清楚。这四项决定迁移的工作量,也决定要不要自己做。摸不清的话,把后台截图发我,我先帮你判断工作量,诊断不收费。

有老 CMS 要迁移?

把 CMS 类型、版本和大概内容量发给我,我先判断工作量和风险,判断做不了会直说。

免费诊断 →