Not in the top 1,000 by GitHub stars
imlewc/video-to-subtitle-summary-skill
视频转字幕与AI总结 (抖音/小红书/B 站等)支持 faster-whisper 本地转写和 YouTube 字幕抓取 | Convert short videos to subtitles with AI summary
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
cbb4b6e5124f → cbb4b6e5124f
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cbb4b6e5124f
No earlier version was observed for comparison.
Heat
6.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
video-to-subtitle-summary
When your agent uses it
Use when user provides a short video platform URL or local video/audio file and wants subtitles/AI summary, or when user asks to list their own AI Douyin historical tasks. Triggers on v.douyin.com, xhslink.com, bilibili.com, b23.tv, YouTube URLs, local .mp4/.mp3/.wav files, or task history requests.
What it loads into context
Frontmatter
124 tokensAlways available to the agent
SKILL.md
7,260 tokensWhen the skill is activated
Reference documents
14,413 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- When to Use
- 外部依赖
- 环境变量
- 执行步骤
- 输出格式
- 常见问题
Scripts executed separately
scripts/download_video_candidates.pyscripts/download_youtube_subtitles.pyscripts/install_faster_whisper.pyscripts/list_ai_douyin_tasks.pyscripts/transcribe_faster_whisper.pytests/test_download_video_candidates.pytests/test_download_youtube_subtitles.pytests/test_install_faster_whisper.pytests/test_list_ai_douyin_tasks.pytests/test_transcribe_faster_whisper.py
Files
.env.exampleasset1,033 bytes.gitignoreasset34 bytesLICENSEasset1,065 bytesREADME.mddoc12,019 bytesREADME_en.mddoc10,919 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesSKILL.mdcore23,159 bytesdocs/ai-douyin-setup.mddoc2,523 bytesdocs/bytedance-vc-setup.mddoc5,273 bytesdocs/faster-whisper-setup.mddoc3,966 bytesdocs/plans/2026-05-22-ai-douyin-credit-proxy-plan.mddoc13,837 bytesdocs/tikhub-setup.mddoc1,996 bytesdocs/volcengine-console.jpegasset416,549 bytesscripts/download_video_candidates.pyruns3,736 bytesscripts/download_youtube_subtitles.pyruns4,951 bytesscripts/install_faster_whisper.pyruns4,803 bytesscripts/list_ai_douyin_tasks.pyruns5,298 bytesscripts/transcribe_faster_whisper.pyruns8,551 bytestests/test_download_video_candidates.pyruns3,391 bytestests/test_download_youtube_subtitles.pyruns2,048 bytestests/test_install_faster_whisper.pyruns1,988 bytestests/test_list_ai_douyin_tasks.pyruns3,204 bytestests/test_transcribe_faster_whisper.pyruns4,293 bytes
Read SKILL.md
# 视频转字幕与 AI 总结技能
## Overview
将短视频平台(抖音、小红书、B 站、YouTube 等)视频或本地视频/音频文件转换为字幕文本并生成 AI 摘要。
**核心流程:**
- **在线视频:** 获取视频信息 → 下载视频/直接抓字幕 → 选择字幕后端 → 生成字幕 → AI 总结
- **本地文件:** 提取音频(如需) → 选择字幕后端 → 生成字幕 → AI 总结
默认使用本地 `faster-whisper`,也支持通过环境变量切换到火山引擎 VC API。
YouTube 优先使用 `yt-dlp` 直接抓取人工字幕或自动字幕;只有没有可用字幕时,才需要下载音视频并回退到 ASR。
## When to UseView the complete source on GitHubSkills included
- video-to-subtitle-summary
Repository facts
- License
- MIT
- Created
- Feb 19, 2026
- Last pushed
- Oct 28, 2026
- Forks
- 24
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 28 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 4 dangerous shell commandsin 4 files: README.md:130 README_en.md:111 SKILL.md:581 and 1 more
- 213 network referencesin 16 files: docs/plans/2026-05-22-ai-douyin-credit-proxy-plan.md:5 SKILL.md:49 README.md:19 and 13 more
- No hidden or obfuscated text
- No instruction overrides
- 10 executable scriptsin 10 files: scripts/download_video_candidates.py:1 scripts/download_youtube_subtitles.py:1 scripts/install_faster_whisper.py:1 and 7 more
- 78 references to secretsin 11 files: SKILL.md:52 docs/plans/2026-05-22-ai-douyin-credit-proxy-plan.md:7 README.md:165 and 8 more
- No requests to vote in Hot
Show all 305 signals by file
.env.example
.gitignore
- Access to secretsline 1
[Credential-related source omitted]
README.md
- Network accessline 19
请安装并使用 https://github.com/imlewc/video-to-subtitle-summary-skill ,先阅读 README.md 和 SKILL.md,自动完成适合当前 agent 的安装、依赖检查和配置,默认使用本地 faster-whisper,已有安装和配置则直接复用;缺少 API Key 时再提示我填写,不要输出密钥。完成后提取以下视频的字幕并生成中文摘要、核心要点,提供字幕文件路径:〔视频链接或本地文件路径〕 - Network accessline 34
> 抖音、小红书、B 站默认推荐使用 [AI Douyin](https://top9.cc) 解析下载直链:注册后可用免费额度试用,成功解析一次扣 1 积分。已有 TikHub 用户也可以改用自有 `TIKHUB_TOKEN`。YouTube 直接由 `yt-dlp` 抓字幕。ASR 字幕识别后端由 `ASR_BACKEND` 控制。 - Network accessline 40
- [https://top9.cc](https://top9.cc) - Network accessline 83
| 依赖 | 说明 | |------|------| | Codex 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 支持本地 Skill 的 Agent 环境 | - Network accessline 84
|------|------| | Codex 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 支持本地 Skill 的 Agent 环境 | | [FFmpeg](https://ffmpeg.org/) | 音视频处理工具 | - Network accessline 85
| Codex 或 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | 支持本地 Skill 的 Agent 环境 | - Network accessline 86
| [FFmpeg](https://ffmpeg.org/) | 音视频处理工具 | - Network accessline 87
| [yt-dlp](https://github.com/yt-dlp/yt-dlp) | 视频下载和 YouTube 字幕抓取工具(B 站 / YouTube 需要) | - Network accessline 88
| [AI Douyin](https://top9.cc) API Key | 推荐的视频解析/下载代理;新用户免费额度,可避免单独注册 TikHub | - Network accessline 89
| [TikHub](https://tikhub.io/) 账号 | 可选视频接口获取方案:自带 Token 直接解析抖音/小红书/B 站 | - Network accessline 90
| Python 3.9+ + [faster-whisper](https://github.com/SYSTRAN/faster-whisper) | 当 `ASR_BACKEND=faster-whisper` 时需要 | - Network accessline 91
| [火山引擎](https://www.volcengine.com/) 账号 | 当 `ASR_BACKEND=volcengine` 时需要 | - Dangerous shell operationline 130
sudo apt install ffmpeg - Network accessline 149
# 克隆仓库 git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary - Network accessline 150
git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary - Network accessline 163
如需处理抖音、小红书或 B 站,推荐注册 [AI Douyin](https://top9.cc) 并创建 API Key;YouTube 不需要视频解析代理。已有 TikHub 用户可改用自有 TikHub Token。然后配置你要使用的字幕后端。 - Access to secretsline 165
[Credential-related source omitted] - Access to secretsline 168
[Credential-related source omitted] - Access to secretsline 169
[Credential-related source omitted] - Network accessline 178
# 默认推荐:AI Douyin 代理(成功解析下载直链后扣 1 积分) export VIDEO_INFO_PROVIDER="ai-douyin" export AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 179
[Credential-related source omitted] - Network accessline 180
export AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 181
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Access to secretsline 191
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Network accessline 212
请帮我提取这个视频的字幕并总结:https://v.douyin.com/xxxxxx/ - Network accessline 216
请帮我总结这个小红书视频:https://www.xiaohongshu.com/explore/xxxxxx - Network accessline 220
请帮我总结这个B站视频:https://www.bilibili.com/video/BVxxxxxxxxxx/ - Network accessline 224
请帮我总结这个 YouTube 视频:https://www.youtube.com/watch?v=O87FdYIPeQk - Network accessline 230
/video-to-subtitle-summary https://v.douyin.com/xxxxxx/ - Network accessline 252
python3 ~/.codex/skills/video-to-subtitle-summary/scripts/download_youtube_subtitles.py \ "https://www.youtube.com/watch?v=O87FdYIPeQk" \ - Network accessline 253
"https://www.youtube.com/watch?v=O87FdYIPeQk" \ - Access to secretsline 262
[Credential-related source omitted] - Access to secretsline 277
[Credential-related source omitted]
README_en.md
- Network accessline 26
> Douyin, Xiaohongshu, and Bilibili use [AI Douyin](https://top9.cc) by default to resolve download URLs. New users can try the free quota; each successful download URL resolution costs 1 credit. Existing TikHub users can switch to their ow - Network accessline 64
| Dependency | Description | |-----------|-------------| | Codex or [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Agent environment with local Skill support | - Network accessline 65
|-----------|-------------| | Codex or [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Agent environment with local Skill support | | [FFmpeg](https://ffmpeg.org/) | Audio/video processing tool | - Network accessline 66
| Codex or [Claude Code](https://docs.anthropic.com/en/docs/claude-code) | Agent environment with local Skill support | | [FFmpeg](https://ffmpeg.org/) | Audio/video processing tool | | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Video dow - Network accessline 67
| [FFmpeg](https://ffmpeg.org/) | Audio/video processing tool | | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Video download and YouTube subtitle tool (Bilibili / YouTube) | | [AI Douyin](https://top9.cc) API Key | Recommended video parsin - Network accessline 68
| [yt-dlp](https://github.com/yt-dlp/yt-dlp) | Video download and YouTube subtitle tool (Bilibili / YouTube) | - Network accessline 69
| [AI Douyin](https://top9.cc) API Key | Recommended video parsing/download proxy; free trial quota for new users | - Network accessline 70
| [TikHub](https://tikhub.io/) account | Optional video API provider if you want to use your own TikHub token | - Network accessline 71
| Python 3.9+ + [faster-whisper](https://github.com/SYSTRAN/faster-whisper) | Required when `ASR_BACKEND=faster-whisper` | - Network accessline 72
| [Volcengine](https://www.volcengine.com/) account | Required when `ASR_BACKEND=volcengine` | - Dangerous shell operationline 111
sudo apt install ffmpeg - Network accessline 130
# Clone the repository git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary - Network accessline 131
git clone https://github.com/imlewc/video-to-subtitle-summary-skill.git video-to-subtitle-summary - Network accessline 144
If you need Douyin, Xiaohongshu, or Bilibili, register [AI Douyin](https://top9.cc) and create an API Key. YouTube does not require a video parsing proxy. Existing TikHub users can switch to their own TikHub token. Then set the subtitle bac - Access to secretsline 149
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Network accessline 158
# Recommended default: AI Douyin proxy export VIDEO_INFO_PROVIDER="ai-douyin" export AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 159
[Credential-related source omitted] - Network accessline 160
export AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 161
[Credential-related source omitted] - Access to secretsline 164
[Credential-related source omitted] - Access to secretsline 171
[Credential-related source omitted] - Access to secretsline 178
[Credential-related source omitted] - Network accessline 192
Please extract subtitles and summarize this video: https://v.douyin.com/xxxxxx/ - Network accessline 196
Please summarize this Xiaohongshu video: https://www.xiaohongshu.com/explore/xxxxxx - Network accessline 200
Please summarize this Bilibili video: https://www.bilibili.com/video/BVxxxxxxxxxx/ - Network accessline 204
Please summarize this YouTube video: https://www.youtube.com/watch?v=O87FdYIPeQk - Network accessline 210
/video-to-subtitle-summary https://v.douyin.com/xxxxxx/ - Network accessline 232
python3 ~/.codex/skills/video-to-subtitle-summary/scripts/download_youtube_subtitles.py \ "https://www.youtube.com/watch?v=O87FdYIPeQk" \ - Network accessline 233
"https://www.youtube.com/watch?v=O87FdYIPeQk" \ - Access to secretsline 242
[Credential-related source omitted] - Access to secretsline 257
[Credential-related source omitted]
SKILL.md
- Network accessline 49
ASR_BACKEND="faster-whisper" VIDEO_INFO_PROVIDER="ai-douyin" AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 50
[Credential-related source omitted] - Network accessline 51
AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 52
[Credential-related source omitted] - Network accessline 67
export ASR_BACKEND="faster-whisper" export VIDEO_INFO_PROVIDER="ai-douyin" export AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 68
[Credential-related source omitted] - Network accessline 69
export AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 70
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Network accessline 157
[ -z "$VIDEO_INFO_PROVIDER" ] && VIDEO_INFO_PROVIDER="ai-douyin" AI_DOUYIN_API_BASE="$(read_env AI_DOUYIN_API_BASE)" [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 158
[Credential-related source omitted] - Network accessline 159
[ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 160
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 175
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted] - Network accessline 217
- `ASR_BACKEND=faster-whisper`:优先运行 `python3 "$SKILL_DIR/scripts/install_faster_whisper.py"`,或参考 [docs/faster-whisper-setup.md](./docs/faster-whisper-setup.md) - `ASR_BACKEND=volcengine`:参考 [docs/bytedance-vc-setup.md](./docs/bytedance-vc-s - Network accessline 219
[Credential-related source omitted] - Access to secretsline 219
[Credential-related source omitted] - Network accessline 234
AI Douyin 适合不想单独注册 TikHub 的用户。注册 [https://top9.cc](https://top9.cc) 后领取免费额度并创建 API Key,成功解析下载直链后扣 1 积分;失败不扣。余额不足时接口返回 HTTP `402` / `insufficient balance`。 - Access to secretsline 239
[Credential-related source omitted] - Network accessline 249
AI_DOUYIN_API_BASE="$(read_env AI_DOUYIN_API_BASE)" [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 250
[ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 251
[Credential-related source omitted] - Network accessline 253
# API Base 支持填 https://top9.cc 或 https://top9.cc/api/v1 case "$AI_DOUYIN_API_BASE" in */api/v1) AI_DOUYIN_DOWNLOAD_URL_ENDPOINT="$AI_DOUYIN_API_BASE/video/download-url" ;; - Network accessline 260
[Credential-related source omitted] - Access to secretsline 260
[Credential-related source omitted] - Access to secretsline 261
[Credential-related source omitted] - Network accessline 269
if [ "$HTTP_CODE" = "402" ]; then echo "ERROR: AI Douyin 余额不足(insufficient balance)。请到 https://top9.cc 购买积分,或改用 VIDEO_INFO_PROVIDER=tikhub + TIKHUB_TOKEN。" - Network accessline 270
echo "ERROR: AI Douyin 余额不足(insufficient balance)。请到 https://top9.cc 购买积分,或改用 VIDEO_INFO_PROVIDER=tikhub + TIKHUB_TOKEN。" - Access to secretsline 273
[Credential-related source omitted] - Network accessline 301
curl -s -X GET "https://api.tikhub.io/api/v1/hybrid/video_data?url={ENCODED_URL}&minimal=true" \ - Network accessline 315
curl -s -X GET "https://api.tikhub.io/api/v1/xiaohongshu/web/get_note_info_v7?share_text={ENCODED_URL}" \ - Network accessline 323
curl -s -X GET "https://api.tikhub.io/api/v1/bilibili/web/fetch_one_video_v3?url={ENCODED_URL}" \ - Access to secretsline 350
[Credential-related source omitted] - Network accessline 361
[ -d "$SKILL_DIR" ] || SKILL_DIR="$HOME/.claude/skills/video-to-subtitle-summary" python3 "$SKILL_DIR/scripts/download_youtube_subtitles.py" \ "https://www.youtube.com/watch?v={VIDEO_ID}" \ - Network accessline 362
python3 "$SKILL_DIR/scripts/download_youtube_subtitles.py" "https://www.youtube.com/watch?v={VIDEO_ID}" - Network accessline 363
"https://www.youtube.com/watch?v={VIDEO_ID}" \ - Network accessline 389
mkdir -p /tmp/video_analysis/{BVID} yt-dlp -o /tmp/video_analysis/{BVID}/video.mp4 "https://www.bilibili.com/video/{BVID}/" - Network accessline 390
yt-dlp -o /tmp/video_analysis/{BVID}/video.mp4 "https://www.bilibili.com/video/{BVID}/" - Access to secretsline 439
[Credential-related source omitted] - Access to secretsline 444
[Credential-related source omitted] - Network accessline 448
[Credential-related source omitted] - Access to secretsline 448
[Credential-related source omitted] - Access to secretsline 450
[Credential-related source omitted] - Access to secretsline 459
[Credential-related source omitted] - Access to secretsline 464
[Credential-related source omitted] - Network accessline 468
[Credential-related source omitted] - Access to secretsline 468
[Credential-related source omitted] - Access to secretsline 469
[Credential-related source omitted] - Access to secretsline 574
[Credential-related source omitted] - Dangerous shell operationline 581
| FFmpeg 找不到 | macOS: `brew install ffmpeg` / Linux: `sudo apt install ffmpeg` / Windows: `choco install ffmpeg` |
docs/ai-douyin-setup.md
- Network accessline 13
1. 打开 [https://top9.cc](https://top9.cc) - Network accessline 20
VIDEO_INFO_PROVIDER=ai-douyin AI_DOUYIN_API_BASE=https://top9.cc - Network accessline 21
AI_DOUYIN_API_BASE=https://top9.cc - Access to secretsline 22
[Credential-related source omitted] - Network accessline 32
curl -sS -X POST "https://top9.cc/api/v1/video/download-url" \ - Network accessline 33
[Credential-related source omitted] - Network accessline 35
-d '{"url":"https://v.douyin.com/xxxxxx/"}' - Network accessline 41
{ "download_url": "https://...", - Network accessline 42
"download_url": "https://...", - Network accessline 43
"download_urls": ["https://...", "https://..."], - Network accessline 44
"extracted_url": "https://v.douyin.com/xxxxxx/", - Access to secretsline 61
[Credential-related source omitted]
docs/bytedance-vc-setup.md
- Network accessline 5
> 官方 API 文档:https://www.volcengine.com/docs/6561/80909 - Network accessline 11
**https://console.volcengine.com** - Network accessline 19
**https://console.volcengine.com/speech/service/9** - Access to secretsline 51
[Credential-related source omitted] - Network accessline 59
# 准备一个测试音频文件(mp3格式),然后执行: curl -s -X POST "https://openspeech.bytedance.com/api/v1/vc/submit?appid=$BYTEDANCE_VC_APPID&language=zh-CN" \ - Network accessline 60
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 62
[Credential-related source omitted] - Network accessline 77
POST https://openspeech.bytedance.com/api/v1/vc/submit - Network accessline 96
curl -s -X POST "https://openspeech.bytedance.com/api/v1/vc/submit?appid=$APPID&language=zh-CN" \ - Network accessline 104
curl -s -X POST "https://openspeech.bytedance.com/api/v1/vc/submit?appid=$APPID&language=zh-CN" \ - Network accessline 105
[Credential-related source omitted] - Network accessline 107
-d '{"url":"https://example.com/audio.mp3"}' - Network accessline 113
GET https://openspeech.bytedance.com/api/v1/vc/query - Network accessline 166
**Q: AppID 和 Token 在哪里找?** A: 直接访问 [控制台](https://console.volcengine.com/speech/service/9),页面底部 **"服务接口认证信息"** 区域即可找到 APP ID 和 Access Token。 - Network accessline 167
A: 直接访问 [控制台](https://console.volcengine.com/speech/service/9),页面底部 **"服务接口认证信息"** 区域即可找到 APP ID 和 Access Token。
docs/faster-whisper-setup.md
- Network accessline 5
官方参考: - [faster-whisper README](https://github.com/SYSTRAN/faster-whisper) - Network accessline 6
- [faster-whisper README](https://github.com/SYSTRAN/faster-whisper) - Network accessline 7
- [CTranslate2 Hardware Support](https://opennmt.net/CTranslate2/hardware_support.html) - Dangerous shell operationline 67
sudo apt install ffmpeg
docs/plans/2026-05-22-ai-douyin-credit-proxy-plan.md
- Network accessline 5
**Goal:** 让 `video-to-subtitle-summary` skill 默认支持 `https://top9.cc` 作为视频解析/下载代理:用户无需注册 TikHub,只需注册 AI Douyin、领取免费额度、创建 API Key 后即可试用;后续可在 AI Douyin 购买积分,或改回自有 TikHub Token。 - Access to secretsline 7
[Credential-related source omitted] - Network accessline 144
### Task 1.4: 线上 API 使用说明与 curl 示例 - Network accessline 155
curl -sS -X POST 'https://top9.cc/api/v1/video/download-url' \ - Network accessline 156
[Credential-related source omitted] - Network accessline 158
-d '{"url":"https://v.douyin.com/.../"}' - Network accessline 163
{ "download_url": "https://...mp4...", - Network accessline 164
"download_url": "https://...mp4...", - Network accessline 165
"extracted_url": "https://v.douyin.com/.../", - Network accessline 186
2. 创建一个 API Key。 3. 在 skill 的 .env 中配置: AI_DOUYIN_API_BASE=https://top9.cc - Network accessline 187
[Credential-related source omitted] - Access to secretsline 187
[Credential-related source omitted] - Network accessline 188
AI_DOUYIN_API_BASE=https://top9.cc - Access to secretsline 189
[Credential-related source omitted] - Network accessline 228
# 推荐:AI Douyin 代理,注册即可领取免费额度 AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 229
AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 230
[Credential-related source omitted] - Access to secretsline 252
[Credential-related source omitted] - Network accessline 253
- 否则若 `TIKHUB_TOKEN` 存在,走 TikHub。 - 两者都没有时,提示: 1. 去 `https://top9.cc` 注册领取免费额度并创建 API Key;或 - Network accessline 254
- 两者都没有时,提示: 1. 去 `https://top9.cc` 注册领取免费额度并创建 API Key;或 2. 自行注册 TikHub 并填 `TIKHUB_TOKEN`。 - Network accessline 255
1. 去 `https://top9.cc` 注册领取免费额度并创建 API Key;或 - Network accessline 260
AI_DOUYIN_API_BASE="$(read_env AI_DOUYIN_API_BASE)" [ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc" - Network accessline 261
[ -z "$AI_DOUYIN_API_BASE" ] && AI_DOUYIN_API_BASE="https://top9.cc" - Access to secretsline 262
[Credential-related source omitted] - Network accessline 265
if [ "$PLATFORM" != "youtube" ]; then if [ -z "$AI_DOUYIN_API_KEY" ] && [ -z "$TIKHUB_TOKEN" ]; then echo "ERROR: 缺少视频解析凭证。推荐注册 https://top9.cc 获取免费额度并创建 API Key;或配置自己的 TIKHUB_TOKEN。" - Network accessline 266
[Credential-related source omitted] - Access to secretsline 266
[Credential-related source omitted] - Network accessline 267
echo "ERROR: 缺少视频解析凭证。推荐注册 https://top9.cc 获取免费额度并创建 API Key;或配置自己的 TIKHUB_TOKEN。" - Access to secretsline 287
[Credential-related source omitted] - Network accessline 291
**Curl equivalent:** - Network accessline 293
[Credential-related source omitted] - Access to secretsline 293
[Credential-related source omitted] - Access to secretsline 294
[Credential-related source omitted] - Network accessline 315
### 不想注册 TikHub? 可以使用在线代理:注册 [AI Douyin](https://top9.cc) 后领取免费额度,创建 API Key,填入: - Network accessline 316
可以使用在线代理:注册 [AI Douyin](https://top9.cc) 后领取免费额度,创建 API Key,填入: - Network accessline 318
AI_DOUYIN_API_BASE=https://top9.cc - Access to secretsline 319
[Credential-related source omitted] - Network accessline 345
curl -sS -X POST 'http://localhost:18088/api/v1/video/download-url' \ - Network accessline 346
[Credential-related source omitted] - Network accessline 348
-d '{"url":"https://v.douyin.com/.../"}' | jq - Access to secretsline 364
[Credential-related source omitted] - Access to secretsline 365
[Credential-related source omitted] - Access to secretsline 366
[Credential-related source omitted] - Network accessline 375
**Objective:** 线上 `https://top9.cc` 提供稳定代理能力。 - Network accessline 402
[Credential-related source omitted] - Access to secretsline 402
[Credential-related source omitted] - Network accessline 403
- TikHub 从必需改为可选。 - 免费试用入口:`https://top9.cc`。 - 余额不足时可充值或配置自有 TikHub。 - Network accessline 404
- 免费试用入口:`https://top9.cc`。
docs/tikhub-setup.md
- Network accessline 9
**https://user.tikhub.io/register?referral_code=2lyqStPc** - Access to secretsline 36
[Credential-related source omitted] - Network accessline 43
[Credential-related source omitted] - Access to secretsline 43
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted]
scripts/download_video_candidates.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 53
output_path: Path, *, opener: Callable[..., Any] = urllib.request.urlopen, - Network accessline 54
*, opener: Callable[..., Any] = urllib.request.urlopen, timeout: int = 30, - Network accessline 55
opener: Callable[..., Any] = urllib.request.urlopen, - Network accessline 66
request = urllib.request.Request(candidate, headers={"User-Agent": USER_AGENT})
scripts/download_youtube_subtitles.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/install_faster_whisper.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 26
DEFAULT_MIRRORS = ( PyPIMirror("清华", "https://pypi.tuna.tsinghua.edu.cn/simple", "pypi.tuna.tsinghua.edu.cn"), - Network accessline 27
PyPIMirror("清华", "https://pypi.tuna.tsinghua.edu.cn/simple", "pypi.tuna.tsinghua.edu.cn"), - Network accessline 28
PyPIMirror("阿里", "https://mirrors.aliyun.com/pypi/simple", "mirrors.aliyun.com"), - Network accessline 29
PyPIMirror("腾讯", "https://mirrors.cloud.tencent.com/pypi/simple", "mirrors.cloud.tencent.com"), - Network accessline 30
PyPIMirror("中科大", "https://pypi.mirrors.ustc.edu.cn/simple", "pypi.mirrors.ustc.edu.cn"), - Network accessline 31
PyPIMirror("官方", "https://pypi.org/simple", None), - Network accessline 45
def probe_mirror(mirror: PyPIMirror, timeout: float) -> float | None: target = mirror.index_url.rstrip("/") + "/faster-whisper/" request = urllib.request.Request(target, headers={"User-Agent": "video-to-subtitle-summary/installer"}) - Network accessline 46
target = mirror.index_url.rstrip("/") + "/faster-whisper/" request = urllib.request.Request(target, headers={"User-Agent": "video-to-subtitle-summary/installer"}) started = time.monotonic() - Network accessline 47
request = urllib.request.Request(target, headers={"User-Agent": "video-to-subtitle-summary/installer"}) - Network accessline 48
started = time.monotonic() try: with urllib.request.urlopen(request, timeout=timeout) as response: - Network accessline 49
try: with urllib.request.urlopen(request, timeout=timeout) as response: response.read(1024) - Network accessline 50
with urllib.request.urlopen(request, timeout=timeout) as response:
scripts/list_ai_douyin_tasks.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 17
DEFAULT_API_BASE = "https://top9.cc" - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Network accessline 57
status: str = "", search: str = "", opener: Callable[..., Any] = urllib.request.urlopen, - Network accessline 58
search: str = "", opener: Callable[..., Any] = urllib.request.urlopen, timeout: int = 30, - Network accessline 59
opener: Callable[..., Any] = urllib.request.urlopen, - Network accessline 71
[Credential-related source omitted] - Network accessline 72
[Credential-related source omitted] - Access to secretsline 72
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 149
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 156
[Credential-related source omitted]
scripts/transcribe_faster_whisper.py
- Executable scriptline 1
#!/usr/bin/env python3
tests/test_download_video_candidates.py
- Executable scriptline 1
Executable file - Network accessline 48
module = load_module() response = { "download_url": "https://cdn.example/a.mp4", - Network accessline 49
response = { "download_url": "https://cdn.example/a.mp4", "download_urls": [ - Network accessline 50
"download_url": "https://cdn.example/a.mp4", - Network accessline 51
"download_urls": [ "https://cdn.example/a.mp4", "https://cdn.example/b.mp4", - Network accessline 52
"https://cdn.example/a.mp4", - Network accessline 53
"https://cdn.example/b.mp4", - Network accessline 54
"https://cdn.example/a.mp4", - Network accessline 60
self.assertEqual( candidates, ["https://cdn.example/a.mp4", "https://cdn.example/b.mp4"], - Network accessline 61
candidates, ["https://cdn.example/a.mp4", "https://cdn.example/b.mp4"], ) - Network accessline 62
["https://cdn.example/a.mp4", "https://cdn.example/b.mp4"], - Network accessline 69
def opener(request, timeout): attempts.append(request.full_url) if request.full_url == "https://cdn.example/bad.mp4": - Network accessline 70
attempts.append(request.full_url) if request.full_url == "https://cdn.example/bad.mp4": raise OSError("network stalled") - Network accessline 71
if request.full_url == "https://cdn.example/bad.mp4": - Network accessline 76
output_path = Path(tmpdir) / "video.mp4" result = module.download_first_working_candidate( ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"], - Network accessline 77
result = module.download_first_working_candidate( ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"], output_path, - Network accessline 78
["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"], - Network accessline 84
self.assertEqual(result, "https://cdn.example/good.mp4") - Network accessline 85
self.assertEqual(attempts, ["https://cdn.example/bad.mp4", "https://cdn.example/good.mp4"]) - Network accessline 88
[Credential-related source omitted] - Network accessline 90
[Credential-related source omitted]
tests/test_download_youtube_subtitles.py
tests/test_install_faster_whisper.py
- Executable scriptline 1
Executable file - Network accessline 25
module = load_module() mirrors = [ module.PyPIMirror("slow", "https://slow.example/simple", None), - Network accessline 26
mirrors = [ module.PyPIMirror("slow", "https://slow.example/simple", None), module.PyPIMirror("fast", "https://fast.example/simple", None), - Network accessline 27
module.PyPIMirror("slow", "https://slow.example/simple", None), - Network accessline 28
module.PyPIMirror("fast", "https://fast.example/simple", None), - Network accessline 29
module.PyPIMirror("down", "https://down.example/simple", None), - Network accessline 43
mirror = module.PyPIMirror( "清华", "https://pypi.tuna.tsinghua.edu.cn/simple", - Network accessline 44
"清华", "https://pypi.tuna.tsinghua.edu.cn/simple", "pypi.tuna.tsinghua.edu.cn", - Network accessline 45
"https://pypi.tuna.tsinghua.edu.cn/simple", - Network accessline 54
self.assertEqual(command[0], "/tmp/fw-venv/bin/python") self.assertIn("-i", command) self.assertIn("https://pypi.tuna.tsinghua.edu.cn/simple", command) - Network accessline 55
self.assertIn("-i", command) self.assertIn("https://pypi.tuna.tsinghua.edu.cn/simple", command) self.assertIn("--trusted-host", command) - Network accessline 56
self.assertIn("https://pypi.tuna.tsinghua.edu.cn/simple", command)
tests/test_list_ai_douyin_tasks.py
- Executable scriptline 1
Executable file - Network accessline 41
self.assertEqual( module.build_tasks_endpoint("https://top9.cc"), - Network accessline 42
module.build_tasks_endpoint("https://top9.cc"), - Network accessline 43
"https://top9.cc/api/v1/tasks", - Network accessline 44
) self.assertEqual( module.build_tasks_endpoint("https://top9.cc/api"), - Network accessline 45
self.assertEqual( module.build_tasks_endpoint("https://top9.cc/api"), "https://top9.cc/api/v1/tasks", - Network accessline 46
module.build_tasks_endpoint("https://top9.cc/api"), - Network accessline 47
"https://top9.cc/api/v1/tasks", - Network accessline 48
) self.assertEqual( module.build_tasks_endpoint("https://top9.cc/api/v1"), - Network accessline 49
self.assertEqual( module.build_tasks_endpoint("https://top9.cc/api/v1"), "https://top9.cc/api/v1/tasks", - Network accessline 50
module.build_tasks_endpoint("https://top9.cc/api/v1"), - Network accessline 51
"https://top9.cc/api/v1/tasks", - Network accessline 58
def opener(request, timeout): requests.append((request, timeout)) - Network accessline 59
requests.append((request, timeout)) - Network accessline 64
response = module.fetch_tasks( "https://top9.cc/api/v1/tasks", - Network accessline 65
"https://top9.cc/api/v1/tasks", - Network accessline 92
"taskId": "task_123", "title": "测试标题", "url": "https://v.douyin.com/demo/", - Network accessline 93
"title": "测试标题", "url": "https://v.douyin.com/demo/", } - Network accessline 94
"url": "https://v.douyin.com/demo/",
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 5 facts
- Contacts pypi.tuna.tsinghua.edu.cn, which SKILL.md, the README and the plugin manifest do not mentionscripts/install_faster_whisper.py:27High confidence
- Contacts mirrors.aliyun.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/install_faster_whisper.py:28High confidence
- Contacts mirrors.cloud.tencent.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/install_faster_whisper.py:29High confidence
- Contacts pypi.mirrors.ustc.edu.cn, which SKILL.md, the README and the plugin manifest do not mentionscripts/install_faster_whisper.py:30High confidence
- Contacts pypi.org, which SKILL.md, the README and the plugin manifest do not mentionscripts/install_faster_whisper.py:31High confidence
Signal confidence: 300 facts
- Network access in code of documentationREADME.md:19Low confidence
- Network access in prose of documentationREADME.md:34Low confidence
- Network access in prose of documentationREADME.md:40Low confidence
- Network access in prose of documentationREADME.md:83Low confidence
- Network access in prose of documentationREADME.md:84Low confidence
- Network access in prose of documentationREADME.md:85Low confidence
- Network access in prose of documentationREADME.md:86Low confidence
- Network access in prose of documentationREADME.md:87Low confidence
- Network access in prose of documentationREADME.md:88Low confidence
- Network access in prose of documentationREADME.md:89Low confidence
- Network access in prose of documentationREADME.md:90Low confidence
- Network access in prose of documentationREADME.md:91Low confidence
- Dangerous shell operation in code of documentationREADME.md:130Low confidence
- Network access in code of documentationREADME.md:149Low confidence
- Network access in code of documentationREADME.md:150Low confidence
- Network access in prose of documentationREADME.md:163Low confidence
- Access to secrets in prose of documentationREADME.md:165Low confidence
- Access to secrets in code of documentationREADME.md:168Low confidence
- Access to secrets in code of documentationREADME.md:169Low confidence
- Network access in code of documentationREADME.md:178Low confidence
- Network access in code of documentationREADME.md:179Low confidence
- Network access in code of documentationREADME.md:180Low confidence
- Access to secrets in code of documentationREADME.md:181Low confidence
- Access to secrets in code of documentationREADME.md:184Low confidence
- Access to secrets in code of documentationREADME.md:191Low confidence
- Access to secrets in prose of documentationREADME.md:198Low confidence
- Network access in code of documentationREADME.md:212Low confidence
- Network access in code of documentationREADME.md:216Low confidence
- Network access in code of documentationREADME.md:220Low confidence
- Network access in code of documentationREADME.md:224Low confidence
- Network access in code of documentationREADME.md:230Low confidence
- Network access in code of documentationREADME.md:252Low confidence
- Network access in code of documentationREADME.md:253Low confidence
- Access to secrets in prose of documentationREADME.md:262Low confidence
- Access to secrets in prose of documentationREADME.md:277Low confidence
- Network access in prose of documentationREADME_en.md:26Low confidence
- Network access in prose of documentationREADME_en.md:64Low confidence
- Network access in prose of documentationREADME_en.md:65Low confidence
- Network access in prose of documentationREADME_en.md:66Low confidence
- Network access in prose of documentationREADME_en.md:67Low confidence
- Network access in prose of documentationREADME_en.md:68Low confidence
- Network access in prose of documentationREADME_en.md:69Low confidence
- Network access in prose of documentationREADME_en.md:70Low confidence
- Network access in prose of documentationREADME_en.md:71Low confidence
- Network access in prose of documentationREADME_en.md:72Low confidence
- Dangerous shell operation in code of documentationREADME_en.md:111Low confidence
- Network access in code of documentationREADME_en.md:130Low confidence
- Network access in code of documentationREADME_en.md:131Low confidence
- Network access in prose of documentationREADME_en.md:144Low confidence
- Access to secrets in code of documentationREADME_en.md:149Low confidence
and 250 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.