☰
Cobalt 视频下载自托管指南:约 20 个平台的素材,5 分钟跑通一个实例
2026/10/16 14:48:36 网站建设 项目流程

Cobalt 视频下载自托管指南:约 20 个平台的素材,5 分钟跑通一个实例

【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt

把喜欢的视频、音频从 YouTube、TikTok、Instagram 存到本地,这件事听起来三秒钟就能办完,实际操作却常常卡在四处找按钮、弹窗拦截和"此内容即将下线"的提示上。Cobalt 是一个开源的媒体下载服务(AGPL-3.0 协议),输入链接,它负责解析、抓取、转码,把视频、音频和元数据整理好给你。它有两个入口:浏览器里一个干净的单页界面,以及一个可直接调用的 JSON API。下文按"是什么 → 怎么跑起来 → 能干什么 → 怎么进阶"的顺序讲完整个使用过程。

它解决什么:三个具体的卡顿点

把"下载一个视频"拆开看,普通工具链通常卡在三处,Cobalt 的做法对应得很直接:

  1. 保存入口被藏起来或干脆取消。不少平台(尤其是短视频类)逐步删掉了网页端的保存入口,第三方插件又隔三差五跟着平台改版失效。Cobalt 对约 20 个平台各自维护一套解析逻辑,入口失效时只需要修对应平台的模块,不用你换工具。
  2. 只给一种"能下就行的"结果。桌面下载器常见的问题是:默认给到的是 480p 的 MP4,想要 1080p 或纯音频还得进设置翻半天。Cobalt 把质量、编码、音频格式拆成 API 参数,一次请求里就能指定要什么。
  3. 链接一长,操作开始重复。存 1 个链接是点鼠标,存 30 个就是 30 遍粘贴、等待、核对文件名。Cobalt 的 API 端点意味着"存 30 个"可以变成 30 次请求,由脚本循环完成,文件名由预设模板统一生成。

从 0 到第一个下载:最快路径

新手建议直接走 Docker 路线,不用在本机装 Node 环境。Cobalt 由两个部分组成:API 实例(真正干活的解析/下载服务,默认 9000 端口)和Web 实例(浏览器界面,默认 9001 端口)。一条 compose 命令可以同时把两者拉起来。

仓库里提供了一份可直接改的示例配置:docs/examples/docker-compose.example.yml。完整流程四步:

# 1. 建一个放配置文件的目录 mkdir cobalt && cd cobalt # 2. 把示例 compose 文件复制进来,改成你自己的域名后保存为 docker-compose.yml # 3. 启动(API 与 Web 两个容器一起起) docker compose up -d # 4. 验证 API 是否活着 curl http://127.0.0.1:9000/api/serverInfo

最后一步会返回一段 JSON(版本号、服务名、启动时间),能返回就说明实例已就绪,浏览器打开 9001 端口粘贴第一条链接即可。

不走 Docker 也可以:本机需要 Node.js 18 及以上,克隆仓库后按文档执行 setup 脚本再npm start,步骤见 docs/run-an-instance.md。两条路线功能一致,Docker 省心,源码部署方便改配置。

能力拆解:它能帮你做四件事

1. 粘链接出文件

约 20 个平台各有一套解析模块,包括 YouTube(含 Shorts 与 Music)、TikTok、Instagram(Reels/帖子)、Twitter/X、Bilibili、Reddit、SoundCloud、Vimeo、Facebook、Pinterest、Snapchat、Twitch 切片等,清单维护在 src/modules/processing/servicesConfig.json。一条链接里含多个媒体时,返回的是一组"选择器"(picker),让你在网页端点选要哪一个,而不是盲拿第一个。

2. 质量和格式自己定

视频下载可指定编码(h264 / av1 / vp9)与清晰度(144p 到 4K,默认 720p);音频可单独导出,格式在 mp3 / ogg / wav / opus / best 之间选。文档给的经验值:手机场景用 h264 + 720p 兼容性最好。这些选项都是 API 请求里的字段,网页界面里也有对应开关。

3. 文件名不再随机

Cobalt 内置四种命名预设(classic/pretty/basic/nerdy),由 src/modules/processing/createFilename.js 统一生成,预设之间的差异在请求体里一个字段就能切换。命名规则基于标题、平台、日期等元数据,落盘后归档、按项目整理文件夹时会省不少事。

4. 需要登录态的平台:cookie 机制

