公众号文章总结入 ima 技能
用途
输入特定的微信公众号名称与一个时间范围,自动检索该号在指定时段内发布的文章,生成一篇结构化总结(含每篇要点与整体趋势),并写入用户指定的 ima 知识库,便于长期沉淀与复用。
何时使用
- 用户说「总结某公众号最近 N 天的文章」「把 XX 号 9-10 月的文章整理成报告存到 ima」「监控 XX 公众号并生成月报」等。
- 需要把某个公众号的周期性内容沉淀到个人知识库(ima)做长期复用或团队协作。
输入参数
account(必填):目标公众号名称,作为搜索关键词。range(必填,二选一):- 相对:最近 N 天(如「最近 30 天」「过去一周」)。
- 绝对:起止日期
YYYY-MM-DD ~ YYYY-MM-DD。 knowledge_base(可选):目标 ima 知识库名称或 ID;未提供时通过get_knowledge_base_list列出并请用户选择。output_path(可选):本地总结文件路径,默认周报_<account>_<range>.md。
工作流程
1. 检索文章
使用 wechat-article-search 技能(搜索脚本位于 ~/.workbuddy/skills/wechat-article-search/scripts/search_wechat.js)按公众号名称检索:
node ~/.workbuddy/skills/wechat-article-search/scripts/search_wechat.js "<account>" -n 50 -o /tmp/wx_<account>.json
- 若用户给的是「最近 N 天」,追加
-d N(如-d 30),由客户端按发布时间过滤。 - 能力边界:底层是搜狗微信搜索,按相关度返回,无法枚举该号的完整发文时间线;结果可能不完整,必要时如实告知用户,不要外推为「全部文章」。
- 若结果为空,换更通用的关键词重试一次;仍为空则如实说明,不编造。
2. 按绝对时间范围过滤
若用户给的是绝对日期范围(非「最近 N 天」),运行本技能自带的过滤脚本:
python3 ~/.workbuddy/skills/wechat-account-summarizer/scripts/filter_by_range.py \
/tmp/wx_<account>.json --start 2026-09-01 --end 2026-10-31 -o /tmp/wx_filtered.json
- 解析发布时间后保留落在
[start, end]内的文章;无解析发布时间的条目会被跳过(与search_wechat.js的-d行为一致)。 - 相对「最近 N 天」已由
-d处理,可跳过此步。
3. 生成总结文章
读取过滤后的文章(标题、概要、发布时间、来源、链接)。若需要更深入的要点,可对重点文章(如前 5-10 篇)用 WebFetch 补全全文后再归纳。
按以下结构产出 Markdown 总结(写入本地 output_path):
- 元信息:公众号名称、时间范围、命中文章数、检索时间。
- 概览:该时段内容主题与整体走向(2-4 句)。
- 文章清单:每篇含标题、发布日期、核心要点(2-3 句)、原文链接。
- 关键结论 / 趋势:跨文章归纳 3-5 条。
- 待跟进问题(可选):值得进一步深挖的方向。
4. 写入 ima 知识库
- 确定
knowledge_base_id:用户已给则直接用;否则调用get_knowledge_base_list列出并请用户选择目标知识库。 - 调用
create_media(apply_upload_mode固定1,content_type=text/markdown,file_name=<总结文件名>.md,file_size=本地文件字节数,knowledge_base_id)。保存返回的media_id与upload_url(含presigned_url、auth_headers、url_expired_ts)。 - 用 Bash 将本地 md 文件以 HTTP PUT 直传到
upload_url.presigned_url,必须原样携带auth_headers中的全部 header(含 Content-Type 与 Content-Length),且Content-Length须与第 2 步传入的file_size完全一致,否则签名校验失败:
curl -X PUT "<presigned_url>" \
-H "Content-Type: text/markdown" \
-H "Content-Length: <file_size>" \
--data-binary @周报_<account>_<range>.md
- 调用
add_knowledge(knowledge_base_id+media_id)将文章正式入库。 - 向用户汇报:已入库的知识库名称、文章标题、可用链接(如有)。
注意事项
- 该搜索工具仅用于学习研究,遵守网站条款,勿规模化爬取或商用;过度使用可能触发限流/IP 封禁。
- 结果不含阅读量、点赞等互动指标;时间窗筛选为客户端近似,可能漏掉无解析发布时间的文章。
- ima 上传有文件大小上限,超限时拆分内容或改用
import_urls直接导入原文链接列表(最多 10 个)。 - 写入 ima 是外部知识库动作,完成后务必向用户明确确认已入库位置。