公众号文章搜索导入 IMA
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 将 @user_4c9c5ac8/ima-gzh 安装到你的 AI 助手。
技能介绍
问题背景
当你需要把某个微信公众号下的一批文章沉淀到 ima 知识库时,传统做法是两步分开:先在搜狗微信搜索文章,再手动把链接逐个粘贴进 ima。这个过程重复、容易出错,尤其是当文章数量超过十几篇时,链接整理和导入本身就成了负担。
@user_4c9c5ac8/ima-gzh 把「搜索 → 导入」合成一个命令行流程,目标是让批量收集公众号文章并入库这件事变成一条命令就能完成。
核心能力与执行流程
数据源与导入端:搜索端复用搜狗微信(weixin.sogou.com),这是目前对公众号文章覆盖最全的公开入口;导入端调用 ima-skills 提供的 ima_api.cjs,凭证从 ~/.config/ima/ 或环境变量自动读取,无需额外配置。整个脚本零外部依赖,搜索和链接解析都基于 Node 内置的 https 模块和正则完成,不需要 npm install。
搜索阶段:支持两种模式。模式 A 是纯关键字检索,直接用 query 在搜狗微信中搜索;模式 B 先用 --account 限定公众号名称拉取该账号的文章流,再在本地按关键字对标题和摘要做过滤——这样做的好处是避免小号文章排不进纯关键字结果的问题。搜索结果按发布时间倒序排列,取最新的 N 条(默认 50,建议不超过 50)。
链接解析:搜狗返回的链接是 weixin.sogou.com/link?url=... 这种中转格式,带有时效 token。如果直接交给 ima 服务端抓取,很可能因为 token 过期而失败。脚本默认开启 --resolve,跟随 302 跳转把中转链接解析为真实的 mp.weixin.qq.com/s?... 文章 URL,大幅提升 ima 端抓取成功率。
导入阶段:先用 --kb 名称解析知识库 ID(优先查订阅库,回退查个人库),再获取根目录的 folder_id,最后通过 import_urls 接口批量导入,每批不超过 10 条。脚本会自动分批,并以 code===0 或 msg==='success' 判定导入成功。
适用边界与踩坑备忘
反爬是最大变量:搜狗微信对服务器出口 IP 有严格反爬策略。在部分沙箱环境中,Node 直连可能返回 antispider 验证页而非正常结果。遇到这种情况脚本会打印 WARN 并停止,建议先换网络或稍后重试;如果仍不行,可以改用浏览器通道(WebFetch)访问同样的搜索 URL,手动整理出「标题 + 链接」清单存成 JSON,再通过 --from-json 参数完成导入。
根目录 folderid ≠ 知识库 ID:这是最容易踩的坑。import_urls 需要的 folder_id 必须取自 get_knowledge_list 返回的根目录 folderid,不能直接用 kb_id 充当,否则会报「文件夹不存在 222000」。脚本已内置这个处理逻辑。
正文不可本地批量抓:微信公众号文章正文有较强的反爬保护,本地批量抓取正文基本不可行。但 import_urls 由 ima 服务端自动抓取内容,所以「搜链接 → 交给 ima 导入」是正确的姿势,不要尝试绕过。
--dry-run 是好习惯:正式导入前可以先加 --dry-run 参数预览将要导入的知识库、批次和链接数量,确认无误再去掉该参数执行真实导入。
使用场景
- 内容运营需要按公众号和关键词批量收集文章,导入指定 ima 知识库供后续检索。
- 研究员想拉取某公众号文章流,再按标题和摘要过滤关键字,避免小号文章漏采。
- 导入前需要把搜狗中转链接解析为真实 mp.weixin.qq.com 地址,避免 ima 抓取过期失败。
- 遇到搜狗反爬验证页时,用 WebFetch 整理标题链接清单,再用 --from-json 导入 ima。
适合人员
- 内容运营:需要按公众号和关键词批量收集文章,导入 ima 知识库沉淀素材。
- 知识库管理员:要把分散的公众号文章统一入库,并避免重复导入。
- 自动化工程师:希望用命令行解析搜狗中转链接,并按批次提交到 ima。
- 专题研究员:检索某公众号特定主题文章时,需要保留最新优先和可审计清单。