← 返回
未分类

抖音视频提取文案

从抖音短视频链接中提取音频并使用Whisper转录为中文文本。 当用户提供抖音短链接(v.douyin.com/xxx)并要求 提取、转换或转录视频语音为文本时,应使用此技能。通过 Playwright视频元素捕获处理登录墙绕过。
抖音视频文案提取 / 视频转文字 / 语音转文本。 当用户分享抖音链接(v.douyin.com、douyin.com、iesdouyin.com 等)并提出以下任一意图时,必须使用此技能: - 提取文案 / 提取文字 / 提取字幕 / 提取内容 / 提取文本 - 视频转文字 / 视频转文本 / 语音转录 / 音频转文字 - "这个视频说了什么" / "帮我看看这个视频讲什么" / "总结这个抖音视频" - 复制打开抖音的分享口令(含链接的整段分享文案) 同时适用于用户粘贴完整抖音分享文本(如"0.23 复制打开抖音,看看...")中自动提取链接的场景。 底层使用 Playwright 绕过登录墙捕获视频,Whisper medium 模型本地转录中文,无需云端 API,全程本地化,隐私零风险。
liuzheng60
未分类 community v1.1.1 3 版本 100000 Key: 无需
★ 0
Stars
📥 134
下载
💾 0
安装
3
版本
#latest

概述

抖音视频文案提取 & 本地音视频转录

一句话定位

从抖音链接或本地媒体文件提取语音 → Whisper 本地转录为中文文本 → agent 整理纠错 → 输出可读 Markdown。

触发场景(满足任一即命中)

抖音链接场景

用户输入特征示例
-------------------
抖音链接 + "提取文案/文字/字幕/内容/文本""帮我把这个抖音视频的文案提取出来"
抖音链接 + "转文字/转录/转文本""这个抖音视频转成文字"
抖音链接 + "说了什么/讲什么/总结""这个视频说了什么?帮我看看"
抖音完整分享口令文本(含链接)"0.23 复制打开抖音,看看… https://v.douyin.com/xxx"
任何含 douyin.com 域名且意图是从视频中获取文本"帮我听一下这个视频在讲什么"

本地媒体文件场景

用户输入特征示例
-------------------
提供视频文件路径 + "转文字/转录""把 D:/videos/talk.mp4 转成文字"
提供音频文件路径 + "转文字/转录""帮我听一下这个录音 /path/to/meeting.mp3"
媒体文件 + "字幕" 意图"帮我给这个视频加字幕" / "提取视频字幕"
媒体文件 + "逐字稿/听写/语音识别" 意图"帮我把这段录音做成逐字稿" / "语音识别这个文件"
"提取这个文件里的语音内容""这个录屏里说了什么,提取出来"
任意媒体文件 + 提取文本意图"把这段采访音频转成文本"

> 关键判断逻辑:用户消息中同时出现「抖音链接/分享文本」或「本地媒体文件路径」+「获取文本内容」的意图时触发。

> 文件路径可以是绝对路径(如 D:\videos\test.mp4)、相对路径(如 ./recording.wav),或 WorkBuddy 的 @"..." 附件引用语法。


Agent 执行指引

> 跨机器迁移注意.env_config.jsonsetup_env.py 自动生成,包含机器特定路径。

> 迁移到新机器后必须重新运行 python scripts/setup_env.py,不能直接复制配置文件。

执行此技能时,agent 必须按以下顺序确定 Python 解释器:

import json, os
from pathlib import Path

SKILL_DIR = Path("{skill_install_dir}")  # 运行时替换为实际安装路径
config_file = SKILL_DIR / ".env_config.json"

if config_file.exists():
    config = json.loads(config_file.read_text())
    PYTHON_EXE = config["venv_python"]    # 如 /path/to/venv/bin/python
else:
    # 环境未配置,提示用户运行 setup_env.py
    print("请先运行: python scripts/setup_env.py")
    sys.exit(1)

所有脚本必须用 PYTHON_EXE 运行,不得使用系统默认 python


快速开始

# 1. 首次使用:配置环境(仅需一次)
python scripts/setup_env.py

