一款开源的无水印视频提取工具-VideoExtractor
原创
斯诺克视野
斯诺克视野
卡布奇诺的派对
2026年10月20日 02:09
江苏
去阅读
\"输入你分享的链接,即可一句话提取输入 B站 / 抖音 / TikTok / 小红书的视频\"
短视频提取工具:VideoExtractor
可一句话提取输入 B站 / 抖音 / TikTok / 小红书的视频
项目地址:https://github.com/kabuqin/VideoExtractor/
前端演示
API文档
2、使用codex
prompt:提取(你分享的链接)
最近,我把自己开发的一款短视频提取工具开源了,名字叫 VideoExtractor。
做这个工具的初衷其实很简单:我在日常整理素材、分析短视频内容、保存公开视频资源时,经常会遇到一个问题,想要提取视频内容并不总是那么方便。不同平台的链接格式不同,页面结构也会变化,手动处理既耗时,也容易出错。于是,我决定自己写一个更轻量、更直接的工具,把常用的视频提取流程自动化。
这次发布的 V1.0,不只是「下载视频」这么简单。我把解析、下载、转录和文案生成串成了一条完整的本地管线,希望它能从一个提取工具,变成一个能真正帮上忙的内容整理工具。
V1.0 更新了什么
最开始的想法只是把视频保存下来。但真正用起来之后我发现,下载只是第一步:视频里的内容要整理成文字,文字还要改成适合不同平台发布的文案。所以这次 V1.0,我把整条链路都做进了同一个工具里。
现在的 VideoExtractor 可以完成:
- 粘贴链接后自动解析标题、作者、时长与封面;
- 在后台完成视频下载与音视频合并;
- 用 faster-whisper 在本地把语音转成文字;
- 按平台和风格生成标题、摘要、正文与标签;
- 在任务详情页查看进度、编辑文本、导出视频。
整个过程都在本地完成,不需要登录,也不会上传你的视频和文字。
VideoExtractor 能做什么
VideoExtractor 主要用于从短视频链接中提取可用的视频资源信息,帮助用户更方便地完成视频保存、素材归档和内容分析等工作。
解析与下载
- 多平台识别:自动识别 B站、抖音、TikTok、小红书、YouTube 链接,支持直接粘贴平台分享文本;
- 即时解析:粘贴后自动探测标题、作者、时长、封面与简介,不需要先下载视频;
- 无水印下载:基于 yt-dlp 下载公开视频,抖音分享链接可以获取无水印版本;
- 画质合并:内置 FFmpeg 自动合并音视频流,优先选择更高画质。
转录与文案
- 本地语音转文字:使用 faster-whisper 在 CPU 上完成转录,首次运行会自动下载模型;
- 字幕回退:转录不可用时自动读取视频自带字幕,避免任务中断;
- 平台化文案:按小红书、抖音、B站、TikTok、YouTube 的格式生成标题、摘要、正文与标签;
- 四种文案风格:知识分享、种草带货、测评口吻、剧情叙述;
- 可编辑:转录文本和生成的文案都支持手动修改、重新生成。
本地任务管理
- 全流程本地:视频、转录、文案与任务数据都保存在本机,不需要上传到第三方服务;
- 任务自动执行:创建任务后,后台自动运行下载 → 转录 → 文案管线,可以实时查看进度;
- 断点重跑:视频已经下载时自动跳过下载,直接重新转录或生成文案;
- 一键导出:在任务详情页把已下载的视频保存到本地。
我希望它不是一个“黑盒工具”,而是一个开发者、创作者、运营人员都能看懂、能改、能用的小工具。
支持的平台
目前适配了下面几个常用平台,直接粘贴分享链接或分享文本即可:
- B站:b23.tv 短链接、bilibili.com/video/BVxxx;
- 抖音:v.douyin.com 分享链接、douyin.com/video/xxx;
- TikTok:tiktok.com/@user/video/xxx;
- 小红书:xiaohongshu.com/explore/xxx;
- YouTube:youtube.com/watch?v=xxx、youtu.be/xxx,以及 Shorts。
遇到需要登录或风控较严的内容时,可以在后端配置 Cookie,提高解析成功率。
它是怎么工作的
整个处理过程可以理解成一条流水线:
创建任务 → 平台识别 5% → 解析元数据 10% → 下载视频 30% → 语音转文字 55% → 保存转录 65% → 生成文案 75% → 任务完成 100%
首页解析和真正下载是分开的:粘贴链接时只探测元数据,确认无误后再创建任务,避免为一个不想要的视频白白等待下载。
- 视频已经下载时,自动跳过下载步骤;
- 转录失败时,自动回退到视频自带字幕;
- 转录或文案生成失败不会让整个任务崩溃,可以随时重新运行;
- 未完成的任务可以重新启动,并复用已经下载好的视频文件。
技术架构
技术上我没有用很重的东西,都是围绕「本地能跑、结构清楚」来选的:
- 前端:Next.js 14 + React + TypeScript,负责首页解析、任务进度、转录与文案编辑;
- API:FastAPI + Uvicorn,提供解析、任务、视频、转录与文案接口;
- 管线:FastAPI BackgroundTasks,创建任务后自动执行下载、转录与文案生成;
- 下载:yt-dlp + imageio-ffmpeg,负责平台适配、元数据探测和音视频合并;
- 转录:faster-whisper,本地 CPU 语音转文字,失败时回退字幕;
- 文案:模板规则引擎,按平台与风格生成标题、摘要、正文和标签;
- 存储:SQLite + 本地目录,保存任务数据、视频、字幕与导出文件。
请求链路也很简单:浏览器访问 Next.js 前端,前端通过 REST 调用 FastAPI,解析、下载、转录与文案都在本机完成,结果写入 SQLite 和 storage 目录。
快速开始
环境要求不复杂:Python 3.10+、Node.js 18.17+。FFmpeg 不需要单独安装,项目使用 imageio-ffmpeg 自带的二进制。
1. 启动后端
git clone https://github.com/kabuqin/VideoExtractor.git
cd VideoExtractor/backendpython -m venv .venv
.venv\Scripts\activate # Windowssource .venv/bin/activate # macOS / Linux
pip install -e .
playwright install chromium # 抖音解析所需的浏览器,其他平台可跳过
uvicorn app.main:app --reload --port 8001
启动后可以访问 http://localhost:8001/health 检查服务状态,接口文档在 http://localhost:8001/docs。
2. 启动前端
cd frontend
npm install
npm run dev
前端地址是 http://localhost:3000。如果要修改后端地址,在 frontend/.env.local 中设置 NEXT\_PUBLIC\_API\_BASE\_URL。
3. 使用流程
- 在首页粘贴视频链接或平台分享文本,页面自动解析并展示视频信息;
- 选择文案平台与风格,点击「开始下载并提取文案」,任务在后台自动执行;
- 在任务详情页查看下载进度、视频信息、转录文本与平台文案;
- 按需编辑文本或文案,点击「下载视频到本地」保存视频文件。
配置说明
后端配置读取 backend/.env,可以从 backend/.env.example 复制一份。最常用的几个配置是:
- DATABASE\_URL:数据库连接,默认 sqlite:///./data/app.db;
- STORAGE\_ROOT:视频、音频与导出文件的存储目录,默认 ../storage;
- DOWNLOAD\_TIMEOUT\_SECONDS:单个视频的下载超时,默认 600 秒;
- WHISPER\_MODEL:转录模型,默认 small,也可以选 tiny、base、medium 或 large-v3;
- WHISPER\_DEVICE / WHISPER\_COMPUTE\_TYPE:推理设备与计算精度,CPU 推荐 int8。
部分平台会限制未登录访问,可以通过 BROWSER\_COOKIES 从本机浏览器读取 Cookie,或者用 YOUTUBE\_COOKIES\_FILE、COOKIES\_FILE 指定 cookies.txt 文件。
另外说明一下:V1.0 的文案由本地模板规则生成,不需要任何外部 API 或 API Key,也不会调用外部大模型。
API 一览
所有接口都集中在 /api 下,常用的有:
- POST /api/parse:解析视频链接,返回平台、标题、作者、时长与封面;
- POST /api/tasks:创建任务,auto\_start 默认为 true;
- GET /api/tasks/{task\_id}:查看任务状态与进度;
- POST /api/tasks/{task\_id}/start:重新运行未完成任务;
- GET /api/videos/{task\_id}/download:下载视频文件;
- GET / PUT /api/transcripts/{task\_id}:获取或编辑转录文本;
- GET / PUT /api/copies/{task\_id}:获取或编辑平台文案;
- POST /api/copies/{task\_id}/rewrite:按平台与风格重新生成文案。
完整的请求和响应结构可以在运行后的 http://localhost:8001/docs 里直接调试。
限制说明
- 不支持私密、付费、地区限制或需要额外验证的视频内容;
- 抖音、YouTube 等平台可能存在风控,必要时需要配置 Cookie;
- 首次转录会自动下载 Whisper 模型,之后使用本地缓存;
- 语音转文字默认使用 CPU,较长视频的处理可能需要几分钟;
- 当前使用 FastAPI BackgroundTasks 在单进程内执行,适合本地单用户使用;
- 下载与使用视频内容时,请遵守目标平台的服务条款与版权规定。
为什么做 VideoExtractor
短视频已经成为非常重要的内容载体。无论是做内容创作、运营分析,还是学习优秀作品的剪辑节奏和表达方式,很多时候我们都需要快速获取视频资源,方便后续整理和研究。
但现有工具往往有几个问题:
- 操作流程复杂,使用门槛偏高;
- 功能臃肿,只想提取视频,却被塞进很多不需要的功能;
- 可控性不强,出了问题很难定位原因;
- 不够透明,不知道背后到底做了什么。
所以我做 VideoExtractor 的目标很明确:简单、可用、开源、可维护。
后来我又发现,提取视频只是第一步。很多人真正需要的是视频里的文字,以及能直接拿去发布的文案。所以 V1.0 把转录和文案也放进了同一条管线里,尽量把「找到视频 → 拿到内容 → 变成可用的文字」这件事一次做完。
为什么选择开源
开源这件事,对我来说不只是把代码放出来。
一方面,我希望 VideoExtractor 能帮助到和我有类似需求的人。如果你也经常需要处理短视频链接、整理素材、分析内容,那么它也许可以节省你不少时间。
另一方面,我也希望通过开源让这个工具变得更好。短视频平台的页面结构、接口形式、链接规则都可能变化,靠一个人维护总是有限的。开源之后,大家可以一起提交问题、优化代码、补充适配逻辑,让它更稳定、更实用。
适合哪些人使用
VideoExtractor 比较适合以下几类用户:
- 短视频内容创作者;
- 新媒体运营人员;
- 视频素材整理人员;
- 想学习短视频结构和内容表达的人;
- 需要把视频内容转成文字、再改成平台文案的人;
- 对视频解析、爬虫、自动化工具感兴趣的开发者。
如果你只是想快速提取视频,它可以作为一个现成工具使用。
如果你是开发者,也可以把它当作一个参考项目,研究链接解析、请求处理、数据提取、任务管线和工程封装的实现方式。
后续计划
目前 VideoExtractor 还处在持续完善阶段,后续我计划继续优化这些方向:
- 支持更多短视频平台;
- 提高解析稳定性;
- 提升转录准确率和长视频处理体验;
- 完善错误提示和日志输出;
- 优化使用文档;
- 增加更友好的交互方式;
- 补充更多测试用例。
我也欢迎大家提出建议,或者直接参与贡献。
写在最后
VideoExtractor 是我从实际需求出发开发出来的一个小工具。它不复杂,也不花哨,但我希望它足够实用、足够清晰,能够真正解决一些日常工作中的小麻烦。
现在我把它开源出来,希望它能帮到更多人。
如果你对这个项目感兴趣,欢迎去看看源码、点个 Star、提 Issue,或者一起让它变得更好。
项目地址:https://github.com/kabuqin/VideoExtractor
项目名称:VideoExtractor,一个开源的短视频提取工具。
最后照例说明:本项目仅供个人学习、研究与本地技术验证使用。请只下载你有权访问与保存的公开视频内容,并遵守所在国家或地区的法律法规以及目标平台的服务条款。下载、安装或使用本项目,即表示你已阅读、理解并同意上述说明。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论