无尘阁日记

无尘阁日记

我现在要实现一个skills,抓取指定公众号的10万+文章,请推荐一个最佳实现方案。
2026-04-06

可以做,但我建议你把这件事分成两种场景看:

一、先说结论

最佳方案

最佳实现方案不是“硬爬指定公众号”本身,而是:

“授权优先 + 检索召回 + 文章解析 + 热度判定 + 去重入库”的混合式 skill。

也就是:

场景 A:抓你自己的号,或对方明确授权给你

公众号官方接口链路,这是最稳的。公众号开发体系本身支持 access_token、草稿箱、发布能力等接口,适合拿到你自己账号内的文章与发布记录。公开资料也显示,草稿箱列表、发布能力中的“获取成功发布列表”等能力是这条链路的核心。(阿里云帮助中心)

场景 B:抓别人的号,而且你没有后台权限

不要把 skill 设计成“模拟登录公众号后台、绕限制硬抓”。更稳的做法是把它做成:

“指定公众号 → 搜索引擎/第三方索引召回候选文章 → 解析原文页 → 判断是否 10 万+ → 入库”

因为公开可用的索引层目前仍存在,例如搜狗微信搜索仍在收录公众号和文章内容。(weixin.sogou.com)


二、为什么这是最佳方案

1. 直接“硬爬公众号历史列表”最不稳

公众号文章天然不是一个为第三方批量抓取而开放的公开内容 API。你如果没有账号后台权限,想长期稳定地直接抓“某个指定号的全部历史文章列表”,往往会遇到这些问题:

1)没有官方开放给“任意第三方公众号全文历史抓取”的通用接口

官方接口重点是管理你自己或已授权账号的素材、草稿、发布等,而不是让你随便拉别人公众号的全部文章历史。(阿里云帮助中心)

2)反爬强,稳定性差

今天能跑,明天可能就挂。你如果把 skill 的核心押在“浏览器模拟 + 反反爬细节”上,后续维护成本会非常高。

3)合规风险高

尤其是你如果后面还想做成对外可卖、可复用的 skill,最好不要把底层建立在灰色抓取链路上。


三、我给你的推荐架构

方案名:公众号 10 万+ 文章发现 Skill

这个 skill 不要叫“爬虫”,要叫:

“公众号爆文发现与归档 Skill”

这样定位更稳,也更好卖。


第 1 层:输入层

用户输入:

  • 公众号名称

  • 时间范围

  • 关键词(可选)

  • 只要 10 万+ / 近似爆文 / 全部文章

  • 输出条数上限

示例:

{
  "account_name": "某某公众号",
  "date_from": "2025-01-01",
  "date_to": "2026-04-01",
  "keywords": ["AI", "提示词", "自动化"],
  "only_hot": true,
  "limit": 50
}

第 2 层:召回层

最推荐:多源召回,不押单点

你不要只依赖一个来源,而是做成 3 路召回:

路线 A:公开搜索索引召回

通过搜狗微信搜索这类公开索引,按“公众号名 + 关键词”召回候选文章。搜狗微信搜索目前仍提供公众号与文章内容搜索入口。(weixin.sogou.com)

路线 B:网页搜索补召回

普通搜索引擎也能补到一部分 site:mp.weixin.qq.com 的文章页。

路线 C:授权数据源

如果用户提供的是自有公众号,直接走授权接口,读取草稿箱、已发布记录、素材等。公开资料显示,公众号开发链路里确有草稿列表与发布记录相关能力。(阿里云帮助中心)


第 3 层:正文解析层

拿到候选文章链接后,做统一解析:

抽取字段:

  • 标题

  • 作者

  • 公众号名

  • 发布时间

  • 原文 URL

  • 封面图

  • 摘要

  • 正文纯文本

  • 标签词

  • 是否原创

  • 是否含转载声明

  • 文章指纹 hash

这里要注意:

不要把 parser 和 source 强绑定

不同来源可能给你:

  • 搜索结果跳转链接

  • 原始 mp.weixin.qq.com/s?...

  • 镜像页

  • 第三方 API 返回的 markdown/html

所以解析器要做成适配器模式


第 4 层:10 万+ 判定层

这是关键。

“10 万+”这件事,很多时候你拿不到官方精确阅读数。所以 skill 最好设计成两档结果:

档位 1:精确判定

仅在你有可靠热度字段来源时输出:

  • is_100k_plus = true

  • confidence = high

档位 2:近似判定

没有精确阅读数时,用代理信号判断:

  • 搜索结果热度标签

  • 第三方数据源返回的阅读等级

  • 转发扩散量

  • 收藏/在看/评论线索

  • 被多次转载引用

