开发者 · 微信公众号
公众号文章内容获取 API
简单说:POST 一条公众号文章的短链接(mp.weixin.qq.com/s/…),拿回一个 JSON:标题、公众号名、发布日期、全文正文、每张图片的描述和图上的文字、要点(每条附原文引用)、「阅读原文」和二维码指向的地址。不需要微信登录;6 张图以内 1 积分(约 ¥0.144)。 一次一条,或用批量接口一次一批;不读公众号的历史文章列表。
Python
一个函数读一篇
这段代码 2026-11-09 对线上接口原样跑通(只把链接换成一条已经有人读过的,0 积分)。长文章会先回 202,用同一个 jobId 取结果,不要重新提交,同一个任务只扣一次。
import os, time, requests
API = "https://linkdigest.dev/api/v1/digest"
H = {"Authorization": f"Bearer {os.environ['LINKDIGEST_API_KEY']}"} # 控制台 → API 密钥
def read_article(url):
r = requests.post(API, headers=H, json={"url": url, "format": "json"}, timeout=60)
while r.status_code == 202: # 图多的长文章先回 202 和 jobId,用同一个 jobId 取
time.sleep(5)
r = requests.get(f"{API}/{r.json()['jobId']}?wait=20", headers=H, timeout=60)
r.raise_for_status() # 402 积分不够 · 422 读不了(已删除、付费、验证码页):都不扣积分
return r.json()
a = read_article("https://mp.weixin.qq.com/s/XXXXXXXX") # 「⋯ → 复制链接」得到的短链接
print(a["title"], "·", a["author"], "·", a["posted_at"], "·", a["credits"], "积分")
print(a["caption"][:200]) # 正文,Markdown(### 小标题、列表、[文字](网址))
for i, img in enumerate(a["images"], 1): # 每张图:画面描述 + 图上的文字
print(i, img["ocr"][:60])
for link in a["links"]: # 阅读原文、正文里写出的网址、二维码指向的地址
print(link.get("label"), link["url"])返回字段
哪些来自文章,哪些是模型写的
title · author · posted_at
文章标题、公众号名、发布日期(来自文章页本身)。
caption
全文正文,Markdown,单篇最多两万字:小标题带 ###,列表、引用照原样,超链接写成 [文字](网址),表格每行「A | B」。颜色、字号和表格样式不保留。
images[].ocr
每张图上的文字,原样,按文章里的顺序。长图、截图、数据表里的内容在这里。
images[].description
模型写的画面描述,有时是英文;要中文加 translate_to: "zh",译文另放在 translation 里,原文不动。
links
「阅读原文」、正文里写出的网址、图片里二维码指向的地址;只列出,不打开。收款码和拉群码会标明。
key_points · key_point_support
模型写的要点;每条附一句原文引用,由代码逐字核对,verified 为 false 的请自己对照。
coverage · credits · cached
读了几张图、漏了什么;这次扣了几个积分;是不是别人读过的缓存(缓存 0 积分)。
一篇 16 张图的真实返回(2026-10-06 线上读取:正文 4,683 字,16 张图全部读出,3 积分)见公众号文章提取;要整批存成 .md 拖进 Obsidian、Notion、飞书,见公众号文章转 Markdown。
curl · MCP
不写 Python 也行
curl -X POST https://linkdigest.dev/api/v1/digest \
-H "Authorization: Bearer ld_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://mp.weixin.qq.com/s/XXXXXXXX", "format": "json"}'这条链接是首页示例之一,已经被读过并缓存,所以会直接返回 200, 不扣额度。换成你自己的链接:图文和短帖直接返回;需要下载并转写的视频返回 202 和一个 jobId,用同一个 key 去 GET /api/v1/digest/JOB_ID 取结果。
MCP · Claude Code(Cursor、Trae、Cherry Studio 见文档)
claude mcp add --transport http linkdigest \ https://linkdigest.dev/mcp \ --header "Authorization: Bearer ld_live_..."
API Key 在 https://linkdigest.dev/app/keys 创建(形如 ld_live_…)。 REST、MCP 各客户端的配置、轮询和返回字段见 中文 API / MCP 文档。
价格
按图片数计费
| 一条内容 | 积分 | 折合人民币 |
|---|---|---|
| 6 张图以内 | 1 | ¥0.144 |
| 16 张图 | 3 | ¥0.432 |
| 30 张图 | 5 | ¥0.72 |
| 60 张图(单篇上限) | 10 | ¥1.44 |
| 加中文译文(图片描述) | 2 | ¥0.288 |
按加量包折算:$5 = 250 积分,支付宝按人民币结算 ¥36,每积分 ¥0.144。注册送 10 积分(一次性)。 任何人读过的链接再读 0 积分;读不出内容不收费。
常见问题
- 能按公众号名称获取历史文章列表吗?
- 不能,也不做。LinkDigest 一次读一条你给的公开文章链接,不读某个公众号的历史发文列表,不搜索文章,也不读评论、阅读数和在看数。要读一批,就把每篇的短链接放进批量接口。
- 需要微信登录、cookie 或者公众号后台权限吗?
- 都不需要。只读任何人都能打开的公开文章页;已删除、被屏蔽、需要登录或付费才能看的文章读不了,返回原因、不扣积分。
- 为什么长链接读不了?
- 长链接(s?__biz=…&mid=…&idx=…&sn=…)从十月初起只会拿到微信的验证码页,去掉 poc_token 再请求也一样;我们不处理验证码,所以这类链接直接返回读不到、不扣积分。在微信里打开文章 → 右上角「⋯」→「复制链接」,拿到的 mp.weixin.qq.com/s/… 短链接一直能读。
- 一次能读多少篇?
- 用 POST /api/v1/digest/batch:免费账号一批 10 条,Dev 月付 50 条,Studio 200 条;轮询到 done,再加 ?include=digests 一次取回全部。整批存成 Markdown 的写法见「公众号文章转 Markdown」页。
- 公众号文章 API 多少钱一次?
- 按 ¥36 / 250 积分折算,调用一次的价钱:一篇文章(6 张图以内) ≈ ¥0.144/次,16 张图的文章 ≈ ¥0.432/次。任何人读过的链接再读 0 元,读不出来不扣。按图片数算:基础 1 积分含 6 张图,每多 6 张 +1,单篇最多读 60 张。16 张图的文章 3 积分。任何人读过的同一篇文章再读 0 积分;读不出来不扣。注册送 10 积分,之后支付宝 ¥9.9 买 50 积分或 ¥36 买 250 积分。
- 文章里的视频、音频呢?
- 目前不转写,只读正文和图片;coverage 里会写明没读到的部分。
不用注册先试一条;注册送 10 积分,不用绑卡。支持的平台上有链接读不出来,就是一个值得报告的 bug。