douyin-downloader
Skill584 starsChanged 59 days agoMITView on GitHub
Download Douyin (TikTok) videos from share links. Parse Douyin share text and links, download watermark-free videos, and transcribe audio to text using Volcano Engine ASR (Doubao Speech). Uses Python for iSH compatibility.
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
When the user provides Douyin share text or a link, extract the video metadata:
- Very specific: line 56
Use the download_url from step 1:
- Distinctive: line 121
Create a speech recognition (ASR) application
- Very specific: line 146
Filename length: Use short filenames (English or pinyin) for saved files.
- Very specific: line 161
When errors occur, scripts return JSON with { "status": "error", "error": "<message>" } on stderr and exit with code 1.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Douyin Video Downloader
Parse Douyin share links and download videos without watermarks.
Note: The original version used Node.js. Because of iSH environment limitations, it has been converted to Python.
Dependencies
- Python 3
- requests library (
pip3 install requests)
Environment Variables (Transcription Feature)
VOLC_APP_KEY- Volcano Engine App KeyVOLC_ACCESS_KEY- Volcano Engine Access Key
Workflow
1. Parse Share Link
When the user provides Douyin share text or a link, extract the video metadata:
python3 scripts/parse_douyin.py "<share text or link>"Input examples:
- Full share text:
7.43 FuL:/ You know what? It really is pretty nice. https://v.douyin.com/iFDbjn2M/ Copy this link... - Just the URL:
https://v.douyin.com/iFDbjn2M/
Output (JSON):
{
"video_id": "7445842287652441376",
"title": "You_know_what_It_really_is_pretty_nice",
"download_url": "https://...play.../video/...",
"raw_url": "https://...playwm.../video/...",
"share_url": "https://v.douyin.com/iFDbjn2M/",
"redirected_url": "https://www.iesdouyin.com/share/video/7445842287652441376",
"iesdouyin_url": "https://www.iesdouyin.com/share/video/7445842287652441376"
}Key fields:
download_url- Watermark-free version (playwmtoplay)title- Sanitized video description, safe for filenamesvideo_id- Unique video identifier
2. Download Video
Use the download_url from step 1:
python3 scripts/download_video.py "<download_url>" "<output_path>"Example:
python3 scripts/download_video.py "https://aweme.snssdk.com/aweme/v1/play/?video_id=..." "./downloads/You_know_what_It_really_is_pretty_nice.mp4"Output:
{
"status": "success",
"path": "./downloads/You_know_what_It_really_is_pretty_nice.mp4"
}Progress is written to stderr during download.
3. Transcribe Audio
Transcribe audio or video to text using Volcano Engine ASR (Doubao Speech):
python3 scripts/transcribe_audio.py "<audio_or_video_file>" --app-key "$VOLC_APP_KEY" --access-key "$VOLC_ACCESS_KEY"Parameters:
--app-key- Volcano Engine App Key (required, or set theVOLC_APP_KEYenvironment variable)--access-key- Volcano Engine Access Key (required, or set theVOLC_ACCESS_KEYenvironment variable)--resource-id- Resource ID:volc.bigasr.auc_turbo(flash) orvolc.seedasr.auc(standard)--mode- Mode:auto|flash|standard(default:auto)--out- Output JSON file path (optional)--text-out- Output text file path (optional)
Example:
# Using env vars
export VOLC_APP_KEY="your_app_key"
export VOLC_ACCESS_KEY="your_access_key"
python3 scripts/transcribe_audio.py "./downloads/video.mp4" --mode flash
# Or inline
python3 scripts/transcribe_audio.py "./downloads/video.mp4" \
--app-key "your_app_key" \
--access-key "your_access_key" \
--resource-id "volc.bigasr.auc_turbo" \
--mode flash \
--text-out "./downloads/transcript.txt"Output (JSON):
{
"status": "success",
"mode": "flash",
"result_text": "When you feel that fate has been unfair to you, you might want to listen to what Tong Guowei said to Long Keduo...",
"result": { ... }
}Getting API credentials:
- Visit the Volcano Engine Console
- Create a speech recognition (ASR) application
- Get the App Key and Access Key from the application settings
Complete Example
# Step 1: Parse
result=$(python3 scripts/parse_douyin.py "7.43 FuL:/ You know what? It really is pretty nice. https://v.douyin.com/iFDbjn2M/")
# Step 2: Extract fields
download_url=$(echo "$result" | python3 -c "import sys,json; print(json.load(sys.stdin)['download_url'])")
title=$(echo "$result" | python3 -c "import sys,json; print(json.load(sys.stdin)['title'])")
# Step 3: Download
python3 scripts/download_video.py "$download_url" "./downloads/${title}.mp4"Notes
- Watermark removal: The script automatically converts
playwmURLs toplayURLs - Title sanitization: Removes invalid filename characters (
\/:*?"<>|) - Both video and note: Supports both
/video/and/note/URLs - Mobile UA required: Uses an iPhone user agent for compatibility
- Timeout: 60 seconds per download
- Progress: Displays progress every 10% on stderr
- Filename length: Use short filenames (English or pinyin) for saved files. Long filenames with URL encoding may break
minis://preview links.
Examples
- Bad:
High_Definition_Lens_41_years_old_Qi_Xi_How_is_her_condition_The_Role_of_Film_Beijing_Premiere.mp4 - Good:
qixi_short.mp4
Error Handling
Common errors:
No valid share link found- Invalid or missing URL in inputFailed to access the share link- Network error or blocked requestFailed to parse video information from HTML- Page structure changed (script needs an update)Download timed out- Network timeout (try again)
When errors occur, scripts return JSON with { "status": "error", "error": "<message>" } on stderr and exit with code 1.
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 1
- lsongdev/skills★ 099% same
Wrote their own version · 2
- freestylefly/canghe-skills★ 461same name
- MarecGents/marec-agent-skills★ 3same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository56 other files it gives its agents.
- android-devSkill
- android-ui-automationSkill
- apple-remindersSkill
- appstoreprice-hubSkill
- asc-cliSkill
- bilibili-hubSkill
- Clash 控制器Skill
- cloudflare-dnsSkill
- codex-imageSkill
- codex-on-ishSkill
- contact-vcard-extractorSkill
- coredevice-toolkitSkill
- deepseek-usageSkill
- doubao-ttsSkill
- evidence-chain-builderSkill
- exa-searchSkill
- free-ttsSkill
- fucai3d-latestSkill
- generative-ui-minisSkill
- github-sync-helperSkill
- health-sleep-analysisSkill
- health-training-checkinSkill
- hyperframes-cliSkill
- hyperframesSkill
- ios-devSkill
- korea-stockSkill
- maimai-hubSkill
- memos-apiSkill
- nano-bananaSkill
- notion-hubSkill
- openstreetmap-markerSkill
- pdf-converterSkill
- production-agent-publicSkill
- qbt-hubSkill
- quark-hubSkill
- reverse-dcfSkill
- self-improving-agentSkill
- shortcuts-builderSkill
- shortcut-share-fileSkill
- spotify-hubSkill
- stock-fund-flowSkill
- stock-priceSkill
- tavily-searchSkill
- tg-hubSkill
- todoocardSkill
- twitter-downloaderSkill
- twitter-x-hubSkill
- us-stockSkill
- web-content-extractorSkill
- web-searchSkill
- weibo-hubSkill
- whenpeakSkill
- xianyu-hubSkill
- xiaohongshu-hubSkill
- youtube-downloaderSkill
- ytmusic-hubSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

