| name | zhihu-to-blog |
| description | 将知乎专栏或知乎回答迁移为 NEVSTOP-LAB 站点本地博客。Use when: 把知乎文章、知乎回答、专栏原文转换到 content/blog,提取标题、发布日期、原文链接与正文结构,下载并本地化图片,按现有博客风格重排,并运行 hugo 构建验证。 |
| argument-hint | 知乎链接,或说明要迁移哪篇文章 |
Skill: zhihu-to-blog
本 skill 用于把知乎专栏或知乎回答整理为当前仓库可直接发布的本地博客文章。目标不是机械复制网页 DOM,而是按本站既有风格完成一次可发布、可维护、可本地构建的内容迁移。
0. 何时使用本 skill
匹配以下场景时使用:
- 把这篇知乎专栏转成站点本地 blog
- 这是我写过的知乎回答,整理到博客里
- 把知乎文章迁移到 content/blog,并把图片本地化
- 按现有博客风格,把知乎原文落到 Hugo 站点
不适用场景:
- 用户没有提供正文,也无法访问原文页面。
- 版权归属不明,且用户没有明确说明这是自己的文章或有迁移权限。
- 用户只是想写一篇全新博客,而不是从知乎内容迁移。
如果版权归属不明确,不要直接长段逐字搬运;先确认是否为用户自有内容,或改为摘要整理版。
1. 仓库内固定约束
开始前先阅读仓库根目录的 AGENTS.md,并遵守以下约束:
- 博客文章放在 content/blog//index.md。
- front matter 至少包含:title、description、date、draft: false、contributors。
- 参考现有文章风格,而不是直接输出网页原始 DOM。
- 图片优先本地化到文章目录,避免站内依赖知乎外链。
- 不要手工编辑 public/ 下的生成结果。
- 改完后默认执行 hugo --gc --minify 验证构建。
2. 标准工作流
Step 1 - 确认来源、权限和访问方式
- 如果用户明确说明「这是我写过的文章」或已经提供原文内容,可以按完整迁移处理。
- 如果版权归属不明,不要直接大段搬运;先确认是否有权限,或者改为结构化摘要。
- 如果用户已共享浏览器页面,优先使用该页面,避免重复打开。
- 如果普通抓取遇到 403,优先使用浏览器页面、页面快照、DOM 读取或页面元数据,而不是放弃。
Step 2 - 建立最小上下文
在第一次编辑前,只读取最少量的仓库上下文:
- 阅读 AGENTS.md 中与博客、构建和图片相关的约束。
- 打开 1 到 2 篇 content/blog 下的现有文章,确认:
- front matter 字段
- 开头说明语
- 标题层级风格
- 图片放置方式
- 检查目标 slug 是否已存在,避免重复创建。
Step 3 - 提取文章元数据
优先提取以下信息:
- 标题
- 发布时间
- 原文链接
- 原文类型:知乎专栏 / 知乎回答
- 正文主结构
- 正文中真正有信息价值的图片
提取规则:
- 发布时间优先取页面 datePublished、time 或明确的编辑时间文本。
- slug 默认使用 YYYY-MM-DD- 风格,并尽量基于发布时间而不是当前日期命名。
- description 需要准确概括主题,尽量避免给新页面引入明显的长度告警。
- 如果原文是知乎回答,导语写「本文整理自知乎回答」。
- 如果原文是知乎专栏,导语写「本文整理自知乎专栏原文」。
Step 4 - 决定迁移策略
不要默认照搬整页 DOM,按下面规则分支处理:
- 如果原文层次清晰,保留原有章节结构并轻量整理。
- 如果网页导出结构很脏,只保留内容语义,手工整理成适合博客阅读的章节。
- 如果原文包含作者补充、声明、流程图说明等关键语义,保留并改写成引用块或独立小节。
- 如果图片只是头像、徽章、广告或无信息量 UI 截图,删除,不本地化。
- 如果图片承载主要信息,例如流程图、角色图、架构图、截图说明,则下载到文章目录并引用本地文件。
- 如果原文链接是知乎包裹跳转,能明确还原目标地址时就改成更干净的链接;无法确认时保留稳定可访问版本。
Step 5 - 生成本地文章
按下面约定创建文章:
- 目录:content/blog//
- 正文文件:index.md
- 图片命名:img-01.jpg、img-02.jpg,按出现顺序递增
front matter 默认策略:
- title:优先用原文标题,可按站点语言风格做轻微润色
- description:写成准确摘要,尽量避免过短或过长
- date:优先使用原文发布时间,而不是当前迁移时间
- draft: false
- contributors:
正文建议结构:
- 开头加入来源说明与原文链接。
- 第一段先交代文章背景或迁移后的阅读定位。
- 用清晰的二级、三级标题重组正文。
- 保留表格、列表、代码块等结构化内容。
- 正文只保留与文章内容相关的信息,不带入知乎页面噪音。
Step 6 - 本地化图片
图片处理规则:
- 只下载正文中真正承载信息的图片。
- 文件名按顺序命名为 img-01.jpg、img-02.jpg 这类稳定格式。
- 下载后快速确认文件确实是正常图片,而不是防盗链占位图或错误页面。
- 引用本地图片,不依赖知乎外链,避免站内渲染受防盗链影响。
Step 7 - 第一轮验证
第一次实质性编辑后,下一步必须立刻验证,而不是继续扩写。
优先验证:
- 运行 hugo --gc --minify。
- 如果是新图片,确认文件确实下载到了文章目录。
- 如果构建告警明确由新文章引入,例如 description 过短或过长,优先就地修正。
- 仓库里原本已有的其他告警可以在结果说明里注明,但不要顺手扩大改动范围。
Step 8 - 收尾检查
完成前检查:
- 新文章是否创建在正确路径。
- index.md 的 front matter 是否完整。
- 原文链接是否保留。
- 正文是否已经从网页结构转成博客结构,而不是杂乱抓取结果。
- 新文章引用的图片是否全部为本地文件。
- hugo --gc --minify 是否通过,且没有由该文章新增的构建错误。
3. 决策速查
| 问题 | 默认决策 |
|---|
| 页面抓取 403 | 用浏览器页面、DOM 或页面快照继续提取 |
| 用户未说明版权 | 先确认权限,或退回摘要整理 |
| 原文是回答还是专栏 | 按来源切换导语模板 |
| 图片是否保留 | 只保留承载信息的正文图片 |
| 是否照搬 DOM | 否,优先输出结构化、可发布版本 |
| 是否修全仓库旧告警 | 否,只处理新文章直接引入的问题 |
4. 完成标准
完成一次知乎迁移时,至少满足:
- 新文章已创建到 content/blog//index.md。
- 标题、日期、原文链接齐全。
- 正文已经按本站风格整理,而不是整页噪音拷贝。
- 关键正文图片已本地化,且引用本地文件。
- hugo --gc --minify 通过,没有引入新的构建错误。
- 没有留下明显由该新文章引入的 front matter 问题。
5. 示例触发语
以下提示通常应该触发本 skill:
- 用 zhihu-to-blog 把这个知乎专栏迁移到本地博客
- 把这篇知乎回答整理为本站 content/blog 下的新文章,并本地化配图
- 按现有博客风格,把这个知乎链接转成 Hugo 文章
- 这是我写过的文章,类似其他 blog,创建到本地