抖音视频提取文案
v.从抖音短视频链接中提取音频并使用Whisper转录为中文文本。 当用户提供抖音短链接(v.douyin.com/xxx)并要求 提取、转换或转录视频语音为文本时,应使用此技能。通过 Playwright视频元素捕获处理登录墙绕过。
运行时依赖
安装命令
点击复制本土化适配说明
抖音视频提取文案 安装说明: 安装命令:["openclaw skills install douyin-transcribe-lz"] 该技能用于抖音相关操作,可能需要相应的平台账号或API密钥
技能文档
抖音视频转录技能
从抖音短链接中提取语音并通过Whisper转换为中文文本。
工作流程 步骤 1:通过Playwright捕获视频URL
首选方法——从video元素src中提取(最可靠,可绕过登录墙):
导入 a同步io from playwright.a同步_API 导入 a同步_playwright
a同步 def 获取_douyin_video_url(short_url): video_src = None a同步 with a同步_playwright() as p: browser = awAIt p.chromium.launch(headless=True) 上下文 = awAIt browser.new_上下文( user_代理="Mozilla/5.0 (Windows NT 10.0; Win64; x64) 应用le网页Kit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36" ) page = awAIt 上下文.new_page() awAIt page.goto(short_url, wAIt_until="domcontentloaded", timeout=30000) awAIt a同步io.sleep(8) # 等待JS渲染并填充video src
video_src = awAIt page.evaluate(""" () => { const videos = document.查询SelectorAll('video'); for (const v of videos) { if (v.src && v.src.includes('douyin') && v.src.includes('.mp4')) return v.src; const sources = v.查询SelectorAll('source'); for (const s of sources) { if (s.src) return s.src; } } return null; } """)
awAIt browser.close() return video_src
为何选择此方法而非网络拦截: 即使登录模态框覆盖了视频元素,video.src也已填充。网络拦截在登录墙下会失败。
步骤 2:下载视频 导入 请求s
def 下载_douyin_video(url, 输出_path, referer): headers = { "User-代理": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 应用le网页Kit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "Referer": referer, } resp = 请求s.获取(url, headers=headers, 流=True, timeout=60) with open(输出_path, "wb") as f: for chunk in resp.iter_content(chunk_size=1024*1024): if chunk: f.write(chunk) return 输出_path
referer = "https://www.douyin.com/" 或解析后的视频页面URL 抖音CDN使用v26-网页.douyinvod.com——这些URL有效时间为数小时 步骤 3:使用Whisper转录 导入 whisper, os, imageio_ffmpeg
# 确保ffmpeg在PATH中 ffmpeg_exe = imageio_ffmpeg.获取_ffmpeg_exe() ffmpeg_dir = os.path.dirname(ffmpeg_exe) os.environ["PATH"] = ffmpeg_dir + os.pathsep + os.environ.获取("PATH", "") 导入 shutil shutil.copy(ffmpeg_exe, os.path.join(ffmpeg_dir, "ffmpeg.exe")) # 确保可访问
模型 = whisper.load_模型("medium") # ~1.4GB,首次运行后缓存 结果 = 模型.transcribe(video_path, language="zh", verbose=True, task="transcribe")
保存输出:
transcript.txt — 完整文本 + 带时间戳的片段(供用户阅读) transcript.json — Whisper原始输出(供程序使用) 必需依赖
安装一次:
pip 安装 playwright openAI-whisper imageio[ffmpeg] 请求s playwright 安装 chromium
关键要点 登录墙解决方法: video.src由JS在登录模态框出现前填充。网络拦截会遗漏,直接DOM查询可捕获。 CDN URL有效期: 抖音签名CDN URL(v26-网页.douyinvod.com/...?a=...)有效约24小时。捕获后立即下载。 模型选择: 中文使用medium;base更快但准确度较低。首次运行下载模型(~1.4GB),之后缓存。 FFmpeg要求: Whisper需要ffmpeg;imageio[ffmpeg]自动提供——通过imageio_ffmpeg.获取_ffmpeg_exe()获取路径。 备用方案: 如果Playwright失败,使用捆绑的fetch_douyin_video.py脚本进行替代URL提取。 捆绑资源 scripts/fetch_douyin_video.py — 完整端到端脚本(捕获 → 下载 → 转录) references/whisper_usage.md — Whisper API选项和中文语言提示