部分平台的内容只有登录用户可见。Cobalt 支持把一个cookies.json文件挂进实例(格式参考 docs/examples/cookies.example.json,在 compose 里配好COOKIE_PATH环境变量),实例就会带着你的登录态去取内容。cookie 有有效期,过期后按同样方式更新文件即可。

换个维度对比:服务和工具的区别

把 Cobalt 和常见方案放在一起看,真正的分界线不是"支持多少平台",而是架构形态:

  • 浏览器插件:寄生在平台网页上,平台改版就可能失灵;一次只能处理一条链接;没有接口,无法被脚本调用。
  • 离线桌面下载器:单点程序,平台覆盖靠版本更新跟进;批量能力弱;同一台机器才能用。
  • Cobalt(服务形态):常驻进程,平台解析逻辑集中在 src/modules/processing/ 下逐平台维护;暴露 REST API,任何能发 HTTP 请求的工具(脚本、NAS 任务、其他 App)都能直接调用;实例部署一次,团队或设备都能共享。

另外两个隐性差异值得注意:隐私——公共实例上发生的请求都经过第三方服务器,自托管则全程在自己的机器上;持续性——插件失效是"不可用",而自托管实例出问题时你可以改代码、换代理、调配置,主动权在自己手里。

如果你只是偶尔存一两个视频,公共实例已经够用;上自托管的理由通常是批量、接口或隐私三者中至少占一样。

进阶:接入现有工作流

一次 API 调用的最小形态:向/api/json发一个 POST,请求体带上url和可选参数(质量、编码、音频格式、命名预设),返回 JSON 里带文件直链:

curl -X POST "http://127.0.0.1:9000/api/json" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d '{"url":"https://www.youtube.com/watch?v=EXAMPLE","vQuality":"1080","aFormat":"mp3","filenamePattern":"classic"}'

批量场景就是对这个端点循环,注意实例默认速率限制约为 60 秒 20 次请求,脚本里加间隔或捕获rate-limit状态即可。字段全集见 docs/api.md。

对外暴露实例时的安全项,都在环境变量里,不用改代码:

RATELIMIT_WINDOW=120 # 限流时间窗口(秒),默认 60 RATELIMIT_MAX=10 # 窗口内最大请求数,默认 20 CORS_URL=https://your-domain # 收紧跨域来源 DURATION_LIMIT=3600 # 单条视频时长上限(秒),默认 10800

完整变量表(含外置代理、免费 IP 池等)见 docs/run-an-instance.md 的环境变量章节。实例面向公网时建议前置 nginx 之类的反向代理加 HTTPS,这也是文档的明确建议。

扩展平台:新增一个平台的成本是写一个解析模块(放进src/modules/processing/services/)加一份 URL 匹配规则,现有 20 来个平台就是按这个模式组织的。这是"会写一点 JS 的开发者"才需要碰的部分,普通用户用现成的即可。

适合谁,不适合谁

适合:

  • 每周要存 10 个以上跨平台素材的创作者(课程素材、竞品参考、作品备份);
  • 想把"下载"嵌进自动化流程的人——NAS 定时任务、Obsidian/笔记库脚本、内容备份管线,都需要一个可调用的端点而不是一个按钮;
  • 在意隐私、不想把下载行为交给第三方服务的人。

不适合:

  • 只偶尔存一两个视频的普通用户——公共实例更省事,无需运维;
  • 期望"批量下载某用户主页全部 300 条视频"的采集需求——Cobalt 是单链接解析服务,批量靠你自己发请求,且受速率限制约束;
  • 把"100% 永不失败"当硬需求的人——平台反爬是持续的猫鼠游戏,个别平台偶发失败需要等维护者跟进,这是所有此类工具的共性,不是 Cobalt 独有。

下一步与社区入口

  • 部署遇到问题:先看 docs/run-an-instance.md,再翻 docs/troubleshooting.md(浏览器剪贴板、反向代理等问题都有自查步骤);
  • API 行为细节:docs/api.md 覆盖了请求/响应字段全集;
  • 示例配置:docs/examples/,compose 与 cookie 两份都是可直接改的模板;
  • 代码层面想动手:从 src/modules/processing/ 的平台模块入手最快,每个平台一个文件,模式统一。

项目采用 AGPL-3.0 开源协议,clone 仓库后可以直接读源码验证每一处行为。部署命令只有一条docker compose up -d,从决定自托管到第一条下载落盘,通常不超过十分钟。

【免费下载链接】cobaltbest way to save what you love项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询