
douyin-video-extractor
Extract watermark-free Douyin/TikTok videos and transcribe audio content using AI speech recognition
- Installs
- 201
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/reason-machines/mcp-skills --skill douyin-video-extractor- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads douyin-video-extractor automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Douyin Video Extractor Skill
Skill by ara.so — MCP Skills collection.
Overview
douyin-mcp-server extracts watermark-free videos from Douyin (Chinese TikTok) share links and uses AI to transcribe audio content into text. It supports three usage modes: WebUI, MCP server integration, and command-line interface.
Key Features:
- Extract high-quality watermark-free video download links
- AI-powered speech-to-text transcription using SenseVoice
- Automatic chunking for large audio files (>1 hour or >50MB)
- MCP integration for Claude Desktop and other AI assistants
- Web interface for browser-based usage
Installation
Prerequisites
# Install uv (Python package manager)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install FFmpeg (required for audio processing)
# macOS
brew install ffmpeg
# Ubuntu/Debian
apt install ffmpeg
# Windows (with chocolatey)
choco install ffmpeg
Setup
# Clone the repository
git clone https://github.com/yzfly/douyin-mcp-server.git
cd douyin-mcp-server
# Install dependencies
uv sync
# Set API key for transcription (optional, only needed for text extraction)
export API_KEY="sk-xxxxxxxxxxxxxxxx"
Usage Modes
1. WebUI (Recommended for Interactive Use)
# Start the web server
uv run python web/app.py
# Access in browser: http://localhost:8080
WebUI Features:
- Parse video info without API key
- Extract transcripts with API key (configured in browser or env var)
- Download videos directly
- Export transcripts as Markdown
2. MCP Server (For AI Assistants)
Configure in claude_desktop_config.json or similar MCP client config:
{
"mcpServers": {
"douyin-mcp": {
"command": "uvx",
"args": ["douyin-mcp-server"],
"env": {
"API_KEY": "sk-xxxxxxxxxxxxxxxx"
}
}
}
}
Available MCP Tools:
parse_douyin_video_info- Parse video metadata (no API key needed)get_douyin_download_link- Get watermark-free download URL (no API key needed)extract_douyin_text- Extract video transcript via AI (requires API key)
3. Command Line Interface
# Get video information (no API key required)
uv run python douyin-video/scripts/douyin_downloader.py \
-l "https://v.douyin.com/xxxxx/" \
-a info
# Download watermark-free video
uv run python douyin-video/scripts/douyin_downloader.py \
-l "https://v.douyin.com/xxxxx/" \
-a download \
-o ./videos
# Extract transcript (requires API_KEY)
uv run python douyin-video/scripts/douyin_downloader.py \
-l "https://v.douyin.com/xxxxx/" \
-a extract \
-o ./output
# Extract transcript and save video
uv run python douyin-video/scripts/douyin_downloader.py \
-l "https://v.douyin.com/xxxxx/" \
-a extract \
-o ./output \
--save-video
CLI Arguments:
-l, --link- Douyin share link (required)-a, --action- Action:info,download, orextract(required)-o, --output- Output directory (default:./output)--save-video- Save video file when extracting transcript--api-key- Override API key from environment
Python Integration
Parse Video Info
from douyin_video.parser import DouyinParser
# Initialize parser
parser = DouyinParser()
# Parse video information
share_link = "https://v.douyin.com/xxxxx/"
video_info = parser.parse_video_info(share_link)
print(f"Title: {video_info['title']}")
print(f"Video ID: {video_info['video_id']}")
print(f"Download URL: {video_info['download_url']}")
Download Video
from douyin_video.downloader import DouyinDownloader
downloader = DouyinDownloader()
# Download watermark-free video
video_url = "https://v.douyin.com/xxxxx/"
output_path = "./videos"
file_path = downloader.download_video(video_url, output_path)
print(f"Video saved to: {file_path}")
Extract Transcript
from douyin_video.transcriber import VideoTranscriber
import os
# Initialize with API key
api_key = os.getenv("API_KEY")
transcriber = VideoTranscriber(api_key=api_key)
# Extract transcript from video URL
video_url = "https://v.douyin.com/xxxxx/"
transcript = transcriber.extract_transcript(video_url)
print(f"Transcript: {transcript['text']}")
print(f"Video ID: {transcript['video_id']}")
print(f"Title: {transcript['title']}")
# Save as Markdown
transcriber.save_markdown(
transcript=transcript,
output_dir="./output"
)
Handle Large Files
The library automatically handles large audio files:
# Files >1 hour or >50MB are automatically chunked
# No special configuration needed
transcript = transcriber.extract_transcript(long_video_url)
# Chunks are processed and merged automatically
Configuration
API Key Setup
Get a free API key from SiliconFlow (new users get free credits).
Option 1: Environment Variable
export API_KEY="sk-xxxxxxxxxxxxxxxx"
Option 2: WebUI Browser Storage
- Open WebUI
- Click "API 未配置" button
- Enter and save API key
- Key persists in browser localStorage
Option 3: CLI Argument
uv run python douyin-video/scripts/douyin_downloader.py \
--api-key "sk-xxxxxxxxxxxxxxxx" \
-l "https://v.douyin.com/xxxxx/" \
-a extract
Output Format
Extracted transcripts are saved as Markdown:
# Video Title
| 属性 | 值 |
|------|-----|
| 视频ID | `7600361826030865707` |
| 提取时间 | 2026-01-30 14:19:00 |
| 下载链接 | [点击下载](url) |
---
## 文案内容
Transcribed text content appears here...
Common Patterns
Batch Processing Multiple Videos
from douyin_video.transcriber import VideoTranscriber
import os
api_key = os.getenv("API_KEY")
transcriber = VideoTranscriber(api_key=api_key)
video_urls = [
"https://v.douyin.com/xxxxx1/",
"https://v.douyin.com/xxxxx2/",
"https://v.douyin.com/xxxxx3/",
]
for url in video_urls:
try:
transcript = transcriber.extract_transcript(url)
transcriber.save_markdown(transcript, "./batch_output")
print(f"✓ Processed: {transcript['title']}")
except Exception as e:
print(f"✗ Failed {url}: {e}")
Error Handling
from douyin_video.parser import DouyinParser
from douyin_video.exceptions import ParseError, DownloadError
parser = DouyinParser()
try:
video_info = parser.parse_video_info(share_link)
except ParseError as e:
print(f"Failed to parse video: {e}")
except DownloadError as e:
print(f"Failed to download: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
Custom Output Handling
from douyin_video.transcriber import VideoTranscriber
import json
transcriber = VideoTranscriber(api_key=os.getenv("API_KEY"))
transcript = transcriber.extract_transcript(video_url)
# Save as JSON
with open("transcript.json", "w", encoding="utf-8") as f:
json.dump(transcript, f, ensure_ascii=False, indent=2)
# Extract specific fields
video_id = transcript["video_id"]
text_content = transcript["text"]
download_url = transcript["download_url"]
Troubleshooting
FFmpeg Not Found
Error: FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg'
Solution:
# Verify FFmpeg installation
ffmpeg -version
# If not installed, install via package manager
brew install ffmpeg # macOS
apt install ffmpeg # Ubuntu
API Key Not Working
Error: Unauthorized: Invalid API key
Solution:
- Verify API key is correct
- Check environment variable:
echo $API_KEY - Ensure API key has sufficient credits at SiliconFlow
Large File Processing Fails
Error: Request Entity Too Large or timeout errors
Solution: The library automatically chunks large files, but ensure:
- FFmpeg is installed and accessible
- Sufficient disk space for temporary files
- Stable network connection for multiple API calls
Video Link Not Parsing
Error: Failed to parse video link
Solution:
- Ensure link is a valid Douyin share link (starts with
https://v.douyin.com/) - Try copying the share link again from the Douyin app
- Check if video is still available (not deleted)
Permission Denied on Output Directory
Error: PermissionError: [Errno 13] Permission denied
Solution:
# Ensure output directory exists and is writable
mkdir -p ./output
chmod 755 ./output
# Or specify a different output directory
uv run python douyin-video/scripts/douyin_downloader.py \
-l "url" -a extract -o ~/Documents/douyin_output
WebUI Not Loading
Error: Browser shows connection refused or 404
Solution:
# Ensure server is running
uv run python web/app.py
# Check if port 8080 is available
lsof -i :8080
# Use different port if needed
PORT=8081 uv run python web/app.py
Advanced Usage
Custom Transcription Settings
from douyin_video.transcriber import VideoTranscriber
transcriber = VideoTranscriber(
api_key=os.getenv("API_KEY"),
model="FunAudioLLM/SenseVoiceSmall", # Default model
chunk_duration=540 # 9 minutes per chunk (default)
)
Programmatic MCP Server
from douyin_video.mcp_server import DouyinMCPServer
server = DouyinMCPServer(api_key=os.getenv("API_KEY"))
await server.run()
Related Resources
FAQ
What does the douyin-video-extractor skill do?
Extract watermark-free Douyin/TikTok videos and transcribe audio content using AI speech recognition
How do I install douyin-video-extractor?
Run npx skills add https://github.com/reason-machines/mcp-skills --skill douyin-video-extractor in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/douyin-video-extractor/ (personal) or .claude/skills/douyin-video-extractor/ (project).
Which AI agents can use douyin-video-extractor?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is douyin-video-extractor safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains douyin-video-extractor?
It is published by reason-machines in reason-machines/mcp-skills. It has 201 recorded installs.
More from reason-machines/mcp-skills
codebase-memory-mcp-intelligence
reason-machines/mcp-skills
High-performance code intelligence MCP server that indexes codebases into knowledge graphs for structural queries, call traces, and architecture analysis
playwright-mcp-server
reason-machines/mcp-skills
Browser automation MCP server using Playwright's accessibility tree for LLM-friendly web interaction
tradingview-mcp-assistant
reason-machines/mcp-skills
AI-assisted TradingView chart analysis and automation via Chrome DevTools Protocol for Claude Code
lanhu-mcp-collaboration
reason-machines/mcp-skills
Open the skill to read its SKILL.md instructions.
chrome-devtools-mcp-automation
reason-machines/mcp-skills
Expert guidance for Chrome DevTools MCP server - browser automation, debugging, and performance analysis for AI agents
github-mcp-server
reason-machines/mcp-skills
Open the skill to read its SKILL.md instructions.
Popular media & creative skills
hyperframes
heygen-com/hyperframes
Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
media-use
heygen-com/hyperframes
Get or make any media for a HyperFrames video - music, sound effects, images, icons, logos, voiceover, avatar and generated video, transcripts, cutouts, colour grades and looks - with HeyGen or free local tools, and mix placed audio. Also for footage that looks dark, flat or dull, or should be stylized or hidden.
hyperframes-registry
heygen-com/hyperframes
About 450 ready-made HyperFrames blocks and components installed as editable source - transitions, overlays, titles, kinetic type, captions, charts, map overlays, 3D, camera moves. Use it before hand-building any named visual (CRT scanlines, glitch, film grain, a chart); also for hyperframes add and catalog.
hyperframes-creative
heygen-com/hyperframes
Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use hyperframes-animation.
ai-video-generation
101-skills/superpowers
Generate AI videos with Google Veo, Seedance 2.0, HappyHorse, Wan, Grok and 40+ models via inference.sh CLI. Models: Veo 3.1, Veo 3, Seedance 2.0, HappyHorse 1.0, Wan 2.5, Grok Imagine Video, OmniHuman, Fabric, HunyuanVideo. Capabilities: text-to-video, image-to-video, reference-to-video, video editing, lipsync, avatar animation, video upscaling, foley sound. Use for: social media videos, marketing content, explainer videos, product demos, AI avatars. Triggers: video generation, ai video, text to video, image to video, veo, animate image, video from image, ai animation, video generator, generate video, t2v, i2v, ai video maker, create video with ai, runway alternative, pika alternative, sora alternative, kling alternative, seedance, happyhorse
ai-image-generation
101-skills/superpowers
Generate AI images with GPT-Image-2, FLUX, Gemini, Grok, Seedream, Reve and 50+ models via inference.sh CLI. Models: GPT-Image-2, FLUX Dev LoRA, FLUX.2 Klein LoRA, Gemini 3 Pro Image, Grok Imagine, Seedream 4.5, Reve, ImagineArt. Capabilities: text-to-image, image-to-image, inpainting, LoRA, image editing, upscaling, text rendering. Use for: AI art, product mockups, concept art, social media graphics, marketing visuals, illustrations. Triggers: flux, image generation, ai image, text to image, stable diffusion, generate image, ai art, midjourney alternative, dall-e alternative, text2img, t2i, image generator, ai picture, create image with ai, generative ai, ai illustration, grok image, gemini image, gpt image, openai image, chatgpt image