jcaiagent7143-ui

LinkDigest MCP server

Community jcaiagent7143-ui
Updated

小红书 / 抖音 / B站 / 公众号 / 微博链接读取 MCP 服务器 + API(托管,不需要你的平台账号或 Cookie):逐字稿、图片 OCR、热门评论。Hosted MCP server + REST API that reads Xiaohongshu (RedNote), Douyin, Bilibili, WeChat articles and Weibo links into text for AI agents: transcripts, image OCR, top comments. Python SDK + CLI.

LinkDigest MCP server

中文文档:README.zh-CN.md — 小红书 MCP / 抖音 MCP / B站 MCP / 公众号链接读取:MCP 服务器 + API、Python SDK、命令行,价格以人民币标注。

The social media reading layer for AI agents: turn a social media link intotext a language model can read — transcript, on-screen text, imagedescriptions, caption and metadata, with quotes checked against the post.

A Chinese social media API for AI agents: Xiaohongshu (RedNote, 小红书), Douyin (抖音),Weibo (微博), WeChat Official Account articles (公众号), Bilibili and 小宇宙 / Apple Podcasts episodes — plusTikTok, YouTube, X and Instagram — read into timed transcripts, OCR of every image and frame, topcomments and key points with checked quotes. No Chinese phone number, account or cookies. Not readtoday: Zhihu, Kuaishou. Overview: linkdigest.dev/china-social-media-api.

# A Douyin video's spoken script (文案), 1 credit per started 2 minutes
curl -X POST https://linkdigest.dev/api/v1/digest -H "Authorization: Bearer ld_live_..." \
  -H "Content-Type: application/json" -d '{"url": "https://v.douyin.com/xxxxxxx/", "depth": "script"}'

Hosted, remote (streamable HTTP). Nothing to install or run. For stdio-only clients and scripts,python/ adds a zero-dependency Python SDK, a linkdigest command line and alinkdigest-mcp stdio server that forwards to the hosted endpoint.

Website: linkdigest.dev · Registry: dev.linkdigest/linkdigest

What LinkDigest read from a 16-image Xiaohongshu note: 16 images read, 390 lines of text found inside them

Every digest comes with a receipt — how much was read, and a checked quote behind each key point. Works from Muse, Grok Bot, Manus Cue, Hermes, OpenClaw, Claude Code and Cursor: see linkdigest.dev/connect. No key needed for a first look.

What this repository contains

The open parts: the Python SDK, the linkdigest command line and the linkdigest-mcp stdio server(python/, MIT), a LangChain tool and a LlamaIndex reader (in the SDK), the Difyplugin source (dify/), the agent skill (skills/), examples, and the official MCP registry entry (server.json).The hosted service behind https://linkdigest.dev/mcp and the API is operated by LinkDigest; itsreading engine is not open source.

The problem

Fetching a social link yourself returns nothing useful. Share URLs are tokenised(xsec_token, app_code_link), the content lives in video and images ratherthan HTML, and the server sends an app-download shell or a login wall instead ofthe post.

$ curl -sL 'https://xhslink.com/o/1WiQ1QI6Uc0' | grep -o '<title>.*</title>'
<title>小红书 - 你的生活兴趣社区</title>

That title belongs to a 36 KB app shell (checked 2026-10-04). No caption, no images, no text of the note.

Install

Claude Code

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

Cursor, as a plugin — this repo is a Cursor plugin (.cursor-plugin/plugin.json + mcp.json + skills/).Install it from cursor.directory, then set the key once in your shell:

export LINKDIGEST_API_KEY=ld_live_...

The plugin's mcp.json reads ${LINKDIGEST_API_KEY}; no key is stored in the repo. Without it,the tool still lists and tools/call returns a 401 that says where to get one.

Cursor, by hand — ~/.cursor/mcp.json

{
  "mcpServers": {
    "linkdigest": {
      "url": "https://linkdigest.dev/mcp",
      "headers": { "Authorization": "Bearer ld_live_..." }
    }
  }
}

stdio-only clients — through mcp-remote (Node.js):

{
  "mcpServers": {
    "linkdigest": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://linkdigest.dev/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer ld_live_..." }
    }
  }
}

