coverage
7 platforms read.
The rest listed honestly.
Every row was checked against a real post, not a doc page. Where something does not work we say so and why, because finding out after you have wired it in is worse than knowing now.
| Platform | State | What comes back | Notes | Last verified | Last 30 days |
|---|---|---|---|---|---|
| xiaohongshu 小红书 | live | Caption, tags, engagement counts, every image described with the text on it, video transcript. | Image notes (up to 60 images) and video notes. No login needed. | 2026-10-10 ok | 17 reads · 26 s |
| douyin 抖音 | live | Transcript with timecodes, timed on-screen text, the post's chapters and category. | Refusing automated reads since 2026-10-10 09:24 UTC (the platform's security system, not your link). Failed reads are not charged; retry later. | 2026-10-09 degraded | 69 reads · 32% whole · 28 s |
| youtube | live | Native captions where published, otherwise a watched transcript. | Read by Gemini watching the video, since YouTube blocks datacenter IPs. | 2026-10-09 ok | 6 reads · 16 s |
| tiktok | live | Transcript with timecodes, sampled frames, on-screen text. | Short links resolve. Speech is read from the video itself, not the sound track. | 2026-10-06 ok | 3 reads · 18 s |
| x | live | Post text, every photo described, transcript and on-screen text when there is video. | Video posts in full. Image posts: every photo described. Long-form articles: the lead image. | 2026-10-08 ok | — |
| wechat 公众号 | live | Full article text, account name, publish date, every image described with the text on it (up to 60). | Public-account articles (mp.weixin.qq.com). No login needed. | 2026-10-06 ok | 5 reads · 44 s |
| web pages | live | Readable article text, title, author, publish date. | Article text and metadata. | 2026-10-09 ok | 17 reads · 25 s |
| bilibili | blocked | Nothing yet — the request never reaches the post. | Bilibili refuses our server's address (HTTP 412). Needs a proxy. | — unknown | — |
| soon | Not yet measured. | Wired, not yet verified end to end. | — unknown | — |
“Last verified” is the last time a real post on that platform was read in full, by a real request or by the weekly check; degraded means the last read came back thinner than the post, unknown means nothing has read one in the last two weeks. “Last 30 days” counts real requests (ours left out): how many, what share came back whole with failures on our side counted against us, and the median wait for a whole read; no rate is shown under 20 attempts. The same report is public at GET /api/v1/health/platforms, no key needed.
what you don’t have to do
The parts that are our problem, not yours
Each of these is something that was built, checked against a real link, and is written down in the coverage table or the docs.
No cookies or login for Xiaohongshu.
Image notes and video notes are read with no account at all, so there is nothing of yours to get banned.
Cookie rot is ours.
Douyin refuses anonymous requests, so it runs on our session cookies. When they lapse, that is our pager, not your incident.
YouTube read from a datacenter IP.
YouTube blocks datacenter address ranges, so a server-side fetch fails wherever it is deployed. Here a model watches the video instead.
Image notes read in full.
Every image in a Xiaohongshu note is described and read for on-screen text — the 17-image example on the homepage came back with all 17.
degraded names what failed.
A digest that is thinner than the post says so in plain words, in a field your code can branch on, instead of returning a confident description of less.
A digest that read nothing costs nothing.
If no transcript, text or image came back, the digest is not charged and is retried within the hour instead of being cached for a month.
Cached links are free.
Anything anyone has already digested comes back instantly and never counts against you.
every digest
The same shape, whatever the source
One schema across all 7 live platforms, so your prompt does not branch on where the link came from.
always present
platform, author, title, posted_at, caption, key_points and raw_markdown. Empty strings rather than missing keys, so parsing never branches.
when the post has it
transcript with timecodes for anything with speech, ocr_text for on-screen text, and images with a written description of each.
Try one of your own links
10 free credits when you sign up, no card. If a link on a live platform does not work, that is a bug worth hearing about.