# 接入外部来源 > 公众号、IMA 知识库、飞书 wiki、网页……这些东西不能直接「进」知识库。 > 必须先落成本地文件,再走 `kb-sync`。 --- ## 一条不能破的规则 **`00-原材料/` 是唯一输入区。任何内容进入系统,都必须先变成一个文件躺在里面。** 原因不是洁癖,是回滚机制:页面的 `sources:` 字段记录的是**原材料相对路径**。内容如果只存在于某个链接或某次对话里,将来要删它、要查"这句话哪来的",都没有抓手。 所以外部来源的处理只有两步: ``` 抓取 → 落盘成文件 → 剩下的和直接丢文件完全一样 ``` --- ## 落盘规范 ### 放哪 | 内容类型 | 位置 | |---|---| | 不确定归类的、刚抓下来的 | `00-原材料/_inbox/` | | 行业文章、报告解读 | `00-原材料/01-行业资料/` | | 客户相关(含客户公众号、客户案例) | `00-原材料/02-客户与需求/` | | 方法论、案例、素材 | `00-原材料/03-课程素材/` | | 同行课程、竞品内容 | `00-原材料/04-竞品与参考/` | 拿不准就丢 `_inbox/`。下次同步时模型会建议归位。 ### 文件名 ``` YYYY-MM-DD-<来源类型>-<标题截断>.md 2026-11-04-gzh-企业AI培训的三个误区.md 2026-11-04-ima-客户决策链笔记.md 2026-11-04-web-某咨询公司行业报告.md ``` 日期在前,天然按时间排序。 ### 文件头必须有来源块 **这是外部来源和直接丢文件唯一的不同。** ```md # 企业 AI 培训的三个误区 正文…… ``` 用 HTML 注释,理由是:Markdown 渲染时看不见,不干扰阅读;但在源码里就在最上面,模型和人都能找到。 **缺了这块会怎样**:三个月后你想引用这句话,只剩一个标题,不知道谁说的、什么时候说的、原文还在不在。公众号文章被删是常态。 ### 一键生成 不用手写这些注释: ```bash python 90-工具/kb.py stash \ --title "企业AI培训的三个误区" \ --url "https://mp.weixin.qq.com/s/xxxx" \ --type gzh \ --author "某某研究院" \ --body-file temp.md ``` 它会生成规范文件名 + 来源块,落到 `_inbox/`。也可以从标准输入喂正文。 --- ## 四种来源的具体做法 ### 公众号 用现成的 `gzh-fetch` 技能抓正文,然后 `kb.py stash` 落盘。 三件事必须做: 1. **存全文,不存摘要。** 摘要等于替未来的自己做了删减决定。 2. **做存档链接。** `https://web.archive.org/save/<原链接>`,公众号删文是常态。存档失败就在来源块写「存档失败」。 3. **记作者和号名。** 同一篇文章,原创号和转载号的证据价值差一个等级。 ### IMA 知识库 ⚠️ **IMA 里绝大多数内容是二手加工品,默认 C 级。** IMA 存的是"某人对某份资料的理解"。它不是原始资料,是别人嚼过的。做课直接引用风险很高 —— 你不知道他在哪一步理解偏了。 处理方式: | IMA 里是什么 | 落盘后定几级 | 说明 | |---|---|---| | 某人写的笔记 / 总结 / 思考 | **C** | 除非笔记里给了原始出处,可以升 B | | 一份原始 PDF / 报告 | 按原文件定 A 或 B | 最好直接拿原件,别用 IMA 里的转述版 | | 会议纪要、访谈录音转写 | B | 一手记录,但没有交叉验证 | | 教程 / 操作手册 | B | 有明确操作步骤,可复现 | **如果 IMA 笔记里有原始链接,务必把链接一起落进来源块。** 那条链接是它从 C 升到 B 的唯一通道。 ### 网页 / 其他网站 先转 Markdown 再落盘。带导航栏、广告、推荐位的 HTML 直接扔进库,会让 `check-content.py` 满屏报警,也会浪费模型的上下文。 ### 飞书 wiki / 语雀 / Notion 导出 Markdown 后落盘。**导出时注意:** - 表格常常在导出时变成图片,需要人工补回文字 - 附件链接是内网地址,离开内网就失效 —— 重要附件要单独下载 --- ## 三个坑 ### 坑一:同一内容从两个渠道各抓一次 从公众号抓了,又从 IMA 复制了同一篇。两处路径不同、内容相同,`kb.py scan` 会把它们当成**两个独立的新文件**(因为不满足"一个删除配一个新增"的移动判定条件)。 结果是同一份内容被整理两次,派生两套页面,将来删一个另一个还在。 **对策**:落盘前先搜一下。 ```bash grep -rl "文章标题里的关键词" 00-原材料/ ``` ### 坑二:批量抓 50 篇直接扔进去 `kb-sync` 的规则是:超过 20 个新文件,先做 3 个给你看格式,确认后再铺开。 外部批量抓取最需要这条。**先挑 3 篇不同类型的**(一篇深度长文、一篇短资讯、一篇案例),跑通格式再批量。 ### 坑三:把"二手解读"当"一手数据" 公众号说「据某机构测算,市场规模 380 亿」。 这不是 A 级。这是 **C 级的转述** —— 你没见过那份测算,连它叫什么都不知道。 正确做法:顺着文章里的线索去找原始报告。找到了就是 B 或 A,找不到就老老实实标 C,讲课时说"有文章提到"。 > 这条最容易犯,因为转述比原文好读。但客户问「哪家机构测算的」时,你答不上来,整门课的可信度就打折。 --- ## 落盘之后的流程 和直接丢文件一模一样,不需要任何特殊处理: ``` kb.py stash → kb.py scan 看到 NEW → kb-sync 整理 → kb.py mark 登记 ``` 唯一的区别在写 source 页时:**来源块里的信息要抄进页面**。 ```md ## 这是什么 微信公众号「某某研究院」2026 年 11 月的文章,作者张三。原文链接见来源块,已做网页存档。 ## 核心内容 …… ``` 这样将来读页面的人,不用翻原材料就知道这是谁说的、什么时候说的、还能不能找到原文。