# 怎么拿到一个公众号的历史文章和全文

> 按名称找到公众号，从新到旧翻它的历史文章，再给需要的文章拉全文。不用扫码登录：参数、花费和代码。

网页版：https://okdata.online/zh/guides/wechat-official-account-articles/

按顺序用四个接口：公众号搜索把名称换成原始 ID（gh_…），公众号历史文章每次列 10 篇，公众号文章互动数据逐篇查阅读和点赞（列表里一般不带），公众号文章详情拿全文。下面的示例一共 59 次调用，搜索按满页计，花费 $1.74；失败的调用不扣费。

更新于 2026-11-12

要做的事：你在关注某个竞品、某家行业媒体或某个监管部门的公众号，想把它最近的文章整理成能用的形式：标题、日期、阅读数放进一张表，重要的几篇拿到完整正文。在微信里，这意味着拿着手机一直往下翻历史消息。这里是依次用四个接口：找到账号，列出文章，逐篇查数字，把要的那几篇拉全文。最后得到一张带阅读和点赞的文章列表 CSV，每篇全文存一个文本文件。

不需要微信账号，不用扫码，也不用 Cookie。每次调用就是带着 key 发一个 HTTPS 请求。

## 分步操作

### 第一步：找到公众号

[公众号搜索](https://okdata.online/zh/apis/wechat_mp/accounts/search/)接收 `query`，填公众号名称或关键词。每个结果有 `id`（原始 ID，`gh_` 加 12 位字符）、`username`（微信号，有的话）、`name`、`avatar_url` 和 `followers`。加上 `view=full`，`ext` 里还有 `biz`（公众号链接里的 `__biz` 值）、`last_published_at` 和 `articles_per_week`，用来区分正主和名字相近的号。

```bash
curl -G "https://api.okdata.online/v1/wechat_mp/accounts/search" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'query=极客公园' \
  --data-urlencode 'view=full' \
  --data-urlencode 'fields=id,name,username,ext.last_published_at'
```

这是唯一按条计费的接口：每返回一个公众号 $0.058，一整页 10 个最多 $0.58。用完整的公众号名称搜，通常只返回一个或几个结果，花费只是满页的零头；用宽泛的词搜，就会返回满满一页。搜索执行期间会先从余额里冻结满页的金额，结束后马上退回没用到的部分。余额不够一整页时，第一页只返回余额能付的条数。

留下 `id` 之前先核对 `name`，排第一的不一定是你要的那个。如果已经知道 gh_ ID 或微信号，这一步可以直接跳过。手工免费查的办法见[怎么查公众号的原始 ID](https://okdata.online/zh/answers/find-wechat-official-account-id/)。

### 第二步：列出历史文章

[公众号历史文章](https://okdata.online/zh/apis/wechat_mp/accounts/articles/list/)的 `id` 传第一步拿到的 gh_ ID 或微信号，每次返回 10 篇，从新到旧，每次 $0.02。每篇有 `title`、`url`（mp.weixin.qq.com 链接）、`published_at`、摘要 `text` 和封面 `images`。加 `view=full` 时，`ext.position` 表示这篇在当天推送里的位置，1 是头条。列表里一般不带阅读和点赞：`metrics.views` 和 `metrics.likes` 返回 null，由第三步补上。

```bash
curl -G "https://api.okdata.online/v1/wechat_mp/accounts/articles/list" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'id=gh_7c2a9e41b05d'
```

要更早的文章，就把 `page.next_cursor` 原样作为 `cursor` 传回去，直到 `page.has_more` 为 `false`。翻 5 页大约是最近 50 篇。

### 第三步：查阅读和点赞

[公众号文章互动数据](https://okdata.online/zh/apis/wechat_mp/articles/metrics/)的 `url` 传一篇文章的链接，返回这篇此刻的数字，每次 $0.02：`metrics.views`（阅读）、`metrics.likes`（点赞）、`metrics.shares`（分享）、`metrics.favorites`（收藏）和 `metrics.comments`（评论）。加 `view=full` 时，`ext.recommends` 是在看数。它只返回数字，标题和链接在列表里已经有了。

```bash
curl -G "https://api.okdata.online/v1/wechat_mp/articles/metrics" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'url=https://mp.weixin.qq.com/s/Qm3xK7pVd2LrT9wYfZc1aB'
```

这一步是一篇一次调用，钱主要花在这里。要给最近 50 篇排出阅读高低，50 篇都得查。如果只比头条，列表加 `view=full`，只对 `ext.position` 为 1 的文章查互动数据。

### 第四步：拉全文

[公众号文章详情](https://okdata.online/zh/apis/wechat_mp/articles/get/)的 `url` 传文章链接，返回正文，每次 $0.02。`text` 是纯文本，段落和小标题各占一行，正文里的图片去掉了，封面保留在 `images` 里。同时返回 `title`、`published_at` 和 `author`（公众号的 gh_ ID 和名称）。加 `view=full` 时，`ext.author_byline` 是标题下署名的作者，`ext.copyright` 和 `ext.source_url` 可以帮你识别转载。

```bash
curl -G "https://api.okdata.online/v1/wechat_mp/articles/get" \
  -H "Authorization: Bearer $OKDATA_API_KEY" \
  --data-urlencode 'url=https://mp.weixin.qq.com/s/Qm3xK7pVd2LrT9wYfZc1aB'
```

详情里的阅读和点赞也是 null，这两个数从文章互动数据接口取。

### 第五步：用 Python 串起来

脚本按完整名称找到公众号，翻 5 页历史文章，逐篇查阅读和点赞，列表存成 CSV，再把阅读最高的 3 篇拉全文、各存一个文本文件。

```python
import csv
import os
import re
import requests

API = "https://api.okdata.online"
HEADERS = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
NAME = "极客公园"
HISTORY_PAGES = 5  # 每页 10 篇，一次调用
FULL_TEXT = 3      # 拉全文的篇数


def get(path, **params):
    body = requests.get(API + path, headers=HEADERS, params=params, timeout=90).json()
    if body["code"] != "ok":
        raise RuntimeError(f"{body['code']}: {body['message']} (charged: {body['charged']})")
    return body


accounts = get("/v1/wechat_mp/accounts/search", query=NAME)["data"]["items"]
account = next((a for a in accounts if a["name"] == NAME), None)
if account is None:
    raise SystemExit(f"no exact match; got {[a['name'] for a in accounts]}")

articles, cursor = [], None
for _ in range(HISTORY_PAGES):
    body = get("/v1/wechat_mp/accounts/articles/list", id=account["id"], **({"cursor": cursor} if cursor else {}))
    articles += body["data"]["items"]
    if not body["page"]["has_more"]:
        break
    cursor = body["page"]["next_cursor"]

# 列表里一般不带阅读和点赞：每篇调一次互动数据补上。
stats = {a["url"]: get("/v1/wechat_mp/articles/metrics", url=a["url"])["data"]["item"]["metrics"] for a in articles}

with open("articles.csv", "w", newline="", encoding="utf-8-sig") as f:
    out = csv.writer(f)
    out.writerow(["published_at", "title", "reads", "likes", "url"])
    for a in articles:
        out.writerow([a["published_at"], a["title"], stats[a["url"]]["views"], stats[a["url"]]["likes"], a["url"]])

for a in sorted(articles, key=lambda a: stats[a["url"]]["views"] or 0, reverse=True)[:FULL_TEXT]:
    full = get("/v1/wechat_mp/articles/get", url=a["url"])["data"]["item"]
    with open(re.sub(r"[^\w-]", "_", full["id"]) + ".txt", "w", encoding="utf-8") as f:
        f.write(f"{full['title']}\n{full['published_at']}\n{full['url']}\n\n{full['text']}\n")
```

50 次互动数据调用占了 $1.00。不查数字也行，按日期排序取最新的几篇，搜索之外只要 $0.16。一个 500 篇文章的号全部查阅读点赞、拉全文，搜索之外是 $21.00。

## 注意事项

- **阅读和点赞从互动数据接口来。** 历史文章列表里的 `metrics.views` 和 `metrics.likes` 一般是 null，`meta.unavailable` 里会列出来，当成未知，别当成 0。互动数据是快照，阅读数会连涨好几天，比较时选发布时长差不多的文章。
- **粉丝数是估算。** 搜索结果里的 `followers` 来自第三方数据库，不是微信官方数字，`ext.followers_note` 里有标注。
- **删掉的不收钱。** 列出来之后又被删除的文章返回 `not_found`，不扣费。
- **重试不会重复扣费。** 每次调用带一个 `Idempotency-Key` 请求头。24 小时内同样的请求配同样的 key，会直接拿回上次的结果，`meta.replayed` 为 `true`，不再扣费。
- **试用额度。** 新 key 的 $0.10 试用额度只够搜索满页的一小部分，第一次搜索返回的公众号可能不到一整页。可以直接从已知的微信号开始，或者先充值。
- **版权。** 文章归原作者所有。用于研究和监测没问题，引用时保留原文链接。

如果要导出一个号的全部文章而不只是最近的，看[怎么导出公众号的全部文章](https://okdata.online/zh/answers/export-wechat-official-account-articles/)。要长期盯几个号的更新，看[怎么监测竞品公众号](https://okdata.online/zh/answers/monitor-competitor-wechat-official-accounts/)。

## 示例花费

按名称搜一次“极客公园”，翻 5 页历史文章（约 50 篇），逐篇查这 50 篇的阅读和点赞，再拉阅读最高的 3 篇全文

| 接口 | 调用次数 | 单价 | 小计 |
|---|---|---|---|
| [公众号搜索](https://okdata.online/zh/apis/wechat_mp/accounts/search/) | 1 | $0.058 | $0.58 |
| [公众号历史文章](https://okdata.online/zh/apis/wechat_mp/accounts/articles/list/) | 5 | $0.02 | $0.10 |
| [公众号文章互动数据](https://okdata.online/zh/apis/wechat_mp/articles/metrics/) | 50 | $0.02 | $1.00 |
| [公众号文章详情](https://okdata.online/zh/apis/wechat_mp/articles/get/) | 3 | $0.02 | $0.06 |
| 合计 | 59 |  | $1.74 |

按本页生成时的价格计算。失败的调用不扣费。

## 在你的 AI 里用（MCP）

先接好 MCP 服务，然后直接说你要什么。智能体会自己找到这些接口、看清价格，再用你的余额调用。

可以这样说：找到公众号“极客公园”，列出它最近 50 篇文章的标题、日期和阅读数，再把阅读最高的 3 篇全文给我。

```json
{
  "endpoint": "wechat_mp.accounts.search",
  "params": {
    "query": "36氪"
  },
  "idempotency_key": "<新的 UUID>"
}
```

MCP：`https://api.okdata.online/mcp`

## 本指南用到的接口

- [公众号搜索](https://okdata.online/zh/apis/wechat_mp/accounts/search/) `wechat_mp.accounts.search`：$0.058/条 · 每次最多 $0.58
- [公众号历史文章](https://okdata.online/zh/apis/wechat_mp/accounts/articles/list/) `wechat_mp.accounts.articles.list`：$0.02/次 · 每页约 10 篇文章
- [公众号文章互动数据](https://okdata.online/zh/apis/wechat_mp/articles/metrics/) `wechat_mp.articles.metrics`：$0.02/次
- [公众号文章详情](https://okdata.online/zh/apis/wechat_mp/articles/get/) `wechat_mp.articles.get`：$0.02/次

## 更多微信公众号内容

- [微信公众号 API](https://okdata.online/zh/apis/wechat_mp/)
- [公众号 API Python 教程：把文章转成 Markdown 给 RAG 用（2026）](https://okdata.online/zh/guides/wechat-official-account-api-python/)
- [怎么不登录导出一个公众号的全部历史文章？](https://okdata.online/zh/answers/export-wechat-official-account-articles/)
- [怎么监控竞品公众号每天发了什么？](https://okdata.online/zh/answers/monitor-competitor-wechat-official-accounts/)
- [公众号文章数据 API 多少钱？](https://okdata.online/zh/answers/wechat-official-account-api-price/)
- [有没有能让 AI 读公众号文章的 MCP？](https://okdata.online/zh/answers/wechat-official-account-mcp-server/)
- [为什么 ChatGPT、Claude 打不开公众号文章链接？怎么让 AI 读到全文？](https://okdata.online/zh/answers/ai-read-wechat-article-link/)
- [想在公众号投放广告，怎么找到某个领域的号？](https://okdata.online/zh/answers/find-wechat-official-accounts-by-topic/)
- [平台官方 API 和第三方数据接口怎么选（2026）](https://okdata.online/zh/compare/official-apis-vs-data-apis/)
- [社媒数据 MCP 服务器：自己部署还是用托管的](https://okdata.online/zh/compare/social-media-data-mcp-servers/)
- [公众号文章和阅读数接口有哪些？官方接口、第三方 API、开源工具、数据平台 4 类方案怎么选（2026）](https://okdata.online/zh/compare/wechat-article-data-apis/)
- [获取微信公众号数据的几种办法：官方接口、RSS 桥接和数据接口](https://okdata.online/zh/compare/wechat-official-account-data-apis/)
- [让 AI 读小红书、抖音、公众号的 MCP 有哪些？开源自部署、浏览器自动化、托管 3 类怎么选（Claude、Cursor、豆包）](https://okdata.online/zh/compare/xiaohongshu-douyin-wechat-mcp-servers/)
- [账号作品列表接口](https://okdata.online/zh/roles/accounts-posts-list/)
