用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Aradotso/mcp-skills --skill douyin-video-extractor命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
MCP server that enables LLMs to query and analyze PostgreSQL databases through a controlled interface with read/write capabilities.
Use local-mcp to enable AI agents to safely read, write, and execute commands on local files with sandboxed permissions
Run MCPX MCP Runtime to connect AI clients to local development environments with workspace management, source control, changesets, and terminal execution
基于 SOC 职业分类
正在显示 SKILL.md
| name | douyin-video-extractor |
| description | Extract watermark-free Douyin/TikTok videos and transcribe audio content using AI speech recognition |
| triggers | ["extract text from a douyin video","download watermark-free douyin video","get douyin video transcript","parse douyin share link","transcribe douyin video audio","extract douyin video captions","download tiktok video without watermark","get video text from douyin url"] |
Skill by ara.so — MCP Skills collection.
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:
# 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
# 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"
# Start the web server
uv run python web/app.py
# Access in browser: http://localhost:8080
WebUI Features:
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)# 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, or extract (required)-o, --output - Output directory (default: ./output)--save-video - Save video file when extracting transcript--api-key - Override API key from environmentfrom 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']}")
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}")
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"
)
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
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
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
Extracted transcripts are saved as Markdown:
# Video Title
| 属性 | 值 |
|------|-----|
| 视频ID | `7600361826030865707` |
| 提取时间 | 2026-01-30 14:19:00 |
| 下载链接 | [点击下载](url) |
---
## 文案内容
Transcribed text content appears here...
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}")
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}")
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"]
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
Error: Unauthorized: Invalid API key
Solution:
echo $API_KEYError: Request Entity Too Large or timeout errors
Solution: The library automatically chunks large files, but ensure:
Error: Failed to parse video link
Solution:
https://v.douyin.com/)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
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
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)
)
from douyin_video.mcp_server import DouyinMCPServer
server = DouyinMCPServer(api_key=os.getenv("API_KEY"))
await server.run()