Not in the top 1,000 by GitHub stars

ALBEDO-TABAI/video-copy-analyzer

Video Copy Analyzer - AI-powered video transcription and copywriting analysis skill

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

76dc5f0f2ce1 → 76dc5f0f2ce1

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 76dc5f0f2ce1

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 76dc5f0f2ce1719706c8a5490818ff36639a866d

210GitHub stars
0stars in 7 days
1skill in this repository
0commits in 30 days

Heat

0.3
  • 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

Oct 25, 2026Nov 4, 2026211

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

video-copy-analyzer

When your agent uses it

视频文案分析一站式工具。下载在线视频(B站/YouTube/抖音等)、使用FunASR进行高速中文语音转录、 自动校正文稿、并进行三维度综合分析(TextContent/Viral/Brainstorming)。 使用场景:当用户需要分析短视频文案、提取视频内容、学习爆款文案技巧时。 关键词:视频分析、文案分析、语音转文字、FunASR、爆款分析、视频下载

What it loads into context

Frontmatter

122 tokens

Always available to the agent

SKILL.md

3,782 tokens

When the skill is activated

Reference documents

4,147 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. 安装部署
  2. 首次使用设置
  3. 工作流程(5 阶段)
  4. 完成后输出
  5. 参考文件
  6. FunASR 技术细节
  7. 故障排除

Scripts executed separately

  • main.py
  • scripts/check_environment.py
  • scripts/douyin_browser.mjs
  • scripts/download_douyin.py
  • scripts/extract_subtitle.py
  • scripts/extract_subtitle_funasr.py
  • scripts/fetch_bilibili_subtitle.py
  • scripts/transcribe_audio.py

Files

  • .gitignoreasset271 bytes
  • LICENSEasset1,056 bytes
  • README.mddoc5,630 bytes
  • README.zh-CN.mddoc5,384 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • SKILL.mdcore12,791 bytes
  • main.pyruns6,714 bytes
  • references/analysis-frameworks.mddoc3,222 bytes
  • scripts/check_environment.pyruns3,069 bytes
  • scripts/douyin_browser.mjsruns10,539 bytes
  • scripts/download_douyin.pyruns14,860 bytes
  • scripts/extract_subtitle.pyruns9,081 bytes
  • scripts/extract_subtitle_funasr.pyruns18,558 bytes
  • scripts/fetch_bilibili_subtitle.pyruns14,931 bytes
  • scripts/transcribe_audio.pyruns3,986 bytes
Read SKILL.md

# 视频文案分析工具

一站式视频内容提取与文案分析,支持 B站、YouTube、抖音 等平台。

## 安装部署

### 系统要求

- Python 3.9+
- FFmpeg(用于音视频处理)
- 约 3GB 磁盘空间(FunASR 模型缓存)

### 一键安装
View the complete source on GitHub

Skills included

  • video-copy-analyzer

Repository facts

License
MIT
Created
Feb 3, 2026
Last pushed
Aug 18, 2026
Forks
15
Open issues
0
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 9 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 105 signals by file

.gitignore

  • Access to secretsline 11
    [Credential-related source omitted]

