
Douyin Video Summary
Turn a shared Douyin (TikTok China) link into a readable transcript and structured summary—optionally synced to Feishu—without manual rewatching.
Overview
Douyin-video-summary is an agent skill most often used in Grow (also Idea research) that transcribes Douyin videos locally with whisper.cpp and returns structured summaries from share links.
Install
npx skills add https://github.com/liu-wei-ai/douyin-video-summary --skill douyin-video-summaryWhat is this skill?
- End-to-end pipeline: resolve Douyin URL → browser-capture audio (403-safe) → ffmpeg → whisper.cpp local transcription →
- Supports v.douyin.com short links and direct douyin.com/video/ IDs with redirect parsing
- Prerequisites documented: brew install whisper-cpp ffmpeg plus ggml-small.bin model download
- Optional sync of summaries to Feishu (Lark) docs after transcription
- Explicit note that direct download tools hit 403; browser interception is required
- Prerequisite stack: whisper-cpp, ffmpeg, and ggml-small.bin model
- Documented workflow steps from URL extract through browser audio capture and transcription
Adoption & trust: 1.4k installs on skills.sh; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You received a Douyin link you cannot easily download or watch end-to-end but need the spoken content as searchable text and a tight summary.
Who is it for?
Solo builders and creators who regularly consume Douyin for research or repurposing and can install whisper-cpp, ffmpeg, and run browser-assisted capture on macOS.
Skip if: Users who only need Western TikTok URLs, cannot run local ML binaries, or want fully automated cloud transcription without browser steps.
When should I use this skill?
User shares a Douyin link (v.douyin.com or douyin.com/video/) and wants a text summary of the video; optional Feishu sync requested.
What do I get? / Deliverables
You get a local transcript and structured summary from the video, with optional Feishu doc sync for your team wiki.
- Structured text summary of video content
- Local transcript from whisper.cpp
- Optional Feishu document sync
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Grow/content because the primary payoff is repurposing and digesting short-video ideas for creators and marketers. The workflow outputs summaries and optional doc sync aimed at content pipelines, not building product code.
Where it fits
Summarize a competitor’s Douyin pitch video into bullet claims before you scope your own offer.
Archive niche trend videos as text notes while exploring what audiences discuss on Douyin.
Turn a long creator tutorial into an outline for your newsletter or product docs.
Push the structured summary to Feishu for a small team content review queue.
How it compares
Use this skill-package workflow instead of yt-dlp-only Douyin attempts that return 403 without browser interception.
Common Questions / FAQ
Who is douyin-video-summary for?
Builders and marketers who work with Douyin links and want agent-guided local transcription plus summaries, optionally pushed to Feishu.
When should I use douyin-video-summary?
In Grow when summarizing clips for content calendars; in Idea when researching competitors or audience messaging from Douyin URLs; whenever a user shares v.douyin.com or douyin.com/video links and asks for a text summary.
Is douyin-video-summary safe to install?
It requires shell, network, browser, and filesystem access to fetch pages and run ffmpeg/whisper; check the Security Audits panel on this page before installing in production agent environments.
SKILL.md
READMESKILL.md - Douyin Video Summary
# Douyin Video Summary Summarize Douyin videos: extract audio → transcribe locally → AI summary. ## Prerequisites Install these tools (macOS example): ```bash brew install whisper-cpp ffmpeg # Download whisper.cpp GGML model (small recommended for speed/quality balance) curl -L -o models/ggml-small.bin "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin" ``` ## Workflow When a Douyin link is received: ### Step 1: Extract Video ID Parse the Douyin URL to get the video ID. Douyin share links come in two formats: - Short link: `https://v.douyin.com/xxxxx/` → follow redirect to get video ID - Direct link: `https://www.douyin.com/video/7604713801732365681` ```bash # Follow redirect to get final URL, extract numeric video ID curl -sL -o /dev/null -w '%{url_effective}' 'https://v.douyin.com/xxxxx/' | grep -oE '[0-9]{15,}' ``` ### Step 2: Get Audio via Browser Douyin blocks direct downloads (yt-dlp, aria2c all get 403). Use the browser to intercept the audio URL: 1. Open the Douyin video page in the browser 2. Inject JS to intercept network requests before navigation: ```javascript window.__audioUrls = []; const origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { if (url && (url.includes('.mp3') || url.includes('.m4a') || url.includes('mime_type=audio'))) { window.__audioUrls.push(url); } return origOpen.apply(this, arguments); }; ``` 3. Navigate to the video page, click play to trigger audio loading 4. Retrieve intercepted URLs: `window.__audioUrls` 5. Download with curl (Referer header required): ```bash curl -H "Referer: https://www.douyin.com/" -o audio.mp4 "<audio_url>" ``` **Important:** `aria2c` will 403 on Douyin CDN URLs. Always use `curl` with the Referer header. ### Step 3: Convert to WAV ```bash ffmpeg -i audio.mp4 -ar 16000 -ac 1 -c:a pcm_s16le audio.wav ``` ### Step 4: Transcribe with whisper.cpp ```bash whisper-cli -m /path/to/ggml-small.bin -l zh -f audio.wav -otxt -of output ``` - Use `-l zh` for Chinese content (auto-detect if unsure) - Apple Silicon GPU acceleration is automatic (Metal) - Performance: ~20s for 5min audio on M4 ### Step 5: Generate Summary Read the transcription text and produce a structured summary: ``` 📹 **[Video Title] | [Author]** 时长:X分X秒 | 发布:YYYY-MM-DD 🎯 **核心观点:[one-line core message]** **1. [Point 1 title]** • [detail] • [detail] **2. [Point 2 title]** • [detail] 💬 **一句话总结:[concise takeaway]** ``` ### Step 6 (Optional): Sync to Feishu Doc If Feishu integration is configured, append the summary to a Feishu document using the Feishu Open API. See [references/feishu-sync.md](references/feishu-sync.md) for the API details. ## Tips - For short videos (<1min), the summary may be very brief — that's fine - If browser interception fails, retry once; Douyin pages sometimes need a second load - Clean up downloaded audio/wav files after processing to save disk space - whisper.cpp `small` model is the best speed/quality tradeoff; `medium` may OOM on 8GB machines # Feishu (Lark) Document Sync Sync video summaries to a Feishu document using the Open API. ## Authentication Get tenant access token: ```bash curl -X POST 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal' \ -H 'Content-Type: application/json' \ -d '{"app_id":"YOUR_APP_ID","app_secret":"YOUR_APP_SECRET"}' ``` ## Document Structure Use heading levels for auto-generated sidebar navigation: - **H1 (block_type: 3):** Date category (e.g., "2026-02-09") - **H2 (block_type: 4):** Video title (e.g., "大哥的亲子教育 | 童年录播姬") - **Text (block_type: 2):** Summar