然后输出:

  • is_100k_plus = likely_true

  • confidence = medium

也就是说,不要把产品设计成“假装自己一定知道真实阅读数”,而要设计成:

“精确爆文识别 + 概率型爆文发现”

这比纯技术导向更产品化。


四、最佳落地技术方案

我最推荐的实现方式

Skill 结构

skills/
  wechat_hot_article_finder/
    skill.yaml
    README.md
    src/
      main.py
      sources/
        sogou_weixin.py
        web_search.py
        official_account_api.py
      parsers/
        mp_article_parser.py
      services/
        recall_service.py
        dedupe_service.py
        scoring_service.py
        storage_service.py
      models/
        article.py
        query.py

核心流水线

用户指定公众号
   ↓
标准化公众号名称
   ↓
多源召回候选文章
   ↓
文章链接清洗与去重
   ↓
抓取并解析正文
   ↓
热度判定(精确 / 近似)
   ↓
按时间、热度、相关性排序
   ↓
输出结构化结果

最关键的 4 个模块

1)RecallService

负责多源召回,不直接依赖某一个站点。

2)MpArticleParser

只负责把文章页变成结构化数据。

3)ScoringService

负责判断:

  • 是否是指定公众号

  • 是否属于目标时间段

  • 是否接近 10 万+

  • 是否与关键词相关

4)StorageService

存:

  • 原始 HTML

  • 正文纯文本

  • 元数据

  • 指纹 hash

  • 抓取时间

  • 来源渠道

  • 置信度


五、我建议你这样定义输出

输出不要只给文章链接,应该给成一个“可继续被 AI 调用”的结构:

{
  "account_name": "某某公众号",
  "query_time": "2026-04-06T10:00:00+09:00",
  "items": [
    {
      "title": "文章标题",
      "publish_time": "2026-03-12 08:30:00",
      "author": "某某",
      "source_url": "https://mp.weixin.qq.com/...",
      "content_text": "正文摘要或全文",
      "is_100k_plus": true,
      "confidence": "high",
      "evidence": ["来源热度标记", "第三方统计结果", "搜索热度信号"],
      "fingerprint": "sha256:xxxxx"
    }
  ]
}

这样你后面就可以继续接第二个 skill:

  • 爆文标题分析

  • 爆文结构拆解

  • 爆文改写

  • 爆文选题提炼

  • 爆文情绪与传播机制归因


六、如果你问我“到底选哪一条路最优”

我给你的最终建议是:

方案一:商业可用、最稳

做“指定公众号爆文发现 Skill”,底层采用“搜索索引召回 + 原文解析 + 热度判定”。

适合:

  • 分析竞争对手

  • 做内容选题库

  • 做爆文归档

  • 做行业情报监测

这是我认为你当前最应该做的版本。


方案二:权限内最强

如果抓的是你自己的公众号,就加上官方授权接口通道。

这样你既能拿:

  • 草稿

  • 发布记录

  • 已授权素材

又能把外部公开爆文一起统一归档。官方开发链路本身支持 access_token、草稿箱、发布能力等能力,适合账号内内容管理。(阿里云帮助中心)


方案三:不推荐作为主方案

浏览器自动化硬抓对方公众号历史页。

原因就一句话:

能跑,但不适合做成长期可复用的 skills 产品。


七、从产品经理角度,我建议你这样取舍

最优先做 MVP

第一版就做这 5 个功能:

1. 指定公众号

2. 指定时间范围

3. 召回相关文章

4. 识别疑似 10 万+

5. 输出结构化爆文清单

先别一上来做:

  • 反爬对抗

  • 登录态复用

  • 批量几百号监控

  • 全平台爆文聚类

  • 多线程大规模采集

因为那会把项目迅速做重。


八、你这个 skill 的最佳描述文案

你可以直接这么定义:

这是一个“公众号爆文发现与归档”Skill。
输入指定公众号名称、时间范围和关键词后,Skill 会从公开可访问的索引与授权数据源中召回文章候选集,解析原文内容,识别其中的 10 万+ 或高热度文章,并输出结构化爆文清单,供后续选题分析、内容拆解、竞品监测和知识库归档使用。

九、我给你的最终结论

最佳实现方案一句话版

如果是自有号:官方授权接口为主。
如果是他人号:搜索索引召回 + 原文解析 + 热度判定为主。
不要把“硬爬后台或反爬对抗”做成主架构。

这是目前在稳定性、可维护性、可产品化、合规性之间最平衡的方案。(weixin.sogou.com)

你要的话,我下一步可以直接给你:
1)这个 skill 的完整目录结构
2)skill.yaml
3)Python 版 MVP 代码骨架
4)OpenClaw 可直接接入的实现说明