# wechat-public-reader **Repository Path**: woipanda/wechat-public-reader ## Basic Information - **Project Name**: wechat-public-reader - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-27 - **Last Updated**: 2026-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wechat-public-reader 一个给 OpenClaw 用的微信公众号文章读取 Skill。 它的目标不是让用户学习 Gitee、JSON、article_id 或数据路径, 而是让用户直接用自然语言完成这些事: - 看这个知识库里有哪些公众号 - 查看某个公众号最近写了什么 - 按关键词搜索相关文章 - 打开一篇文章并总结 - 把某个主题聚合成专题材料 - 把结果导出成 Markdown ## 它适合什么场景 如果用户会这样说,这个 skill 就适合: - 小猪小猴最近 5 篇文章 - 搜索 OPC 相关文章 - 打开第一篇并总结 - 围绕 AI Agent 整理一份专题 - 把小猪小猴里关于 OPC 的文章聚合成研究笔记 - 把结果保存成 Markdown ## 核心能力 ### 1. 发现类 - 列出已收录公众号 - 查看知识库更新时间 - 查看总文章数 ### 2. 最新文章类 - 看全库最近文章 - 看某个公众号最近 N 篇文章 - **注意:最近 N 篇 = 按 `published_at` 倒序取前 N 条** ### 3. 搜索类 - 按关键词全库搜索 - 按关键词 + 指定公众号搜索 - 默认按发布时间倒序返回结果 ### 4. 阅读类 - 读取单篇文章详情 - 使用 `content_text` 做总结 - 返回标题、公众号、发布时间、原文链接 ### 5. 主题聚合类(topic-digest) 这是它最重要的能力之一。 用户真正要的往往不是“找到几篇文章”,而是: **给定一个主题,把相关文章聚合成一份可读的专题材料。** 例如: - 聚合一下 OPC 这个主题 - 围绕 AI Agent 整理一份专题 - 按时间线整理 OPC 的演变 - 提炼某个主题下的关键词、人物、方法论 ### 6. 导出类 - 把选中的文章导出成 Markdown - 把检索结果整理成资料包底稿 ## 数据来源 默认知识库根地址: ```text https://gitee.com/woipanda/wechat-knowledge/raw/master ``` 这个知识库保存的是: - 文章元数据 - 原文链接 - 摘要 - 抽取后的正文纯文本 `content_text` **不是**: - 公众号完整 HTML 镜像 - 原始排版 - 图片与评论区的完整还原 - 实时后台数据 所以正确理解应该是: > 这个 skill 读取的是“可用于搜索、阅读、总结、聚合分析的正文纯文本快照”, > 不是公众号页面的完整原文还原版。 ## 一个重要兼容处理 Gitee 的 raw 地址在部分文件上会返回 `HTTP 451`。 这个 skill 已经内置兜底: - 优先尝试 raw URL - 失败后自动回退到 **Gitee API v5 + base64 解码** 用户侧不需要感知这层细节。 ## 目录结构 ```text wechat-public-reader/ ├── SKILL.md ├── scripts/ │ └── wechat_public_query.py └── agents/ └── openai.yaml ``` ## 安装方式 复制到 OpenClaw skills 目录: ```bash cp -r wechat-public-reader /root/.openclaw/skills/wechat-public-reader ``` ## 脚本能力 ```bash python3 scripts/wechat_public_query.py accounts python3 scripts/wechat_public_query.py manifest python3 scripts/wechat_public_query.py latest --limit 10 python3 scripts/wechat_public_query.py account --account "小猪小猴" --limit 10 python3 scripts/wechat_public_query.py search --query "OPC" --limit 10 python3 scripts/wechat_public_query.py search --query "OPC" --account "小猪小猴" --limit 10 python3 scripts/wechat_public_query.py article --id "3269630691-2247485136_1" python3 scripts/wechat_public_query.py export-markdown --ids "id1,id2" --output "/tmp/opc_articles.md" python3 scripts/wechat_public_query.py topic-digest --query "OPC" --limit 10 ``` ## 链接策略(很重要) 这个 skill 采用 **“真实源链接直存 / 直出法”**: - 真正给用户点击的入口,**一律使用源数据里的完整 `url`** - `article_id` 只用于识别、去重、读取单篇文章 JSON - **不根据 `article_id` 自己拼链接** - **不为了好看截断 URL 再重新拼接** - 如果源数据里没有完整 `url`,就不要伪造“可点击原文链接” 这条规则和你说的小红书策略是一致的: > ID 只负责识别;真正点击入口,必须保存并输出完整原始链接。 ## 输出规范建议 如果你在飞书里展示结果,建议: - **不要用截断过的 Markdown 链接文本拼 URL** - 优先直接给完整 URL - 或用飞书原生富文本 / post 链接 - 每条结果尽量包含: - 标题 - 公众号 - 发布时间 - 原文链接 例如: ```text 1. 《6人年营收4000万,丑拖鞋里的OPC真相》 公众号:小猪小猴 发布时间:2026-04-27 原文链接:https://mp.weixin.qq.com/s/IwkIaPIriehotWh6l_7djQ ``` ## 当前版本 - 当前版本:`v1.1.0` - 已支持:搜索、读取、导出、topic-digest - 已修复:最近文章排序语义不清的问题