For agents that keep hitting links they can’t read

Social links your agent
can’t open. Solved.

One call turns a Xiaohongshu, Douyin, YouTube, TikTok or X link into text: transcript, on-screen text, image descriptions and metadata. Markdown for reading, JSON for pipelines.

Reading the post…

A real digest of a 17-image Xiaohongshu post — 381 on-screen text fragments. Replayed; the actual run took 119s.

try it

Paste a link. Any link.

One free digest, no account. The examples below run instantly because someone has already digested them — cached links are always free.

digest console
resolvefetchreaddigest

Try an example below, or paste your own link.

try

the problem

Fetching the URL gives you nothing

Both sides below are real output for the same Xiaohongshu post. On the left, what your agent gets today. On the right, what it gets through LinkDigest.

curl the link
$ curl 'xiaohongshu.com/discovery/item/6a8d764b…' <!doctype html> <html><head> <title>小红书</title> </head><body> <div id="app"></div> <script src="/vendor.js"></script> </body></html> # no caption. no images. no text.
POST /api/v1/digest

platformxiaohongshu

author周星星

title从 Agent Team 到 Agent Swarm(下篇)

images · 17 described and read

  • 文章封面,绿色背景上画着一群蚂蚁围着一片叶子,下方是文章标题元数据。
  • 第一版架构图,展示四个平等的 Agent 共同读写一个中央 Coordination File。

ocr_text · 381 fragments

  • Multi-Agent · 工程实践
  • 2026.8.4
  • 1.4 万字

key_points · 13

  • 文章探讨了多智能体系统从平级协作向递归蜂群架构演进的工程实践,重点解决大规模并发下的冲突与协调问题。

how it works

Three things happen

Resolve

Short links are expanded and tracking parameters stripped, so two people sharing the same post hit one cached result instead of paying twice.

Read

Captions are used where a platform publishes them. Otherwise the audio is transcribed and frames are sampled for burned-in text — never the whole file, and never stored.

Return

One structured object: transcript with timecodes, on-screen text, image descriptions, key points, and the whole thing pre-rendered as Markdown.

coverage

What works today

Fetching other people’s platforms breaks, so this table is kept honest rather than aspirational. When a platform blocks us, LinkDigest says so instead of returning a confident description of an error page.

PlatformStateNotes
xiaohongshu 小红书liveImage notes and video notes. No login needed.
douyin 抖音liveVideo posts and image notes, including 图文.
youtubeliveRead by Gemini watching the video, since YouTube blocks datacenter IPs.
tiktokliveShort links resolve. Rate-limits under load.
xlivePosts with video or images.
web pagesliveArticle text and metadata.
bilibiliblockedBilibili refuses our server's address (HTTP 412). Needs a proxy.
instagramsoonWired, not yet verified end to end.

install

One line, then forget about it

The agent calls digest_url by itself when it meets a social link. You don’t have to ask.

MCP · Claude Code

claude mcp add --transport http linkdigest \
  https://linkdigest.dev/mcp \
  --header "Authorization: Bearer ld_live_..."

REST

curl -X POST https://linkdigest.dev/api/v1/digest \
  -H "Authorization: Bearer ld_live_..." \
  -d '{"url": "https://v.douyin.com/..."}'

pricing

Three free, then $9 a month

Digests are cached and shared, so a link someone already read comes back instantly and never counts against you.

Free trial

$0

3 digests, once. Every platform, full output, no card.

Dev

$9/month

500 digests a month, the JSON API, and the MCP server.

questions

Questions people actually ask

Why can't my agent just fetch the link itself?
Share URLs are tokenised and the content is video or images rather than text. Fetching one returns an app-download shell or a login wall, not the post. There is nothing in the HTML to read.
How do I get a Xiaohongshu post into Claude Code?
Add the LinkDigest MCP server, then paste the link. The agent calls digest_url on its own and gets the note's images, on-screen text and caption back as Markdown. Share links with xsec_token work exactly as you copied them.
Does it transcribe Chinese speech?
Yes. Transcription uses SenseVoice, which is materially more accurate on Mandarin than Whisper-class models. Where a platform already publishes captions those are used instead — they are free and more accurate.
Do you store the videos or images?
No. Media is processed in a temporary directory deleted before the request returns. Only the resulting text digest is stored, so a link someone already digested costs nothing to serve again.
What exactly comes back?
platform, author, title, posted_at, caption, transcript with timecodes, ocr_text, images with descriptions, key_points, and raw_markdown. Markdown for reading, JSON for pipelines.