README.md

  • Network accessline 9
    [![Claude 4.5 Opus](https://img.shields.io/badge/Tested%20on-Claude%204.5%20Opus-blue)](https://claude.ai)
  • Network accessline 10
    [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
  • Network accessline 57
    git clone https://github.com/ALBEDO-TABAI/video-copy-analyzer.git .agent/skills/video-copy-analyzer
  • Network accessline 62
    > "Analyze this video: https://www.bilibili.com/video/BV1xxxxx"

README.zh-CN.md

  • Network accessline 9
    [![Claude 4.5 Opus](https://img.shields.io/badge/测试环境-Claude%204.5%20Opus-blue)](https://claude.ai)
  • Network accessline 10
    [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
  • Network accessline 57
    git clone https://github.com/ALBEDO-TABAI/video-copy-analyzer.git .agent/skills/video-copy-analyzer
  • Network accessline 62
    > "分析这个视频:https://www.bilibili.com/video/BV1xxxxx"

SKILL.md

  • Network accessline 347
    ### FunASR 模型下载失败 如果 ModelScope 下载速度慢或中断,可手动从 [ModelScope](https://www.modelscope.cn/models) 下载以下模型到 `~/.cache/modelscope/hub/models/iic/` 目录:
  • Network accessline 348
    如果 ModelScope 下载速度慢或中断,可手动从 [ModelScope](https://www.modelscope.cn/models) 下载以下模型到 `~/.cache/modelscope/hub/models/iic/` 目录:

main.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 147
    print()         print("示例:")         print("  python main.py https://www.bilibili.com/video/BVxxxx")
  • Network accessline 148
    print("示例:")         print("  python main.py https://www.bilibili.com/video/BVxxxx")         print("  python main.py ./my_video.mp4 ./output medium zh")
  • Network accessline 149
    print("  python main.py https://www.bilibili.com/video/BVxxxx")

scripts/check_environment.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 57
    else:         print("   ❌ FFmpeg 未安装")         missing.append("下载 FFmpeg: https://ffmpeg.org/download.html")
  • Network accessline 58
    print("   ❌ FFmpeg 未安装")         missing.append("下载 FFmpeg: https://ffmpeg.org/download.html")         all_ok = False
  • Network accessline 59
    missing.append("下载 FFmpeg: https://ffmpeg.org/download.html")

scripts/douyin_browser.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 89
    for (let i = 0; i < tries; i++) {     try {       const res = await fetch(url, { signal: AbortSignal.timeout(400) });
  • Network accessline 90
    try {       const res = await fetch(url, { signal: AbortSignal.timeout(400) });       if (res.ok) return res.json();
  • Network accessline 91
    const res = await fetch(url, { signal: AbortSignal.timeout(400) });
  • Network accessline 154
    const created = await cdpCall(browserWs, 1, 'Target.createTarget', { url: 'about:blank' });   const listed = await fetch(`${cdpOrigin}/json/list`).then((r) => r.json());
  • Network accessline 155
    const listed = await fetch(`${cdpOrigin}/json/list`).then((r) => r.json());
  • Network accessline 195
    const targets = [pageUrl];   if (awemeId) {     targets.push(`https://www.douyin.com/video/${awemeId}`);
  • Network accessline 196
    if (awemeId) {     targets.push(`https://www.douyin.com/video/${awemeId}`);     targets.push(`https://www.douyin.com/jingxuan?modal_id=${awemeId}`);
  • Network accessline 197
    targets.push(`https://www.douyin.com/video/${awemeId}`);
  • Network accessline 198
    targets.push(`https://www.douyin.com/jingxuan?modal_id=${awemeId}`);
  • Network accessline 201
    await cdpCall(ws, 12, 'Page.navigate', { url: 'https://www.douyin.com/' });
  • Network accessline 317
    log(`using browser: ${bin}`);     child = launchBrowser(bin, port, profile);     origin = `http://127.0.0.1:${port}`;
  • Network accessline 318
    child = launchBrowser(bin, port, profile);     origin = `http://127.0.0.1:${port}`;   } else {
  • Network accessline 319
    origin = `http://127.0.0.1:${port}`;

scripts/download_douyin.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 9
    示例:     python download_douyin.py "https://v.douyin.com/xxxxx" ./video.mp4
  • Network accessline 10
    python download_douyin.py "https://v.douyin.com/xxxxx" ./video.mp4
  • Network accessline 11
    python download_douyin.py "https://www.douyin.com/video/xxxxx" ./video.mp4
  • Network accessline 38
    PLAY_HEADERS = {     "User-Agent": UA_DESKTOP,     "Referer": "https://www.douyin.com/",
  • Network accessline 39
    "User-Agent": UA_DESKTOP,     "Referer": "https://www.douyin.com/",     "Accept": "*/*",
  • Network accessline 40
    "Referer": "https://www.douyin.com/",
  • Network accessline 171
    def play_urls_from_uri(uri: str) -> list[str]:     return [         f"https://www.douyin.com/aweme/v1/play/?video_id={uri}&ratio=1080p&line=0",
  • Network accessline 172
    return [         f"https://www.douyin.com/aweme/v1/play/?video_id={uri}&ratio=1080p&line=0",         f"https://aweme.snssdk.com/aweme/v1/play/?video_id={uri}&ratio=720p&line=0",
  • Network accessline 173
    f"https://www.douyin.com/aweme/v1/play/?video_id={uri}&ratio=1080p&line=0",
  • Network accessline 174
    f"https://aweme.snssdk.com/aweme/v1/play/?video_id={uri}&ratio=720p&line=0",
  • Network accessline 220
    pages.extend(             [                 f"https://www.iesdouyin.com/share/video/{aweme_id}",
  • Network accessline 221
    [                 f"https://www.iesdouyin.com/share/video/{aweme_id}",                 f"https://m.douyin.com/share/video/{aweme_id}",
  • Network accessline 222
    f"https://www.iesdouyin.com/share/video/{aweme_id}",
  • Network accessline 223
    f"https://m.douyin.com/share/video/{aweme_id}",
  • Network accessline 401
    if aweme_id:         print(f"✓ 视频 ID: {aweme_id}")         watch_url = f"https://www.douyin.com/video/{aweme_id}"
  • Network accessline 402
    print(f"✓ 视频 ID: {aweme_id}")         watch_url = f"https://www.douyin.com/video/{aweme_id}"     else:
  • Network accessline 403
    watch_url = f"https://www.douyin.com/video/{aweme_id}"
  • Network accessline 439
    if len(sys.argv) < 3:         print("用法: python download_douyin.py <抖音链接> <输出路径>")         print("示例: python download_douyin.py 'https://v.douyin.com/xxxxx' ./video.mp4")
  • Network accessline 440
    print("用法: python download_douyin.py <抖音链接> <输出路径>")         print("示例: python download_douyin.py 'https://v.douyin.com/xxxxx' ./video.mp4")         sys.exit(1)
  • Network accessline 441
    print("示例: python download_douyin.py 'https://v.douyin.com/xxxxx' ./video.mp4")

scripts/extract_subtitle.py

  • Executable scriptline 1
    #!/usr/bin/env python3

scripts/extract_subtitle_funasr.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 77
    headers = {         "User-Agent": "Mozilla/5.0",         "Referer": "https://www.bilibili.com",
  • Network accessline 78
    "User-Agent": "Mozilla/5.0",         "Referer": "https://www.bilibili.com",     }
  • Network accessline 79
    "Referer": "https://www.bilibili.com",
  • Network accessline 82
    try:         resp = requests.get(
  • Network accessline 83
    resp = requests.get(
  • Network accessline 84
    f"https://api.bilibili.com/x/player/pagelist?bvid={bvid}",
  • Network accessline 91
    cid = data["data"][0]["cid"]         resp = requests.get(
  • Network accessline 92
    resp = requests.get(
  • Network accessline 93
    f"https://api.bilibili.com/x/web-interface/view?bvid={bvid}",
  • Network accessline 98
    resp = requests.get(
  • Network accessline 99
    f"https://api.bilibili.com/x/player/wbi/v2?aid={aid}&cid={cid}",
  • Network accessline 111
    resp = requests.get(sub_url, headers=headers, timeout=10)
  • Network accessline 365
    调用方式参照 FunASR 官方 demo:     https://github.com/modelscope/FunASR/blob/main/examples/industrial_data_pretraining/paraformer/demo.py
  • Network accessline 366
    https://github.com/modelscope/FunASR/blob/main/examples/industrial_data_pretraining/paraformer/demo.py

scripts/fetch_bilibili_subtitle.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 11
    [Credential-related source omitted]
  • Network accessline 18
    示例:     python fetch_bilibili_subtitle.py BV1vdZ6BJEcQ output.srt     python fetch_bilibili_subtitle.py "https://www.bilibili.com/video/BV1vdZ6BJEcQ/" output.srt
  • Network accessline 19
    python fetch_bilibili_subtitle.py BV1vdZ6BJEcQ output.srt     python fetch_bilibili_subtitle.py "https://www.bilibili.com/video/BV1vdZ6BJEcQ/" output.srt     python fetch_bilibili_subtitle.py BV1vdZ6BJEcQ output.srt --browser firefox
  • Network accessline 20
    python fetch_bilibili_subtitle.py "https://www.bilibili.com/video/BV1vdZ6BJEcQ/" output.srt
  • Network accessline 52
    if 'b23.tv' in input_str:         try:             resp = requests.head(input_str, allow_redirects=True, timeout=10)
  • Network accessline 53
    try:             resp = requests.head(input_str, allow_redirects=True, timeout=10)             match = re.search(r'(BV[a-zA-Z0-9]{10})', resp.url)
  • Network accessline 54
    resp = requests.head(input_str, allow_redirects=True, timeout=10)
  • Access to secretsline 73
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Network accessline 85
    "--no-warnings",             "-q",             "https://www.bilibili.com/video/BV1xx411c7mD/",  # 任意有效BV号
  • Network accessline 86
    "-q",             "https://www.bilibili.com/video/BV1xx411c7mD/",  # 任意有效BV号         ]
  • Network accessline 87
    "https://www.bilibili.com/video/BV1xx411c7mD/",  # 任意有效BV号
  • Access to secretsline 125
    [Credential-related source omitted]
  • Access to secretsline 128
    [Credential-related source omitted]
  • Access to secretsline 178
    [Credential-related source omitted]
  • Access to secretsline 181
    [Credential-related source omitted]
  • Access to secretsline 235
    [Credential-related source omitted]
  • Network accessline 260
    headers = {         "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",         "Referer": "https://www.bilibili.com",
  • Network accessline 261
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",         "Referer": "https://www.bilibili.com",     }
  • Network accessline 262
    "Referer": "https://www.bilibili.com",
  • Network accessline 267
    print("\n📡 调用 B站 API...")         url = f"https://api.bilibili.com/x/player/pagelist?bvid={bvid}"         resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)
  • Network accessline 268
    url = f"https://api.bilibili.com/x/player/pagelist?bvid={bvid}"         resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)         data = resp.json()
  • Network accessline 269
    resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)
  • Network accessline 282
    url = f"https://api.bilibili.com/x/web-interface/view?bvid={bvid}"         resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)
  • Network accessline 283
    resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)
  • Network accessline 295
    url = f"https://api.bilibili.com/x/player/wbi/v2?aid={aid}&cid={cid}"         resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)
  • Network accessline 296
    resp = requests.get(url, headers=headers, cookies=cookies, timeout=10)
  • Network accessline 330
    resp = requests.get(subtitle_url, headers=headers, timeout=10)
  • Network accessline 384
    示例:     python fetch_bilibili_subtitle.py BV1vdZ6BJEcQ output.srt     python fetch_bilibili_subtitle.py "https://b23.tv/W2ot8As" output.srt
  • Network accessline 385
    python fetch_bilibili_subtitle.py BV1vdZ6BJEcQ output.srt     python fetch_bilibili_subtitle.py "https://b23.tv/W2ot8As" output.srt     python fetch_bilibili_subtitle.py BV1vdZ6BJEcQ output.srt --browser firefox
  • Network accessline 386
    python fetch_bilibili_subtitle.py "https://b23.tv/W2ot8As" output.srt
  • Access to secretsline 390
    [Credential-related source omitted]
  • Access to secretsline 419
    [Credential-related source omitted]

scripts/transcribe_audio.py

  • Executable scriptline 1
    #!/usr/bin/env python3

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: 4 facts
Signal confidence: 104 facts

and 54 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.