YTB2BILI - YouTube 到 Bilibili 自动化转载系统
项目简介
一个功能完整的视频自动化处理系统,支持从 YouTube 等平台下载视频,自动生成字幕、翻译内容、生成元数据,并定时上传到 Bilibili。
✨ 核心功能
🎬 智能视频处理链
4步准备流程(实时处理):
-
🎬 字幕生成 - 使用 Whisper AI 自动生成高质量字幕 -
📷 封面下载 - 自动下载并上传高清封面到云存储 -
🌐 字幕翻译 - 支持百度翻译和 DeepSeek AI 多语言翻译 -
🤖 元数据生成 - AI 分析视频内容,生成符合 B站规范的标题、描述、标签
定时上传策略(智能调度):
-
🎥 视频上传 - 每小时上传一个处理完成的视频 -
📝 字幕上传 - 视频上传成功后1小时自动上传字幕
📊 可视化管理面板
-
📋 视频列表 - 实时查看所有视频的处理状态 -
🔍 详细信息 - 完整的视频信息和处理步骤追踪 -
🎯 单步重试 - 支持重新执行失败的任务步骤 -
📈 进度监控 - 实时进度百分比和处理时长统计 -
📁 文件管理 - 查看和下载所有生成的文件(视频、字幕、封面等)
🔐 B站账户集成
-
📱 扫码登录 - 支持 Bilibili TV 扫码快速登录 -
🖼️ 二维码生成 - 后端自动生成 PNG 格式登录二维码 -
🔄 自动检测 - 前端实时轮询检测登录状态 -
👤 用户信息 - 获取并展示用户名、头像等信息 -
💾 状态持久化 - 自动保存登录 Token 和 Cookie -
⚡ 状态检查 - 智能检测账户登录状态
🏗️ 技术架构
🖥️ 后端技术栈
-
语言: Go 1.24+ (支持最新语言特性) -
Web 框架: Gin (高性能HTTP框架) -
ORM: GORM v2 (支持多数据库) -
数据库: MySQL 8.0+ / PostgreSQL 15+ / SQLite (开发环境) -
文件存储: 腾讯云 COS (支持大文件分片上传) -
依赖注入: Uber FX (声明式依赖管理) -
定时任务: Robfig Cron v3 (精确到秒级调度) -
日志: Zap + Lumberjack (结构化日志和日志轮转)
🌐 前端技术栈
-
框架: Next.js 15+ (支持 App Router) -
语言: TypeScript 5.x (完全类型安全) -
UI 库: React 18 + Tailwind CSS 3.x -
图标: Lucide React (现代化图标库) -
HTTP 客户端: Axios (支持请求拦截和重试) -
构建: 静态导出 + 嵌入式部署
🔗 外部服务集成
-
🎤 yt-dlp - 多平台视频下载 (YouTube, TikTok, 等) -
🧠 Whisper AI - 高精度语音识别和字幕生成 -
🌐 百度翻译 API - 专业机器翻译服务 -
🤖 DeepSeek AI - 先进的AI翻译和内容生成 -
📺 Bilibili SDK - 官方视频上传和用户认证API -
☁️ 腾讯云 COS - 企业级对象存储服务 -
📊 数据分析 - 可选的用户行为分析和统计
🚀 快速开始
⚡ 一键部署 (推荐)
# 克隆项目 (需要前端项目在同级目录)
git clone https://github.com/difyz9/ytb2bili.git
cd ytb2bili/bili-up-api
# 一键构建 (自动构建前端+后端并打包成单个可执行文件)
make build
# 启动服务
./bili-up-api-server
🎉 就这么简单! 访问 http://localhost:8096 即可使用完整功能。
💡 构建原理:
make build会自动完成以下步骤:
🔧 构建 Next.js 前端 ( npm run build)📦 将静态文件嵌入到 Go 二进制中 🚀 编译生成单个可执行文件 (约 50MB) ✅ 零依赖部署,开箱即用
📋 环境要求
|
|
|
|
|---|---|---|
| Go |
|
|
| Node.js |
|
|
| 数据库 |
|
|
| yt-dlp |
|
|
⚙️ 配置设置
1. 数据库准备
MySQL (推荐生产环境):
CREATE DATABASE ytb2bili CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'ytb2bili'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT ALL PRIVILEGES ON ytb2bili.* TO 'ytb2bili'@'localhost';
FLUSH PRIVILEGES;
SQLite (适用开发环境): 无需额外配置,程序会自动创建数据库文件。
2. 配置文件设置
# 复制配置模板
cp config.toml.example config.toml
# 编辑配置文件
nano config.toml
基础配置:
# 服务配置
listen = ":8096" # 服务监听端口
environment = "production" # 运行环境
debug = false # 生产环境建议关闭
FileUpDir = "/data/ytb2bili/media" # 文件存储目录 (需要足够磁盘空间)
# 数据库配置
[database]
type = "mysql" # mysql / postgres / sqlite
host = "localhost"
port = 3306
username = "ytb2bili"
password = "your_secure_password"
database = "ytb2bili"
timezone = "Asia/Shanghai"
云存储配置 (推荐):
# 腾讯云 COS - 用于存储视频和封面
[TenCosConfig]
enabled = true
CosBucketURL = "https://your-bucket.cos.ap-guangzhou.myqcloud.com"
CosSecretId = "您的SecretId"
CosSecretKey = "您的SecretKey"
CosRegion = "ap-guangzhou"
CosBucket = "your-bucket"
SubAppId = "您的AppId"
翻译服务配置:
# 可通过 Web 界面动态配置,无需在此设置
# - 百度翻译: 在系统设置中配置 App ID 和密钥
# - DeepSeek AI: 在系统设置中配置 API Key
🔄 其他启动方式
开发模式 (代码变更自动重启):
# 安装 air 工具
go install github.com/cosmtrek/air@latest
# 开发模式运行
make dev
仅构建后端 (跳过前端构建):
make build-api
./bili-up-api-server
生产优化构建:
make build-prod # 启用编译优化,减小文件大小
🎯 智能处理流程
⚡ 4步准备阶段 (实时处理)
当你添加一个 YouTube 视频URL后,系统会立即开始以下处理流程:
|
|
|
|
|
|---|---|---|---|
|
|
字幕生成 |
|
|
|
|
封面下载 |
|
|
|
|
字幕翻译 |
|
|
|
|
元数据生成 |
|
|
💡 智能特性:
支持 yt-dlp 的所有平台 (YouTube, TikTok, Instagram, Twitter等) 自动选择最佳视频质量 (1080p优先) 智能跳过已存在的处理步骤 失败自动重试机制 (最多3次)
🚀 定时上传阶段 (智能调度)
为了避免频繁上传被B站限制,系统采用智能调度策略:
graph LR
A[准备完成] --> B[等待上传队列]
B --> C[视频上传<br/>每小时1个]
C --> D[等待1小时]
D --> E[字幕上传<br/>自动关联]
E --> F[上传完成]
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
📊 任务状态系统
|
|
|
|
|
|---|---|---|---|
pending |
|
|
|
running |
|
|
|
completed |
|
|
|
failed |
|
|
|
skipped |
|
|
|
🛡️ 容错机制
-
任务隔离: 单个步骤失败不影响其他步骤 -
状态恢复: 应用重启后自动恢复执行状态 -
重试策略: 网络错误自动重试,其他错误手动重试 -
进度保存: 每个步骤的执行结果都会持久化保存 -
资源管理: 智能清理临时文件,避免磁盘空间不足
项目地址
https://github.com/difyz9/ytb2bili/blob/main/README.md
扫码加入技术交流群,备注「开发语言-城市-昵称」
合作请注明

如果你觉得这篇文章不错,别忘了点赞、在看、转发给更多需要的小伙伴哦!我们下期再见!