# 2a. 抖音链接 → 转录
python scripts/fetch_douyin_video.py <抖音短链接>

# 2b. 抖音链接 → 转录(指定输出目录)
python scripts/fetch_douyin_video.py <抖音短链接> --output ./result

# 2c. 本地文件 → 转录
python scripts/transcribe_local.py <视频或音频文件路径>

# 2d. 本地文件 → 转录(指定输出目录)
python scripts/transcribe_local.py audio.mp3 --output ./result

首次配置

scripts/setup_env.py 自动完成以下全部步骤:

  1. 检测兼容的 Python(需要 3.10–3.12,不兼容 3.13)
  2. 创建独立 venv(位于 {skill_dir}/venv/
  3. 按正确顺序安装依赖:numpy<2 → requests/imageio[ffmpeg] → playwright → openai-whisper
  4. 安装 Chromium 浏览器(Playwright 使用)
  5. 验证所有包可正常导入
  6. 保存配置到 .env_config.json(后续脚本自动读取)
python scripts/setup_env.py
python scripts/setup_env.py --force           # 强制重建
python scripts/setup_env.py --mirror=pypi     # 使用官方源

环境要求

需求说明
------------
Python3.10–3.12(3.13 不兼容,greenlet DLL 加载失败)
numpy必须 < 2.0(>=2.0 会触发 ImportError: cannot load module more than once
VC++ RedistWindows 下 torch 需要(下载
磁盘空间~4GB(torch ~2GB + Whisper 模型 ~1.4GB + Chromium ~300MB)

环境验证

python scripts/verify_env.py       # 检查所有依赖
python scripts/verify_env.py --fix # 检查并自动修复
python scripts/verify_env.py --json # JSON 输出(供程序调用)

工作流程

模式 A:抖音链接 → 转录

抖音短链接 → Playwright 捕获视频 URL → 下载视频 → Whisper 转录 → agent 整理 → 保存 Markdown

模式 B:本地文件 → 转录

本地文件路径 → 格式验证 → Whisper 转录 → agent 整理 → 保存 Markdown

两种模式共用 scripts/transcribe.py 中的转录和 MD 写入逻辑。


步骤 1(仅抖音模式):Playwright 捕获视频 URL

无需登录即可提取。Chrome 无头模式下打开短链接,首次等待 8 秒让 JS 填充 video.src,如果未捕获则自动增加等待时间(13 秒)重试一次。Playwright 失败时自动回退到 Douyin API 方案获取视频 URL。

> 为什么不用网络拦截? 登录模态框覆盖时网络拦截失效,但 DOM 中 video.src 已就绪。

步骤 2(仅抖音模式):下载视频(文件名含时间戳)

所有产物共用同一个 YYYYMMDD_HHMMSS 时间戳,重复运行不会覆盖。

from scripts.transcribe import make_timestamp
ts = make_timestamp()  # "20260618_112500"
video_path = f"douyin_video_{ts}.mp4"

步骤 3:Whisper 转录

使用 medium 模型(~1.4GB,首次自动下载后缓存于 ~/.cache/whisper/)。

脚本内置模型缓存损坏自动修复:若检测到模型文件不完整或加载崩溃,自动删除缓存并重新下载。

步骤 4:整理纠错 → 保存 Markdown

脚本不调用外部 LLM。转录完成后输出原始文本,由 agent 自身完成整理:

允许禁止
------------
✅ 添加标点符号❌ 删减内容
✅ 修正 ASR 错字❌ 改写概括
✅ 语义分段断句❌ 添加总结评论

agent 整理完毕后调用 scripts/transcribe.py 中的 write_cleaned_md() 写入 .md 文件。

Agent 调用方式(写入整理后的 MD):

# 抖音来源
cd <工作目录> && <venv_python> -c "
import sys
sys.path.insert(0, '<skill_dir>/scripts')
from transcribe import write_cleaned_md

md_path = write_cleaned_md(
    cleaned_text='''<整理后的文本>''',
    source='<原始短链接>',
    source_type='douyin',
    timestamp='<时间戳>',
    output_dir='<工作目录>'
)
print(f'MD saved: {md_path}')
"

# 本地文件来源
cd <工作目录> && <venv_python> -c "
import sys
sys.path.insert(0, '<skill_dir>/scripts')
from transcribe import write_cleaned_md

md_path = write_cleaned_md(
    cleaned_text='''<整理后的文本>''',
    source='<源文件名>',
    source_type='local',
    timestamp='<时间戳>',
    output_dir='<工作目录>'
)
print(f'MD saved: {md_path}')
"

产物清单

文件内容适用模式
---------------------
douyin_video_{ts}.mp4原始视频仅抖音
transcript_{ts}.txtWhisper 原始转录(含时间轴)两者
transcript_{ts}.jsonWhisper 完整 JSON 输出两者
transcript_{ts}.md整理后可读 Markdown两者

所有文件存放在运行脚本时的当前目录。本地文件模式不会复制或移动原始媒体文件,直接读取源文件。


支持的媒体格式

视频格式

格式扩展名
--------------
MPEG-4.mp4 .m4v
AVI.avi
Matroska.mkv
QuickTime.mov
Windows Media.wmv
Flash Video.flv
WebM.webm
MPEG-TS.ts

音频格式

格式扩展名
--------------
MP3.mp3
WAV.wav
FLAC.flac
AAC/MP4 Audio.m4a
Ogg Vorbis.ogg
AAC.aac
Windows Media Audio.wma
Opus.opus

常见问题排查

症状原因修复
------------------
DLL load failed: c10.dllVC++ Redist 缺失安装 vc_redist.x64.exe
ImportError: greenlet (Python 3.13)greenlet 与 3.13 不兼容使用 Python 3.10–3.12
cannot load module more than oncenumpy >= 2 冲突pip install "numpy<2" --force-reinstall
Whisper SIGABRT 崩溃模型缓存损坏删除 ~/.cache/whisper/medium.pt 后重试
pip install 清华源 SSL 失败清华源偶发故障换用阿里云 --mirror=aliyun
视频 URL 为空(抖音模式)视频需要登录或 JS 未加载脚本自动先 Playwright 再 API 备用;如仍失败,确认链接有效
Douyin API 返回乱码API 响应编码异常_fix_douyin_text 自动检测并修复 latin1 编码,无需手动干预
playwright 未安装本地模式不需要,抖音模式自动走 API无影响,脚本自动降级到 API 方案
Whisper 模型下载慢网络问题手动下载 medium.pt 放到 ~/.cache/whisper/
setup_env.py Invalid requirementpip 包名被多余引号包裹检查 packages_ordered 列表中包名无多余引号,如 'numpy<2' 而非 '"numpy<2"'
setup_env.py AttributeError: module 'playwright' has no attribute '__version__'playwright 模块无 __version__ 属性使用 getattr(playwright, '__version__', 'installed') 安全获取
setup_env.py UnicodeEncodeError 含 emojiWindows GBK 控制台无法编码 emoji避免在 print() 中使用 emoji,改用 ASCII 标识如 [OK]
本地文件 "不支持的格式"文件扩展名不在支持列表中检查文件扩展名是否在支持列表中,或用 FFmpeg 转换为 MP4/MP3
本地文件 "文件不存在"路径错误或文件已移动使用绝对路径,确认文件存在
本地模式 playwright 缺失本地转录不需要 playwrightsetup_env.py 会安装全套依赖,但 check_dependencies(require_douyin=False) 不检查 playwright
转录速度太慢(CPU)无 GPU 加速安装 CUDA 版 torch 加速转录
中英混合识别不准确Whisper 对混合语言识别较弱initial_prompt 默认已设中文提示;可自定义提示词如 "这是一段关于AI和编程的技术视频"

技术要点

  1. 登录墙绕过(抖音模式)video.src 由 JS 在登录模态框出现前填充,直接 DOM 查询即可捕获
  2. API 备用方案(抖音模式):Playwright 捕获失败时,自动回退到 Douyin web aweme detail API 获取视频 URL,双重保障
  3. Playwright 延迟导入(抖音模式):playwright 不再硬导入,脚本在没有 playwright 时仍可运行(自动走 API 路径)
  4. Playwright 重试机制(抖音模式):首次捕获等待 8 秒,失败后自动增加等待时间(13 秒)重试一次
  5. CDN URL 有效期(抖音模式):抖音签名 URL(v26-web.douyinvod.com/...)有效约 24 小时,捕获后立即下载
  6. Douyin API 编码修复:智能检测 API 返回的 latin1 编码问题,仅在确实存在乱码时才做二次解码,不破坏正常 UTF-8 文本
  7. video ID 多格式提取:支持 /video//note/(图文笔记)、/modal//share/video/?modal_id= 五种 URL 格式
  8. 本地文件零拷贝transcribe_local.py 直接从源文件路径读取,不复制文件,节省磁盘空间
  9. 模型选择:硬编码 medium,中文最佳性价比(准确率与 large 差距小而速度快一倍)
  10. FFmpeg 来源imageio[ffmpeg] 自动提供,无需系统安装
  11. 环境隔离:所有依赖安装在 skill 目录下的独立 venv 中,不影响系统 Python
  12. 代码复用:转录和 MD 写入逻辑集中在 scripts/transcribe.py,两个入口脚本共享
  13. GPU 加速:自动检测 CUDA,有 GPU 时使用 GPU 加速转录(速度提升 5-10 倍),无 GPU 时使用 CPU
  14. initial_prompt:默认设置中文提示文本,提升中文+英文混合识别准确率
  15. 依赖分层:本地转录只需核心依赖(whisper、requests、ffmpeg),抖音模式额外需要 playwright
  16. Windows UTF-8:脚本入口自动 sys.stdout.reconfigure(encoding='utf-8'),解决 GBK 控制台中文乱码
  17. 进度与预估:自动获取媒体时长,根据模型大小和 CPU/GPU 预估转录耗时;计时从模型加载完毕后开始(不含模型加载);转录后输出实际耗时和速度倍率

文件结构

douyin-transcribe-lz/
├── SKILL.md                          # 本文件
├── .env_config.json                  # 机器特定配置(setup_env.py 自动生成,勿手动编辑)
├── scripts/
│   ├── transcribe.py                 # 共享模块:转录 + MD 写入(核心逻辑)
│   ├── fetch_douyin_video.py         # 抖音模式入口:捕获 → 下载 → 转录
│   ├── transcribe_local.py           # 本地模式入口:格式验证 → 转录
│   ├── setup_env.py                  # 环境自动配置(支持 Windows/macOS/Linux)
│   └── verify_env.py                 # 环境快速检测(支持 --fix 自动修复)
├── references/
│   └── whisper_usage.md              # Whisper 参数详解
└── venv/                             # 隔离 Python 环境(setup_env.py 自动创建,不提交到版本控制)
    └── ...

> .env_config.jsonvenv/ 是运行时生成的文件,跨机器迁移后需重新运行 setup_env.py 生成。

版本历史

共 3 个版本

  • v1.1.1 新增本地视频、音频转录文本 通用性改进 当前
    2026-06-18 16:46 安全 安全
  • v1.1.0 提取总结,通用性改进
    2026-06-17 17:38 安全 安全
  • v1.0.0 Initial release
    2026-05-14 16:09 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

data-analysis

AdMapix

fly0pants
AdMapix 原始数据层,提供广告创意、应用、排名、下载/收入及市场元数据。返回 AdMapix API 的结构化 JSON;调用方...
★ 297 📥 142,544
data-analysis

Data Analysis

ivangdavila
{"answer":"数据分析与可视化。查询数据库、生成报告、自动化电子表格,将原始数据转化为清晰可行的见解。适用于:(1) 您……"}
★ 214 📥 71,040
data-analysis

Stock Analysis

udiedrichsen
利用Yahoo Finance数据深度分析股票和加密货币。支持投资组合管理、关注列表与提醒、股息分析、八维度股票评分、热门趋势扫描(热点扫描器)及谣言/早期信号检测。适用于股票分析、投资组合追踪、财报反应、加密货币监控、热门股票发现及在主流
★ 281 📥 58,068