开发者 · 微信公众号

公众号文章内容获取 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。