# LinkDigest > The social media search and reading layer for AI agents: one closed loop from > search to extraction. Search tools stop at a list of links and extraction tools > wait for a pasted link; LinkDigest does both. It finds posts on a topic > (Xiaohongshu, Douyin, YouTube, X and the web by search API; the user's own feed > from their own browser), then turns each social media URL into LLM-ready > context: transcript, on-screen text, image descriptions, caption and metadata, > as Markdown or JSON, with quotes checked against the post — in one call > (search_links with digest: true). ## What's new (2026-10-17) Search in front of read (search_links on Xiaohongshu, YouTube, X and the web; the extension on the user's own pages); the top comments on every Xiaohongshu note; consumer insight (insight=true) with every quote checked; many links as one comparison page (compare_links / synthesis); a browser extension that reads Douyin from the user's own tab; a Studio plan. Details: https://linkdigest.dev/blog/whats-new-october-2026 (中文: https://linkdigest.dev/blog/2026-10-gengxin). ## What problem it solves AI coding agents cannot read social media links. Share URLs are tokenised (xsec_token, app_code_link), the content is video or images rather than text, and fetching the URL returns an app-download shell instead of the post. LinkDigest resolves the link, reads the media, and returns text an agent can use. ## How to use it MCP (Claude Code, Cursor, Cherry Studio, Trae, 通义灵码 — configs for each on https://linkdigest.dev/zh/docs): claude mcp add --transport http linkdigest https://linkdigest.dev/mcp \ --header "Authorization: Bearer ld_live_..." Tool: digest_url(url, format, job_id, partial_ok, translate_to, breakdown, depth, ask, insight) ask="…" answers one question from the post ("what products and prices does it recommend?") with the quotes the answer rests on, each checked against the post; found=false when the post does not say. 1 more credit. breakdown=true adds a 爆款拆解 teardown (hook, timed beats, title formula, reusable template; quotes checked against the post) for 1 more credit. insight=true adds the consumer insight (消费者洞察): audience, claims, objections, purchase-intent cues, products/prices, questions — each a quote checked against the post and its top comments (`insight` in json; found=false on a section the material does not support). 1 more credit. depth="transcript" reads a long video transcript-first (see Pricing). A long video may need two calls: if the result names a job id, call digest_url again with job_id and no url to collect it. Tool: compare_links(urls, batch_id, insight, breakdown, translate_to) — up to 20 links read as one batch and compared in one page (批量综合): shared themes, hooks, formats, claims, objections and gaps, every example naming its link and checked against it. The first call returns a batch id; call again with batch_id to collect. Each link at its usual price; the comparison is 1 credit per 10 links. Needs a key. Clients that only run local (stdio) MCP servers: bridge with npx mcp-remote https://linkdigest.dev/mcp --header "Authorization:${AUTH_HEADER}" (AUTH_HEADER="Bearer ld_live_..."), or run the open-source Python stdio server from https://github.com/jcaiagent7143-ui/linkdigest-mcp (MIT; not on PyPI — install from git: uvx --from "git+https://github.com/jcaiagent7143-ui/linkdigest-mcp#subdirectory=python" linkdigest-mcp). The same repo has a zero-dependency Python SDK and a `linkdigest` command line. OpenAPI (Coze plugin import, GPT actions): https://linkdigest.dev/openapi.json REST: POST https://linkdigest.dev/api/v1/digest Authorization: Bearer ld_live_... {"url": "...", "format": "json" | "markdown"} Batches: POST https://linkdigest.dev/api/v1/digest/batch {"urls": [...]} — up to 10 links on the free plan, 50 on Dev, 200 on Studio; the same add-ons as a single call, plus "synthesis": true for one comparison over everything the batch read (批量综合, returned as the batch's `synthesis`; 1 credit per started 10 notes, once). Poll GET /api/v1/digest/batch/{id} or give a signed webhook_url. ## Discovery (topic → links → digests → one page) Two loops, because the platforms differ. - From a search API (xiaohongshu, douyin, youtube, x, web): Tool: search_links(query, platform, limit, digest, insight, breakdown) — a web search scoped to the platform, filtered to links digest_url can read. A search that finds posts costs 4 credits on douyin and xiaohongshu, 1 elsewhere; nothing found is free. Metered by credits, not by an hourly count; free accounts share 30 searches a day. With digest=true the results become a batch with a comparison, billed as a batch; then compare_links with the batch_id. For xiaohongshu this is the notes the web has indexed, each read from its public page (the page a logged-out phone gets): no login, no session, no signature. A subset of the platform, not the user's feed. For douyin (since 2026-10-21) it is the video pages the web has indexed, each read through Douyin's own embed player like a pasted link; Chinese words find the most. On both, results carry the words searched, newest first, each with posted_at (the day it went up). - From a page you can see (the user's own Xiaohongshu feed, or a search the web has not indexed): LinkDigest never holds the user's session. The user opens the page in their own browser and presses the browser extension's "Digest the notes on this page" button (https://linkdigest.dev/extension; on Douyin, "Digest this tab" on a video), choosing how many notes to read; it starts a batch from that tab, labelled with the page. For xiaohongshu, search_links hands the agent that same search as a link for the user's own browser (own_browser_url); the batch is named after the query. The agent then calls Tool: list_batches(limit, label) — the key's last batches, newest first, one line each (batch_id, label, created, status done/total, credits, synthesis) — and passes the newest batch_id to compare_links. REST: GET https://linkdigest.dev/api/v1/digest/batches?limit=10 and POST https://linkdigest.dev/api/v1/search {"query", "platform", "limit", "digest"}. A batch can carry a "label" (POST /api/v1/digest/batch) so a listing can name it. ## Platform coverage - Xiaohongshu (小红书): works, image notes and video notes, no login required - YouTube: works. YouTube blocks datacenter addresses, so the video is read by Gemini watching it directly; transcripts carry timecodes. - TikTok: works, including vt.tiktok.com short links - X (Twitter): works for posts with video or images - Bilibili (哔哩哔哩): works for videos and b23.tv short links since 2026-10-24. Bilibili returns HTTP 412 to every request from our servers' address, its own embed player included, so the player — the public page Bilibili publishes for other sites to embed — is rendered through a residential exit when the direct render is refused. No login, no cookies, no captcha. Private or deleted videos say so and are not charged; if every route is refused the read answers 503 with error_code platform_refused and how_to_read_now. - Web pages and articles: works - Douyin (抖音): works for pasted links again since 2026-10-21. Paste a link or the whole share text and it is read through Douyin's own embed player: the public player Douyin publishes for other sites, opened by a real browser on our side, which receives the post and its stream. No login, no cookies, no captcha. Douyin's web API still refuses the engine's signed requests (2026-10-09), so when the player will not serve a post the read answers 503 with error_code platform_refused and how_to_read_now, and is not billed; the routes are: save it in the app (Share → 保存本地) and upload it at https://linkdigest.dev/app/upload (signed in; the browser sends only its sound and a few frames), record it playing in your own tab with the extension (https://linkdigest.dev/extension), or API POST /api/v1/capture with the same parts. From a script: `linkdigest capture --url ` (pip install linkdigest-mcp) extracts the sound and 36 frames on the caller's machine and makes that call; the video is never uploaded. Docs: https://linkdigest.dev/docs#capture. - Instagram: works since 2026-10-24. Reels and video posts are read like any video (transcript, frames, on-screen text). Photo posts (/p/…) are read from Instagram's own embed page, the one it publishes for other sites, opened by a real browser on our side with no login and no cookies: the full caption, author, hashtags, like and comment counts, and the photo described and read for its text. A carousel gives its first slide; a private or removed post answers that it cannot be read, and is not billed. ## Notable properties - Where a platform publishes captions, those are the transcript. Otherwise speech is transcribed with OpenAI's gpt-4o-mini-transcribe (since 2026-10-10, when the provider withdrew Qwen3-ASR, used until then). Its endpoint returns text without per-sentence times, so the engine splits each ~170 s chunk into sentences and estimates each sentence's start from its place in the chunk (`approx: true` on the segment and on any quote placed by it); on-screen text (`on_screen`) carries approximate times, accurate to a keyframe interval, and text shown for most of the video (title card, watermark) is listed once in `on_screen_persistent`. - What the platform says about a post comes back as it said it: `stats` (engagement counts), `tags` (hashtags), `comments` (the first comments the post's share page served with it — Xiaohongshu's top few, read with no login and no second request; never the thread; added 2026-10-17), `chapters` with `chapter_source` ("author", or "platform" for Douyin's generated chapters, each with a one-line summary; never inferred, and on a partial read only those in the part read), `category` (the platform's own, broadest first) and `music` (a soundtrack that is not the poster's own voice). The last four were added 2026-10-05 and are absent on links cached before then. - Image posts are read image by image, every one up to 60 a read (a Xiaohongshu note, a Douyin 图文, a WeChat article), priced per 6 images. Past 60, the first 60 are taken and priced, and `degraded` names the rest; `image_count` and `images_read` carry the two numbers (added 2026-10-05). `images_read` is what was taken and priced, not what was read: an image whose download or vision read failed still counts, and `coverage.images_read` is how many came back read. With `partial_ok`, a post the budget does not cover whole takes its first images (6 a credit) and carries `partial` with 0 seconds (since 2026-10-06). A WeChat article does so even without `partial_ok`. - Every digest carries a coverage receipt, `coverage`, computed in code and never by a model: for video, `seconds_transcribed` of `duration_seconds` and `largest_frame_gap_seconds`; for image posts, `images_read` of `images_total`; and `not_captured`, plain statements of what was not read ("minutes 12:00-43:58 not read (budget)", "3 of 21 images skipped", "comments not read"). The Markdown shows it as a Coverage section. - Each key point can be checked: `key_point_support` holds one short quote per key point ({ point_index, kind, t, image_index, quote, verified }), with kind transcript, on_screen, image, caption or chapter. The engine looks every quote up in the post; one it cannot find is kept with verified false. Both fields were added 2026-10-05 and are absent on links cached before then. - What the post points to comes back as `links` ({ url, found_in, label, kind }): URLs in its caption or YouTube description, a WeChat article's 阅读原文, QR codes decoded from the images and frames the read downloaded, well-formed URLs in on-screen text, and chapters. Deduplicated, at most 20 (`coverage.links_found` counts them all), and never opened: reading one is a separate digest, at its own price, if you choose it. `kind` is web, payment (WeChat Pay, Alipay…), group_invite (WeChat, QQ, Telegram groups…), app_deeplink or other, so a payment code or group invite is never mistaken for a page. Added 2026-10-05; absent on links cached before then. - Media is never stored or served. Only the text digest is retained. - A blocked or removed post returns an error rather than a description of the error page. - Every response carries a `degraded` array. It names anything that did not read fully, and also notes the route a complete read took ("read via oEmbed", "read by Gemini watching the video directly") — so a non-empty array is not by itself a failed read. - Rate limit: 60 API/MCP calls per hour per account. - Per-platform health is public: GET https://linkdigest.dev/api/v1/health/platforms returns, for each platform, its state, an ok/degraded/unknown status, when a real post on it was last read in full, and the last 30 days counted from real requests: reads_30d, whole_rate_30d (share that came back whole, with failures on our side counted against us; null under 20 attempts) and p50_seconds. No key needed. - Cached links are served free and do not count against a plan allowance. - Any link shape the app gives you works: share-button short links, full page addresses, a profile page with the post open (douyin ?modal_id=, xiaohongshu /user/profile/…), and the whole share-sheet text — the first link is extracted. A Xiaohongshu page address without its xsec_token is the least reliable shape — Xiaohongshu often answers it with a login wall, though it reads sometimes; copy the link from the share sheet to be sure. ## Connect from a personal agent (Muse, Grok Bot, Manus Cue, Hermes, OpenClaw, Claude Code, Cursor) Any agent that takes a remote MCP server can use LinkDigest: add https://linkdigest.dev/mcp with header "Authorization: Bearer ld_live_...". Without a key the digest_url tool returns a summary (two a day per address). Step-by-step per agent: https://linkdigest.dev/connect ## Pricing (billed in credits, not digests) A competitor report (竞品洞察报告) is a batch with insight=true and synthesis=true: every note's consumer insight plus one comparison. Each note at its own price (typically 2) + 1 for insight, plus the comparison: 3 notes come to about 10 credits. Console sizes: 3 free, 20 Dev, 50 Studio. In one line: $0.02 an image post, $0.02 per minute of video, 10 free on sign-up. Without an API key, POST /api/v1/digest and the MCP tool return a summary (two a day per address); POST /api/v1/keys/request {"email"} mails a link that issues a key. Free: 10 credits once, when the account is created — they do not renew. No card. The current figure is always on https://linkdigest.dev/pricing. Requires a free account (Google sign-in or an emailed magic link). Credit pack: $5 once for 250 credits, no subscription, credits never expire; spent only after the plan's own allowance. The pack can be paid with Alipay (支付宝, charged in yuan: ¥36). Starter pack: $1.5 (¥9.9) once for 50 credits, Alipay or card. Dev: $9/month for 500 credits a month (card); batches of 50 links, 60 calls an hour. Studio: $49/month for 3500 credits (card); batches of 200 links, 300 calls an hour. Volume pack for buyers in China: ¥288 once for 2000 credits (Alipay), no subscription. Add-ons per link: translate_to +1, breakdown +1, ask +1, insight +1; a batch's synthesis 1 credit per started 10 notes, once. An extension capture ("Digest this tab") is billed like a link of that length, and so is an uploaded video: 1 per started minute. Finding posts (search_links, POST /api/v1/search) costs 4 credits on douyin and xiaohongshu and 1 elsewhere when it finds posts, 0 otherwise (metered by credits, not an hourly count; free accounts share 30 searches a day); the extension's button is free. The share page's top comments come with a Xiaohongshu note at no charge. A typical post costs 1 credit, which covers the first 6 images; video costs 1 credit per started minute on top -- so 500 credits is nowhere near 500 videos. Cached links cost 0 credits. A digest that read nothing is not charged. Long videos: `depth: "transcript"` (REST, batch and MCP; added 2026-10-05) reads a video transcript-first -- the whole transcript plus about one frame a minute (one per chapter when it has chapters) -- for 1 credit per started 2 minutes instead of 1 per minute, and up to 120 minutes on a paid plan (60 free) against 30 (10) for a full read. The digest says `depth`, and `coverage.not_captured` says how sparse the frames were. When a full read comes back partial, `partial.transcript_credits` is what the whole video costs transcript-first. A YouTube video read by Gemini has no transcript-only form: it is read and priced in full. ## Links - Docs: https://linkdigest.dev/docs - Pricing: https://linkdigest.dev/pricing - For businesses across Asia (what Chinese visitors say about you on Xiaohongshu, as a report in English, Japanese or Korean): https://linkdigest.dev/business - Platforms: https://linkdigest.dev/platforms - Xiaohongshu (RedNote) to text for LLMs — transcript, OCR, top comments, consumer insight: https://linkdigest.dev/platforms/xiaohongshu - Douyin to text for LLMs — search Douyin by topic, spoken transcript, timed on-screen text: https://linkdigest.dev/platforms/douyin - YouTube to text for LLMs — captions or a watched transcript: https://linkdigest.dev/platforms/youtube - TikTok to text for LLMs — transcript, frames, on-screen text: https://linkdigest.dev/platforms/tiktok - X (Twitter) to text for LLMs — post text, photo descriptions, transcript: https://linkdigest.dev/platforms/x - Writing: https://linkdigest.dev/blog - Public per-platform health (no key): GET https://linkdigest.dev/api/v1/health/platforms -- state, an ok/degraded/unknown status and when a real post was last read in full. Also listed on (the same hosted service; all but Apify use your LinkDigest key): - Official MCP registry: dev.linkdigest/linkdigest - ModelScope MCP 广场 (hosted, deployable): https://modelscope.cn/mcp/servers/JCAI714/linkdigest - Dify plugin: https://marketplace.dify.ai/plugins/jcaiagent7143-ui/linkdigest - Apify Store actors (billed through Apify, no LinkDigest key): https://apify.com/loongnian714/douyin-video-to-text , https://apify.com/loongnian714/xiaohongshu-note-to-text , https://apify.com/loongnian714/social-url-to-llm-text - ClawHub skills (Chinese): https://clawhub.ai/jackchew7143/skills/linkdigest-xhs-note-ocr , https://clawhub.ai/jackchew7143/skills/linkdigest-video-transcript , https://clawhub.ai/jackchew7143/skills/linkdigest-viral-breakdown Chinese pages (Simplified Chinese, written for 运营 and developers, not translations): - 首页: https://linkdigest.dev/zh - 小红书笔记提取: https://linkdigest.dev/zh/xiaohongshu-biji-tiqu - 抖音文案提取: https://linkdigest.dev/zh/douyin-wenan-tiqu - 抖音视频总结: https://linkdigest.dev/zh/douyin-shipin-zongjie - 抖音去水印替代: https://linkdigest.dev/zh/douyin-qu-shuiyin-tidai - ChatGPT 打不开小红书抖音: https://linkdigest.dev/zh/chatgpt-du-xiaohongshu-douyin - 小红书有官方 API 吗: https://linkdigest.dev/zh/xiaohongshu-guanfang-api - 小红书 MCP: https://linkdigest.dev/zh/xiaohongshu-mcp - 对标账号拆解: https://linkdigest.dev/zh/duibiao-zhanghao - API / MCP 文档: https://linkdigest.dev/zh/docs - Dify 研究工作流: https://linkdigest.dev/zh/docs/dify - 接入个人 agent: https://linkdigest.dev/zh/jieru - 小红书视频转文字: https://linkdigest.dev/zh/xiaohongshu-shipin-zhuanwenzi - 抖音口播提取: https://linkdigest.dev/zh/douyin-koubo-tiqu - TikTok 字幕提取: https://linkdigest.dev/zh/tiktok-zimu-tiqu - YouTube 视频转文字: https://linkdigest.dev/zh/youtube-zhuanwenzi - X / 推特帖子提取: https://linkdigest.dev/zh/x-tuiwen-tiqu - 抖音 MCP: https://linkdigest.dev/zh/douyin-mcp - 小红书图片文字提取 API: https://linkdigest.dev/zh/xiaohongshu-tupian-wenzi-tiqu - 抖音文案提取 API: https://linkdigest.dev/zh/douyin-wenan-api - 爆款拆解 API: https://linkdigest.dev/zh/baokuan-chaijie-api - 竞品对比: https://linkdigest.dev/zh/tikhub-redfox-socialdatax-duibi - 公众号文章提取 API: https://linkdigest.dev/zh/gongzhonghao-wenzhang-tiqu - 长视频转文字 API: https://linkdigest.dev/zh/changshipin-zhuanwenzi - 浏览器扩展: https://linkdigest.dev/zh/liulanqi-kuozhan - 抖音视频搜索 API: https://linkdigest.dev/zh/douyin-sousuo-api - Instagram 帖子提取: https://linkdigest.dev/zh/instagram-tiezi-tiqu - 研究助手: https://linkdigest.dev/zh/yanjiu-zhushou - 小红书市场调研: https://linkdigest.dev/zh/xiaohongshu-shichang-diaoyan - 开店前调研: https://linkdigest.dev/zh/kaidian-qian-diaoyan Comparisons (competitor rows dated on the page): - LinkDigest vs Supadata: https://linkdigest.dev/compare/linkdigest-vs-supadata - The link Firecrawl can't read: https://linkdigest.dev/compare/linkdigest-vs-firecrawl-jina-for-xiaohongshu - LinkDigest vs MediaCrawler: https://linkdigest.dev/compare/linkdigest-vs-mediacrawler - LinkDigest vs TikHub: https://linkdigest.dev/compare/linkdigest-vs-tikhub - LinkDigest vs BibiGPT: https://linkdigest.dev/compare/linkdigest-vs-bibigpt - LinkDigest vs xiaohongshu-mcp: https://linkdigest.dev/compare/linkdigest-vs-xiaohongshu-mcp