微信公众号文章定向采集 → IMA 知识库导入
适用场景
按周期采集指定微信公众号的文章,按主题关键词过滤后分类导入 IMA 知识库。适用于行业情报追踪、竞品动态监控、技术资讯汇总等场景。
前置条件
- wewe-rss 服务:已部署并运行(端口 4000,SQLite 落库)。部署参考
references/wewe-rss-setup.md。 - IMA MCP 连接器:已启用并信任(用于知识库文件夹操作和文章导入)。
- 微信读书账号:已通过扫码登录 wewe-rss(用于订阅公众号和刷新文章)。token 约 4 天过期,需定期重扫。
- accounts.json:公众号清单配置文件(格式见下文)。
- keywords.json:关键词配置文件(格式见下文)。
目录结构
{工作目录}/
├─ accounts.json # 公众号清单
├─ keywords.json # 关键词配置(命中/排除/地区分流)
├─ wewe-rss/ # wewe-rss 服务
│ └─ apps/server/data/wewe-rss.db
├─ wda/
│ ├─ wewe_collect_db.py # 采集主脚本
│ ├─ build_import_plan_v2.py # 导入计划生成器
│ ├─ date_utils.py # 窗口推算与状态管理
│ ├─ poll_login2.py # 微信读书扫码登录轮询
│ └─ .last_end.txt # 状态文件(上次采集结束日)
└─ 任务记录/
配置文件格式
accounts.json
[
{"name": "公众号名称", "cat": "dual|vendor|competitor", "sub": "子分类名", "url": "https://mp.weixin.qq.com/s/代表文章短链"}
]
cat分类决定文章落入哪个二级文件夹:dual:新闻类号,逐篇判断主题分类(需命中关键词)vendor:厂商号,内容本身即行业相关(仅排除非商业内容)competitor:友商号,同 vendor
sub:子分类名,用于厂商/友商合并(如"华为云"和"华为中国政企"合并为"华为")url:该公众号任意一篇文章的短链,用于 wewe-rss 的 getMpInfo 订阅
keywords.json
{
"hit_keywords": ["信创", "国产", "自主可控", "CPU", "操作系统", ...],
"exclude_keywords": ["党建", "团建", "招聘", "节日", "促销", ...],
"international_keywords": ["美国", "欧盟", "英伟达", "台积电", ...],
"city_keywords": ["湖北", "北京", "广东", "武汉", "成都", ...],
"local_committees": ["湖北省信创工委会", "北京信息技术应用创新工作委员会"]
}
hit_keywords:dual 号须命中其一才采集exclude_keywords:所有号命中即丢弃international_keywords:标题命中则分入"国际动态"city_keywords:标题命中则分入"地市动态"local_committees:账号名在此列表中的,其文章优先归入地市动态
完整工作流程(9 步)
步骤 1:计算采集窗口
python wda/date_utils.py
读取 .last_end.txt 状态文件,输出 DATE_TAG(MMDD)、START、END。窗口为 [last_end+1, 今天]。
步骤 2:前置检查
- 检查 wewe-rss 服务:
curl http://localhost:4000/。若不存活,到wewe-rss/apps/server执行node dist/main重启。 - 确认 IMA MCP 连接器可用:尝试
get_knowledge_base_list。注意:即使 connector 面板显示 disconnected,也先尝试ToolSearch加载mcp__ima-mcp__*工具 schema,再用DeferExecuteTool调用——实测仍可正常执行导入(2026-08 验证)。仅当 ToolSearch 完全找不到工具时,才判定连接器不可用。
步骤 3:采集文章
cd wda && python wewe_collect_db.py <START> <END>
- 直接查询本地 SQLite,按
publish_time窗口 + 标题关键词过滤 + 四分类。 - 输出:
collection.json(结构化结果)、needed_subfolders.json、weekly_report.txt。 - 严禁多进程并发(争用唯一微信读书账号会死锁)。
- 查看
collection.json中的missing_feeds(未订阅账号),在汇报中标注。
步骤 4:定位 IMA 文件夹 ID
get_knowledge_list(knowledge_base_id=KB_ID, limit=50)找当期一级文件夹。get_knowledge_list(folder_id=一级ID)获取二级文件夹。- 若有三级子夹,再下一层获取。
- 将映射写入
wda/folder_map.json:{"国际动态":"folder_xxx", "国内动态":"folder_xxx", "地市动态":"folder_xxx", ...}
步骤 5:拉取已有标题(去重用)
对每个目标文件夹调用 get_knowledge_list(folder_id=xxx, limit=200),取已有文章 title 列表,组织成 ima_existing.json。
步骤 6:生成导入计划
cd wda && python build_import_plan_v2.py --folders-file folder_map.json --existing ima_existing.json
- 从
collection.json读取,按分类分流,按 URL + IMA 已有标题去重。 - 必须通过
--folders-file传入当轮文件夹映射(无内置默认值)。 - 可选
--kb <KB_ID>指定 IMA 知识库 ID(或设置环境变量IMA_KB_ID)。 - 输出
import_plan.json(键为 folder_id,值为文章列表)。
步骤 7:分批导入
读取 import_plan.json,对每个 folder_id 的文章 URL 每批≤10条调用 import_urls。逐批确认 ret_code=0。
步骤 8:收尾
python wda/date_utils.py --commit
更新 .last_end.txt 为 END,窗口自动顺延至下一周期。
步骤 9:汇报
中文汇报:采集窗口、各文件夹新增/总篇数、未订阅账号、token 状态、失败批次。
微信读书登录(token 过期时)
- 确保 wewe-rss 的 AUTH_CODE 已配置(环境变量
WEWE_AUTH或命令行--auth)。 - 运行
python wda/poll_login2.py --auth <AUTH_CODE>。- 脚本自动调用
createLoginUrl生成登录二维码,打印扫码 URL。 - 也支持
--uuid <UUID>直接传入已有 uuid 跳过创建步骤。
- 脚本自动调用
- 用户微信扫码确认。
- 脚本长轮询
platform.getLoginResult,跳过 waiting 中间态,拿到真实 token。 - 调用
account.add落库(POST 裸 JSON{"id":vid, "token":token, "name":"用户名", "status":1})。 - 验证
getMpInfo返回正常。
详细 API 说明见 references/wewe-rss-api.md。
关键注意事项
- 单进程:严禁同时运行多个采集进程,会争用唯一微信读书账号死锁。
- token 有效期:约 4 天,过期后仅能采集已订阅号的历史数据,新文进不了库。建议自动化执行前一天检查 token。
- 标题级过滤:SQLite articles 表无正文 content 字段,仅靠标题过滤。务实取舍:稳定优先,不抓微信正文(容易被限频)。
- IMA 无建文件夹工具:一级/二级/三级文件夹需用户提前在 IMA 手动创建,自动化运行时通过
get_knowledge_list匹配已有 ID。 - IMA URL 级去重:同 URL 不会重复导入,但标题级去重仍不可省略(防止同标题不同 URL 的重复)。
- API 格式陷阱:wewe-rss 的 mutation 接口用 POST + 裸 JSON 对象(不能套 {json:}/{input:});query 接口用 GET
?input={"id":...}。 - refreshArticles 限频:全量刷新容易返回 500(微信读书限频),改逐号刷新可规避。
- connector 断开不等于不可用:MCP 工具 schema 仍可通过 ToolSearch 加载,DeferExecuteTool 调用不受 connector 面板状态阻塞。执行前先尝试,不要因面板显示 disconnected 就跳过导入。
自动化配置
创建双周五 17:00 自动化任务:
- rrule:
FREQ=WEEKLY;INTERVAL=2;BYDAY=FR;BYHOUR=17 - 工作目录指向采集数据目录
- prompt 包含上述 9 步完整流程
- 建议额外创建一次性任务在执行当天上午检查 token
升级版规划(Pay Skill 预留)
本技能预留付费升级路径,个人创作者计费通道上线后直接升级计费:
- 免费版(当前):完整 9 步采集→过滤→导入流程,支持任意公众号、自定义关键词分类、双周自动化定时执行,核心功能完整可用
- 专业版(规划中):
- 多账号并行采集(突破单微信读书账号限制)
- 正文级智能过滤(不仅靠标题,支持摘要/正文语义匹配)
- 采集数据看板与趋势分析(可视化各分类篇数/来源/关键词热度)
- 优先技术支持与定制化关键词配置
免费版永久可用;专业版仅增值,不阉割免费功能。
Scan to join WeChat group