or through the Python server, published on PyPI as linkdigest-mcp(built and uploaded by this repo's release workflow, with attestations; needs uv):

{
  "mcpServers": {
    "linkdigest": {
      "command": "uvx",
      "args": ["linkdigest-mcp"],
      "env": { "LINKDIGEST_API_KEY": "ld_live_..." }
    }
  }
}

A key is issued at linkdigest.dev/app/keys.10 free credits to start, once per account, no card. A post is one credit; video adds one perstarted minute; a viral breakdown or a translation adds one each. Then $5 once for 250 credits(Alipay accepted, settled as ¥36) or $9 a month for 500 (card).

Agent skills (OpenClaw, Hermes, Claude Code, Cursor and others)

Eleven ready-made skills live in skills/. Each is one job, a SKILL.md plus one script that uses only the Python standard library. No key needed for a first look: without LINKDIGEST_API_KEY the script gives one free summary a day; with a key (10 free credits on sign-up, no card) it returns the full transcript and per-image text.

Skill Job
xiaohongshu-note-to-text 小红书笔记转文字: a Xiaohongshu note, the text in every image, caption, stats
douyin-video-to-text 抖音视频转文字: a Douyin video's spoken words, on-screen text, chapters
douyin-search-to-text 抖音搜索转文字: search Douyin by topic (free), then read the videos you pick
tiktok-transcript A TikTok video's transcript with timestamps and captions
long-video-transcript 长视频转文字: lectures and podcasts up to 2 h, 1 credit per 2 minutes
linkdigest-xhs-note-ocr Xiaohongshu image notes, with the text inside every image
linkdigest-video-transcript Douyin / Xiaohongshu video to transcript and on-screen text
linkdigest-wechat-article-reader WeChat 公众号 articles: full text and every image's text
linkdigest-youtube-summary YouTube summary and timed transcript, translated to Chinese on request
linkdigest-xiaohongshu-douyin-reader Read Xiaohongshu / Douyin posts in English
linkdigest-viral-breakdown How a viral post is built, with quotes checked against the source
linkdigest-script-rewrite Extract a reference video's script and structure, then write your own
xiaohongshu-pain-point-radar 痛点雷达: a category on Xiaohongshu + Douyin → pain points, needs and blockers counted per post by code (N/M), search demand from Baidu/Taobao/Bing suggestions, and gaps nobody answers; quotes checked word for word
overseas-pain-points 出海痛点: the same for overseas buyers on YouTube + TikTok, report in Chinese with the English originals

Pain-Point Radar (2026-11-07) is one REST call: POST https://linkdigest.dev/api/v1/radar with {"topic": "robot vacuum", "market": "global"} (or "cn" for Xiaohongshu + Douyin), then poll GET /api/v1/radar/{id}; a 12-post run is ~41–47 credits and takes 10–20 minutes. Public examples, each dated with its read: 国内品类 · 出海品类.

# Any agent the skills CLI supports (Claude Code, Cursor, Codex, OpenClaw, Trae, Qwen Code, ...)
npx skills add jcaiagent7143-ui/linkdigest-mcp --skill xiaohongshu-note-to-text

# Hermes Agent
hermes skills install jcaiagent7143-ui/linkdigest-mcp/skills/xiaohongshu-note-to-text
hermes skills install clawhub/linkdigest-xhs-note-ocr   # or from ClawHub

# OpenClaw (ClawHub)
clawhub install jackchew7143/linkdigest-xhs-note-ocr

The tool

digest_url(url, format, job_id, translate_to, breakdown, ask, partial_ok, depth) — only url is required.

Argument Notes
url The post URL, including any share tokens.
format markdown (default, best for reading) or json (structured).
job_id Collect a digest already running. Pass this instead of url — re-sending the url would start the work again.
breakdown true adds a viral breakdown (爆款拆解): the hook in its first seconds, the structure as timed beats, the title formula, cover text, call to action, audience and a reusable template. Quotes are checked word for word against the post; engagement and hashtags come from the platform. +1 credit.
translate_to An ISO 639-1 code (en, ja, zh-CN): adds a translation beside the original, and writes the breakdown in that language. +1 credit.
ask A question to answer from the post ("what products and prices does it recommend?", "does the speaker say X?"). The answer comes with the quotes it rests on, each checked word for word against the post; found is false when the post does not say, and nothing is invented. +1 credit.
partial_ok true reads the opening minutes the budget affords instead of refusing a long video.

You do not call it yourself. The tool description tells the agent to reach for itwhenever it meets a social link it cannot read, so it happens mid-task withoutbeing asked.

A long video may not finish inside one call. When that happens the result names ajob id; call the tool again with that job_id and no url to collect it.

What comes back

platform, author, title, posted_at, caption, transcript ({t, text}),ocr_text, on_screen ({t, text}), images ({description, ocr}), key_points, stats(likes, comments, saves, shares, plays), tags, raw_markdown, source_url, transcript_source,degraded — plus breakdown and translation when asked for.

Two are worth knowing about:

  • transcript_source — native_captions, asr, gemini_video or none. Captions theplatform already published are exact; speech recognition is not. gemini_videomeans a YouTube video without captions was watched by Gemini, which wrote thetranscript and its times. Treating themidentically eventually quotes a mis-heard number back at someone as fact.
  • degraded — what did not fully work, in plain words, plus notes on how acomplete read was obtained (e.g. "read via oEmbed", "read by Gemini watching thevideo directly").It exists because a digest once returned a well-formed, completely empty resultduring a provider outage and was cached for thirty days.

Platforms

Checked against real posts, not documentation.

Platform Status
Xiaohongshu 小红书 Works — image notes and video notes, no login needed
Douyin 抖音 Works — video posts and image notes (图文), through Douyin's own embed player
Weibo 微博 Works (since 2026-11-01) — text, photos, video, counts, top comments, through Weibo's own visitor page; posts only followers can see are refused, not charged
WeChat 公众号 articles Works — the full article, every image read
Bilibili Works (since 2026-10-24) — videos and b23.tv short links, through Bilibili's own embed player
小宇宙 / Apple Podcasts Works (since 2026-10-29) — episode transcripts
TikTok Works — short links resolve. Rate-limits under load
YouTube Works — native captions where published, otherwise a watched transcript
X Works — posts with video or images
Instagram Works (since 2026-10-24) — reels, and photo posts through Instagram's embed page (a carousel reads its first slide)
Web pages / articles Works — readable article text, title, author, date
Zhihu, Kuaishou Not read yet
Facebook Not supported. Serves no post content to logged-out requests

The rows that do not work are listed on purpose. Finding out after you have wiredsomething in is worse than knowing now.

How long it takes

Measured, not estimated:

  • Already-digested link: about 1 second — anything anyone has run before iscached, and cached links are free
  • Xiaohongshu note with images: 1–2 minutes
  • YouTube video with captions: about 2.5 minutes

Notes

  • Speech is transcribed with Qwen3-ASR. It was kept over whisper-large-v3-turboafter a side-by-side on the same clips, where Whisper misheard Mandarin(创业 → 创意, 900人 → 酒派人).
  • transcript is [{t, text}]. Platform captions are timed per line. Speechrecognition currently returns one segment per ~170 s of audio (a singlesegment at t: 0 for a shorter clip); on_screen carries approximate,keyframe-level times.
  • Media is never stored or served. It is processed in a temporary directorydeleted before the request returns; only the text digest is kept.
  • A blocked or removed post returns an error, not a description of the error page.

Python SDK and command line

In python/: MIT, Python 3.10+, standard library only.

pip install linkdigest-mcp          # PyPI; or from this repo: pip install "git+https://github.com/jcaiagent7143-ui/linkdigest-mcp#subdirectory=python"
export LINKDIGEST_API_KEY=ld_live_...
linkdigest "https://v.douyin.com/xxxx/" --breakdown       # Markdown to stdout
linkdigest capture ./video.mp4 --url "<link>"              # a video you already have: sound + frames extracted here, never uploaded
from linkdigest import LinkDigest

d = LinkDigest().digest("https://xhslink.com/o/xxxx", translate_to="en")
print(d.title, d.credits, d.cached)
print(d.markdown)

Long jobs are collected for you (GET /api/v1/digest/{jobId}?wait=20); errors are typed(PaymentRequiredError carries buy_url). Examples — Dify, OpenAPI import for Coze-styleplatforms, Feishu Bitable, links to CSV — are in examples/ (Chinese).

LangChain

LinkDigestTool is a LangChain tool (digest_url): the model passes a link, and gets the post back asmarkdown — transcript with times, on-screen text, key points, a Coverage line. Through a ToolCall the fullJSON is on the ToolMessage as artifact. A 402 (out of credits) comes back as a sentence with the pay link,and a long read still running comes back as a job id the model collects on its next call.

# pip install "linkdigest-mcp[langchain]" langchain
from langchain.agents import create_agent
from linkdigest.integrations.langchain import LinkDigestTool

agent = create_agent("anthropic:claude-sonnet-5-5", tools=[LinkDigestTool(max_credits=10)])
agent.invoke({"messages": [{"role": "user", "content": "What does this video sell? https://v.douyin.com/xxxx/"}]})

LinkDigestTool(output="json") gives the model compact JSON instead. Example: examples/python/langchain_agent.py.

LlamaIndex

LinkDigestReader turns links into LlamaIndex Documents: the markdown as text, and flat metadata(platform, title, author, source_url, posted_at, credits, coverage_*) that any vector storeaccepts. A link that cannot be read is logged and skipped (errors="raise" to stop instead).

# pip install "linkdigest-mcp[llamaindex]" llama-index
from llama_index.core import VectorStoreIndex
from linkdigest.integrations.llamaindex import LinkDigestReader

docs = LinkDigestReader(depth="script").load_data(["https://v.douyin.com/xxxx/", "https://b23.tv/xxxx"])
VectorStoreIndex.from_documents(docs).as_query_engine().query("What do these videos have in common?")

depth="script" reads the speech only, the cheapest read. Example: examples/python/llamaindex_reader.py.

Link parsing (offline, free, no key)

linkdigest.links finds the real link in pasted share text and names the post it points to — platform,post id and the post's clean address — with no API key and no network. resolve() also follows a shortlink (v.douyin.com, xhslink.com, b23.tv, t.co, vt.tiktok.com …) by reading its redirects, nothing else:no page body, no cookies, at most 5 hops, an honest User-Agent.

from linkdigest.links import extract_url, identify, resolve

text = "7.32 复制打开抖音,看看【…的作品】 https://v.douyin.com/G8Oggg_IXMA/ [email protected] 复制此链接"
extract_url(text)                     # 'https://v.douyin.com/G8Oggg_IXMA/'
identify("https://m.bilibili.com/video/BV1stVH66E6G?p=2&share_source=copy").canonical_url  # '…/BV1stVH66E6G/?p=2'
resolve(text).post_id                 # '7680883233307342947' (one redirect read)

Command line: linkdigest-links "<share text>" prints JSON (--offline skips the redirect). Douyin,Xiaohongshu (xsec_token kept literally), Bilibili, Weibo (mid → bid), YouTube, TikTok, X, Instagram,Kuaishou, WeChat articles and podcast episodes. The same rules as the free parser atlinkdigest.dev/zh/lianjie-jiexi. pip install linkdigest-mcp (0.2.5 or later).

Dify

The same tool as a Dify plugin lives in dify/ — source, manifest and privacy policy. Install it from the Dify Marketplace and paste your API key into the provider credential.

Also available

A REST API (POST https://linkdigest.dev/api/v1/digest), a web app, and ApifyStore actors for bulk runs. See linkdigest.dev.

License

MIT — see LICENSE. Changes are listed in CHANGELOG.md.

MCP Server · Populars

MCP Server · New

    roman-rr

    Trading Signals

    17 triggers × 44 algorithms × 3 AI experts — live crypto trading signals with reasoning for Claude Code, Codex, Cursor & 30+ agents. Free key; Pro adds entry, SL and TP.

    Community roman-rr
    OyadotAI

    Oya Browser

    The browser control plane for AI agents. One API over Oya Cloud, Browserbase, Steel, Anchor, Browser Use and your own Chrome, with persistent personas, CAPTCHA and MFA handling, and live human takeover.

    Community OyadotAI
    unibaseio

    Membase

    Memory layer for AI agents — SDKs, CLI and MCP server for Membase

    Community unibaseio
    EternalNight996

    🧠 memory-eternal — a second brain for your AI

    Your AI forgets every session. Give it a memory you can audit: local-first, review-gated agent memory — one SQLite vault for DSH, Claude Code, Codex, Cursor, OpenClaw, Hermes and MengBot (any MCP client), with an immutable audit log and a token ledger. Agents propose, humans approve. MIT, self-hosted, no cloud.

    Community EternalNight996
    quarkiverse

    Model Context Protocol Servers in Quarkus/Java

    Model Context Protocol Servers in Quarkus

    Community quarkiverse