YouTube到AcFun和bilibili自动化搬运工具,支持AI翻译、字幕生成、内容审核、智能监控
Python
3,806
735 commits
updated Oct 2, 2026
将 YouTube 视频自动搬运到 AcFun / bilibili 的一体化工具。
从下载、ASR、字幕翻译、字幕质检、内容审核到上传,全流程自动化;内置 Web 管理后台、YouTube 监控和维护能力。
快速开始 · 功能概览 · 部署与运行 · 配置说明 · 使用指南 · 通知推送 · CookieCloud · 安全特性 · 常见问题
Telegram 转发机器人(试用):
@Y2AAuto_bot
自部署版本:Y2A-Auto-tgbot
| 能力模块 | 说明 |
|---|---|
| 全流程自动化 | 从下载、ASR、字幕、元信息到上传一条龙处理 |
| 审核可控 | 支持人工审核、强制上传、内容安全检测和登录保护 |
| 灵活部署 | Docker / 本地双模式,支持 CPU 与多种 GPU 编码 |
| 监控拉取 | 支持 YouTube 频道 / 关键词定时抓取与历史记录 |
| 消息推送 | 企业微信、Server酱、message-pusher 多渠道异步通知 |
| CookieCloud | 从 CookieCloud 服务自动同步 YouTube Cookies |
| 安全防护 | 密码保护、暴力破解锁定、会话超时、路径遍历防护 |
| 维护完善 | 支持日志清理、下载清理、并发控制和 FFmpeg 自动补齐 |
yt-dlp 下载视频与封面Y2A-Auto/
├── app.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── docker-compose-build.yml
├── acfunid/
├── build-tools/
├── config/
├── cookies/
├── db/
├── downloads/
├── ffmpeg/
├── fonts/
├── logs/
├── modules/
├── static/
├── temp/
├── templates/
└── tests/
推荐使用 Docker(无需手动安装 Python、FFmpeg、yt-dlp)。
cookies/yt_cookies.txt:YouTube 登录 Cookiecookies/ac_cookies.json:AcFun 登录 Cookiecookies/bili_cookies.json:bilibili 登录 Cookiecookies.txt,请勿提交到仓库# 默认从 Docker Hub 拉取镜像 fqscfqj/y2a-auto:latest
# 如需使用 GitHub 容器注册表,可切换为 ghcr.io/fqscfqj/y2a-auto:latest
docker compose up -d
http://localhost:5000默认会持久化目录:config/、db/、downloads/、logs/、temp/、cookies/。
说明:fonts/ 中的字体属于项目内置依赖,用于字幕烧录;许可证见 fonts/LICENSE.txt。
docker compose up -ddocker compose downdocker compose restartdocker compose logs -f如需本地构建镜像,可使用:
docker compose -f docker-compose-build.yml up -d --build
如果启动日志出现写入 config/、db/ 或 logs/ 等挂载目录的
PermissionError,请在项目目录中创建这些目录,并将其属主改为容器内应用使用的
UID/GID(默认 1000:1000):
mkdir -p config db downloads logs cookies temp
sudo chown -R 1000:1000 config db downloads logs cookies temp
启用了 rootless Docker 或 userns-remap 时,请使用容器 UID 1000 实际映射到宿主机的
UID/GID;映射方式参见 Docker 官方文档。
前置要求:
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python app.py
访问 http://127.0.0.1:5000。
build-tools/ 提供 Windows 可执行文件构建工具ffmpeg/ 目录完整即可首次运行会自动生成 config/config.json。推荐先配置以下几类参数:
AUTO_MODE_ENABLED:无人值守自动投稿总开关,默认 falsepassword_protection_enabled:Web 密码保护,默认 falseLOGIN_MAX_FAILED_ATTEMPTS:连续错误次数上限,默认 5LOGIN_LOCKOUT_MINUTES:锁定时长,默认 15LOGIN_SESSION_TIMEOUT_MINUTES:登录空闲超时时长,默认 30 分钟,最小 1,访问受保护页面会自动续期UPLOAD_TARGET_DEFAULT:默认投稿平台,支持 acfun、bilibili、bothUPLOAD_APPEND_REPOST_NOTICE:是否自动追加转载声明,默认 trueYOUTUBE_COOKIES_PATH:YouTube Cookie 路径ACFUN_COOKIES_PATH:AcFun Cookie 路径BILIBILI_COOKIES_PATH:bilibili Cookie 路径YOUTUBE_PROXY_ENABLED / YOUTUBE_PROXY_URL:YouTube 下载代理YOUTUBE_API_PROXY_ENABLED / YOUTUBE_API_PROXY_URL:YouTube 监控 API 独立代理,不继承下载代理YOUTUBE_DOWNLOAD_THREADS:下载线程数YOUTUBE_THROTTLED_RATE:下载速度限制YOUTUBE_API_KEY:YouTube Data API v3 密钥,监控功能需要FFMPEG_LOCATION:自定义 FFmpeg 路径FFMPEG_AUTO_DOWNLOAD:Windows 缺失时自动下载 FFmpeg,默认 trueFFmpeg 版本要求:≥ 5.1。 字幕烧录使用
-fps_mode cfr控制帧率模式, 该选项在 FFmpeg 5.1 才引入(5.0 及更早只认已弃用的-vsync)。仓库自带的 与自动下载的 FFmpeg(BtbN latest)都远高于该版本;但若通过FFMPEG_LOCATION指向 5.0 或更早的旧版本,软件编码路径会因Unrecognized option 'fps_mode'直接失败(非硬件编码器没有降级重试,任务会直接报错)。
VIDEO_CPU_CODEC=x265还额外要求该 FFmpeg 构建带libx265(需--enable-gpl --enable-libx265,BtbN 与仓库自带版本均满足)。缺失时会自动降级为libx264并继续烧录,不会因缺库而丢掉整条字幕。
OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL_NAME:全局 AI 配置OPENAI_THINKING_ENABLED:是否允许模型使用思考模式;关闭时按可识别的 DeepSeek、Qwen、MiMo 接口发送各自的私有禁用参数SUBTITLE_OPENAI_*:字幕翻译专用覆盖配置,留空则回退全局SUBTITLE_QC_*:字幕质检专用覆盖配置,留空则回退字幕翻译 / 全局配置TRANSLATE_TITLE / TRANSLATE_DESCRIPTION / GENERATE_TAGS:自动生成标题、简介、标签RECOMMEND_PARTITION:自动推荐分区FIXED_PARTITION_ID / FIXED_PARTITION_ID_BILIBILI:固定分区YOUTUBE_UPLOADER_AS_FIRST_TAG:将上传者作为首标签PRESET_TAGS_ENABLED / PRESET_TAGS:预设标签,每行一个(也接受逗号、顿号、分号分隔)。启用后预设标签排在任务标签之前,GENERATE_TAGS 开启时 AI 只补齐剩余名额;一份预设同时服务 AcFun(前 6 个、每个约 10 字)与 bilibili(最多 12 个、每个 20 字)AI 文本功能同时兼容 OpenAI Chat Completions 与 Responses API。OPENAI_BASE_URL 可填写 API 根地址(例如 https://api.openai.com/v1,默认使用 Chat Completions)或完整的 /chat/completions、/responses 地址;填写完整端点时会自动选择协议并规范化。Responses 请求会自动转换消息、JSON 输出格式和 token 上限参数,返回值也会归一化供翻译、质检、智能分段等现有功能使用。当兼容服务不支持 response_format、token 上限参数、自定义 temperature 或特定指令角色时,系统会根据端点实际错误逐级协商;若网关只返回笼统的请求 schema 错误,则降级为仅含 model + user messages 的最小标准请求。能力只在降级请求成功后按端点、协议和模型缓存。
SUBTITLE_TRANSLATION_ENABLED:启用字幕翻译,默认 falseYOUTUBE_AUTO_GENERATED_SUBTITLES_ENABLED:下载 YouTube 自动生成字幕,默认 falseSUBTITLE_SOURCE_LANGUAGE:源语言,默认 autoSUBTITLE_TARGET_LANGUAGE:目标语言,默认 zhSUBTITLE_FONT_NAME:烧录字幕字体名,默认 NotoSansCJKsc-Regular.otfSUBTITLE_BATCH_SIZE:翻译批次大小SUBTITLE_MAX_RETRIES / SUBTITLE_RETRY_DELAY:翻译重试策略SUBTITLE_EMBED_IN_VIDEO:是否将字幕嵌入视频SUBTITLE_KEEP_ORIGINAL:是否保留原始字幕文件SUBTITLE_MAX_WORKERS:字幕翻译并发线程数烧录字幕外观(默认值即历史观感;对 .ass/.ssa 源的行为变更见下方说明):
SUBTITLE_FONT_SIZE_SCALE / SUBTITLE_MARGIN_V_SCALE:字号与底部边距倍率,范围 0.5-2.0,默认 1.0SUBTITLE_FONT_COLOR / SUBTITLE_OUTLINE_COLOR:字体色与描边色,#RRGGBB,默认 #FFFFFF / #000000SUBTITLE_OUTLINE_ENABLED / SUBTITLE_OUTLINE_SCALE:描边开关与粗细倍率(0-3)SUBTITLE_SHADOW_ENABLED / SUBTITLE_SHADOW_SCALE:阴影开关与倍率(0-3)SUBTITLE_TEXT_BOLD:是否粗体,默认 trueSUBTITLE_BACKGROUND_ENABLED / SUBTITLE_BACKGROUND_COLOR / SUBTITLE_BACKGROUND_OPACITY:半透明底板(BorderStyle=4)及其颜色与不透明度(0-1)。开启后 libass 会把阴影当作底框外扩,建议同时关闭阴影行为变更(
.ass/.ssa源素材):上述外观配置现在对所有字幕源统一生效。 此前上游只把字体与边距写进force_style,字色 / 描边色 / 粗体 / 底板这些键对.ass/.ssa源不生效(同一份配置喂.srt是红字、喂.ass仍是创作者的白字), 现在这些键改为逐键覆盖源样式 —— 也就是说,素材自带的字色 / 粗体 / 底板样式会被 应用配置覆盖,未配置时即默认的白字 + 粗体 + 描边(与 SRT 源行为一致)。 升级后若想保留素材自带外观,请把对应配置项显式设置成与素材一致的取值,或改用 自带样式的外部字幕文件而不依赖本功能。
SPEECH_RECOGNITION_ENABLED:是否启用语音识别生成字幕,默认 falseSPEECH_RECOGNITION_PROVIDER:支持 whisper、voxtralVAD_ENABLED:VAD 语音扫描窗,默认 trueWHISPER 路径默认使用 segment 级时间戳,并自动兼容不支持 timestamp_granularities 的接口WHISPER_LANGUAGE / WHISPER_PROMPT / WHISPER_TRANSLATE:Whisper 专用参数VOXTRAL_TIMESTAMP_GRANULARITIES:默认 segment,wordVOXTRAL_DIARIZE / VOXTRAL_CONTEXT_BIAS / VOXTRAL_LANGUAGEVOXTRAL_MAX_AUDIO_DURATION_S / VOXTRAL_LONG_AUDIO_MARGIN_S / VOXTRAL_ENFORCE_MAX_DURATIONVIDEO_ENCODER:auto / cpu / nvidia / intel / amdVIDEO_CPU_CODEC:x264(H.264,默认)或 x265(H.265/HEVC)。仅在最终使用 CPU 编码时生效:VIDEO_ENCODER=cpu,或硬编不可用而回退到 CPU 时。编码耗时约为 libx264 的 5 倍,超时预算会按同一倍数放大;体积收益不保证,取决于素材与 preset,建议开启后自行对比VIDEO_CPU_PRESET:常规 CPU 软编码 preset,默认 mediumVIDEO_CPU_PRESET_HD:1440p+ 且超过 10 分钟时使用的 preset,默认 veryfastVIDEO_QUALITY_MODE:auto(按分辨率推荐)或 manual(使用 VIDEO_QUALITY_VALUE),默认 autoVIDEO_QUALITY_VALUE:固定质量值 CRF/CQ/QP,范围 0-51,越小质量越高。自动模式的推荐值为 4K 22.5 / 1440p 23 / 1080p 23.5 / 720p 24.5VIDEO_HW_QUALITY_BOOST:编码质量增强总开关(自适应量化、前瞻、多遍分析等),默认 true。它同时作用于硬件编码器与软件编码器:x264 写 -aq-mode 3 -aq-strength 0.8 -psy-rd 1.0:0.0,非 HD preset 路径再加 -rc-lookahead 40;x265 只写 aq-mode=3,非 HD preset 路径再加 rc-lookahead=40(psy-rd / aq-strength / psy-rdoq 不写,即保持 x265 自身的默认值 2.00 / 1.0 / 1.00 —— 照抄 x264 的数值在 x265 上等于把这些心理视觉优化砍半,与「质量增强」相反)。1440p+ 长视频走 VERYFAST 档时前瞻跟随 preset 自身默认值,不被放大。老 GPU 驱动不认识这些参数时可关闭,命令会回到基础参数并自动重试VIDEO_HW_QUALITY_LEVEL:fast / balanced / quality,映射到各硬件编码器的速度档,默认 qualityVIDEO_COLOR_METADATA_MODE:auto(透传源流色彩信息)/ bt709(强制)/ off(不写入),默认 auto。不写入时播放器会按默认色域解释,可能偏色VIDEO_X264_TUNE:软编码 -tune 取值(如 film / animation),留空则不传。取值按 VIDEO_CPU_CODEC 各自的白名单校验:film 与 stillimage 只对 x264 合法,切到 x265 时会被忽略并写入任务日志VIDEO_CUSTOM_PARAMS_ENABLED / VIDEO_CUSTOM_PARAMS:自定义 FFmpeg 参数(启用后完全覆盖内置编码参数与色彩参数)。若自定义参数里没有写 -c:v,系统会按 VIDEO_CPU_CODEC 补上 -c:v libx264 / -c:v libx265 —— 否则 ffmpeg 会取容器默认编码器(mp4 为 libx264),VIDEO_CPU_CODEC 被静默忽略、色彩 VUI 补写也一并失效;若你自己写了 -c:v,则以你指定的编码器为准(识别为 libx264 / libx265 时才补写色彩 VUI,并在任务日志中说明)MAX_CONCURRENT_TASKS:最大并发任务数,默认 2MAX_CONCURRENT_UPLOADS:最大并发上传数,默认 1LOG_CLEANUP_ENABLED / LOG_CLEANUP_HOURS / LOG_CLEANUP_INTERVALDOWNLOAD_CLEANUP_ENABLED / DOWNLOAD_CLEANUP_HOURS / DOWNLOAD_CLEANUP_INTERVALDELETE_DOWNLOAD_FILES_AFTER_UPLOAD:所有目标平台上传成功后立即删除该任务的下载文件(默认关闭)NOTIFY_ENABLED:启用消息推送,默认 falseNOTIFY_CHANNELS:启用的渠道列表,支持 wecom、serverchan、message_pusherNOTIFY_EVENTS:订阅的事件列表,可选 task_added、task_completed、task_failed、login_success、login_locked、qr_login_success、qr_login_failedNOTIFY_WECOM_WEBHOOK_URLNOTIFY_SERVERCHAN_SENDKEYNOTIFY_MESSAGE_PUSHER_SERVER / NOTIFY_MESSAGE_PUSHER_USERNAME / NOTIFY_MESSAGE_PUSHER_TOKENCOOKIECLOUD_ENABLED:启用 CookieCloud 同步,默认 falseCOOKIECLOUD_SERVER_URL:CookieCloud 服务地址COOKIECLOUD_UUID:CookieCloud UUIDCOOKIECLOUD_PASSWORD:CookieCloud 加密密码COOKIECLOUD_ENCRYPT_MODE:加密模式,支持 auto / legacy / aes-128-cbc-fixedCONTENT_MODERATION_ENABLED:启用阿里云内容审核,默认 falseALIYUN_ACCESS_KEY_ID / ALIYUN_ACCESS_KEY_SECRET:阿里云 AK/SKALIYUN_CONTENT_MODERATION_REGION:审核服务区域ALIYUN_TEXT_MODERATION_SERVICE:文本审核服务名,默认 comment_detection_proYOUTUBE_DOWNLOAD_QUALITY_MODE:下载质量模式YOUTUBE_DOWNLOAD_MAX_HEIGHT:最大分辨率高度限制SUBTITLE_MAX_LINE_LENGTH:单行最大字符数,默认 42SUBTITLE_MAX_LINES:单条字幕最大行数,默认 2SUBTITLE_NORMALIZE_PUNCTUATION:标点标准化,默认 trueSUBTITLE_FILTER_FILLER_WORDS:过滤填充词(um、uh 等),默认 trueSUBTITLE_TIME_OFFSET_S:字幕时间偏移(秒)SUBTITLE_MIN_CUE_DURATION_S:最短字幕时长,默认 0.6SUBTITLE_MERGE_GAP_S:相邻间隙合并阈值,默认 0.3{
"AUTO_MODE_ENABLED": false,
"password_protection_enabled": false,
"password": "",
"UPLOAD_TARGET_DEFAULT": "acfun",
"OPENAI_API_KEY": "",
"OPENAI_BASE_URL": "https://api.openai.com/v1",
"OPENAI_MODEL_NAME": "gpt-3.5-turbo",
"OPENAI_THINKING_ENABLED": false,
"SUBTITLE_TRANSLATION_ENABLED": false,
"SUBTITLE_QC_ENABLED": true,
"SPEECH_RECOGNITION_ENABLED": false,
"SPEECH_RECOGNITION_PROVIDER": "whisper",
"VAD_ENABLED": true,
"VIDEO_ENCODER": "auto",
"VIDEO_CPU_CODEC": "x264",
"VIDEO_CPU_PRESET": "medium",
"VIDEO_CPU_PRESET_HD": "veryfast",
"FFMPEG_AUTO_DOWNLOAD": true,
"MAX_CONCURRENT_TASKS": 2,
"MAX_CONCURRENT_UPLOADS": 1
}
SUBTITLE_QC_ENABLED 默认为 true:系统会对 ASR 生成的源字幕做预检。
SUBTITLE_QC_THRESHOLD:AI 复核分数下限(0 ~ 1,默认 0.60)SUBTITLE_QC_SAMPLE_MAX_ITEMS:AI 抽样条目上限,默认 80SUBTITLE_QC_MAX_CHARS:AI 单次送检最大字符数上限,默认 9000SUBTITLE_QC_MODEL_NAME:单独指定 QC 模型,留空则复用字幕翻译 / 全局模型SUBTITLE_QC_TIMELINE_ENABLED:是否启用时间轴维度判定,默认 trueSUBTITLE_QC_MIN_COVERAGE_RATIO:字幕总时长 / 视频时长的覆盖率下限,默认 0.15SUBTITLE_QC_MAX_GAP_S:允许的最大连续无字幕间隙(秒),默认 90SUBTITLE_QC_MAX_CPS:单条字幕最大字符速率(字符/秒),默认 25QC 会先用规则做硬拦截,只有边界样本才会调用 AI 严格复核。
命中署名行、噪声提示、界面操作词、模板化重复句等明显低质量字幕时,会在规则层直接失败,不再进入宽松放行。
时间轴维度(覆盖率 / 间隙 / 语速)会在 ASR 来源退化(subtitle_quality_state == degraded)时随严格模式一并参与判定。
时间轴维度的三条边界语义:片尾留白容忍带取「30 秒」与「片长 25%」的较小值(60 秒素材不会因为末尾 23 秒无字幕而被当作良性留白);零时长 cue 达到「≥3 条且 ≥20%」即视为实质缺陷,AI 不可用时不予放行(≥25% 无条件硬失败);畸形时间戳(时间行无法解析)的 cue 会被跳过并记 warning,不再静默退化为 0.0 —— 退化到 0.0 会虚高覆盖率并反过来帮助质检通过。
可疑样本在 AI 不可用、返回异常或输出不合规时,默认按失败处理。QC 失败时会跳过烧录字幕,但仍保留字幕文件并继续上传原视频,任务最终标记为完成,并显示字幕异常标记。
被判定不合格的 ASR 字幕会被改名为 *.rejected.txt(内容保留供人工检查),移出复用范围,避免任务重跑时复用旧字幕而永远拿不到新字幕。平台自带或人工提供的字幕不受此影响。
ASR_FAILURE_BLOCKS_EMBED(默认 true):ASR/VAD 质量结局为 failed(来源不可信)时拒绝烧录该字幕。设为 false 恢复旧行为,只放宽「ASR 来源结局」与「质检没跑成」两种拦截,不会放过质检给出的明确失败结论 —— 质检结论针对字幕内容本身,与 ASR 来源可靠度是两件事。SUBTITLE_QC_ENABLED=false:用户主动放弃质检这道防线。此时不再看历史质检标记,也不再要求 degraded 素材通过严格质检(质检关闭时该条件无法满足,若仍拦截就变成「关掉质检反而更严格」)。「质检不可用」(字幕文件缺失 / 执行异常)与「用户主动关闭质检」是两种不同结局:前者按拒绝处理,后者放行。任务列表中会通过 qc_unavailable / subtitle_qc_rejected / asr_failed_block_embed / asr_degraded_block_embed 标注具体原因。
当前支持两类 ASR 提供商:
voxtral-mini-latest建议优先保持 VAD_ENABLED=true。当前默认采用质量优先的扫描窗参数,分片更短、重叠更小,便于提升字幕边界精度。
如果 VAD 结果不理想,系统会自动进入分片或整段兜底流程。
SourceHanSansHWSC-VF.otf,作为字幕烧录依赖随仓库一起分发SUBTITLE_FONT_NAME 指定 fonts/ 目录中的字体文件名;程序会读取该文件的真实字体名供 libass 使用fonts/LICENSE.txtffmpeg/ 目录中的二进制ffmpeg/ 缺失,系统可自动下载并补齐FFMPEG_LOCATION 可覆盖默认路径,支持直接指向 ffmpeg.exe 或其所在目录VIDEO_ENCODER=cpu 时使用 CPU 软编码,编码器由 VIDEO_CPU_CODEC 决定:
x264(默认):libx264(H.264)x265:libx265(H.265/HEVC)。实测(1080p30,带字幕烧录)耗时约为 libx264 的 5 倍(veryfast 1.70s → 8.44s),超时预算已按同一倍数放大veryfast 下同 CRF 的体积反而是 libx264 的 1.6~1.8 倍,medium 下约持平。是否更省取决于素材与 preset,建议开启后自行对比再决定;x265 的 CRF 标度与 x264 不可直接比较,本项不做任何自动偏移VIDEO_ENCODER=auto|nvidia|intel|amd 时优先使用 HEVC / H.265 硬件编码:
hevc_nvenchevc_qsvhevc_amfhevc_vaapiVIDEO_CPU_CODEC 选择编码器)x265 但当前 FFmpeg 不含 libx265,或 libx265 不接受某个参数,会自动降级为 libx264 重试。硬件编码失败回退到 CPU 时同样保留这一级:硬编回退的 CPU 阶段仍用你配置的 x265,因此仍需要 x265 -> x264 这条兜底;该阶段的超时预算也按其真实编码器(x265 为 5 倍)计算,而不是沿用 x264 的预算NVIDIA(推荐):
# 在 docker-compose.yml 内取消以下注释即可启用:
# gpus: all
# environment:
# - NVIDIA_VISIBLE_DEVICES=all
# - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
Intel / AMD(Linux):
devices:
- /dev/dri:/dev/dri
group_add:
- video
- render
NVIDIA 专用覆盖文件已移除,相关配置已直接集成到主
docker-compose.yml。
YOUTUBE_API_KEYconfig/youtube_monitor/,历史数据库位于 db/youtube_monitor.db支持三种推送渠道,可在设置页自由组合启用:
| 渠道 | 标识 | 必需配置 |
|---|---|---|
| 企业微信 | wecom | NOTIFY_WECOM_WEBHOOK_URL |
| Server酱 | serverchan | NOTIFY_SERVERCHAN_SENDKEY |
| message-pusher | message_pusher | NOTIFY_MESSAGE_PUSHER_SERVER + USERNAME + TOKEN |
支持的事件类型:
task_added:任务添加task_completed:任务完成task_failed:任务失败login_success:登录成功login_locked:登录锁定qr_login_success:QR 码登录成功qr_login_failed:QR 码登录失败通知采用异步重试队列(SQLite outbox),递增间隔(30s → 120s → 600s → 1800s → 3600s)保证最终投递。企业微信优先使用 Markdown 格式,失败后自动回退纯文本。
支持从 CookieCloud 服务自动拉取 YouTube / Google Cookies,免去手动导出的麻烦。
COOKIECLOUD_SERVER_URL、COOKIECLOUD_UUID、COOKIECLOUD_PASSWORD 后即可启用auto(自动探测)、legacy、aes-128-cbc-fixedyoutube.com、youtu.be、google.com 域名的 Cookiecookies/yt_cookies.txtwerkzeug.security.safe_join,Cookie 路径限制在项目目录内云平台的安全组 / 网络防火墙或服务器自身的防火墙可能没有放行 TCP 5000。不要直接将该端口向整个公网开放:Web 密码保护默认关闭,直接访问使用的也是明文 HTTP。
推荐通过 SSH 本地端口转发访问,无需开放公网 5000 端口:
ssh -N -L 5000:127.0.0.1:5000 -o ServerAliveInterval=30 user@<服务器公网IP>
连接建立后,在本地浏览器打开 http://localhost:5000。如果确实需要长期公网访问,请先启用 Web 密码保护,通过反向代理配置 HTTPS,并将云防火墙和主机防火墙的入站来源限制为可信 IP 或网段。
cookies/yt_cookies.txtffmpeg/ 未被安全软件隔离cookies/ac_cookies.json,或在设置页使用 QR 码重新扫码登录cookies/bili_cookies.json,或在设置页使用 QR 码重新扫码登录docker-compose.yml 中 GPU 部分是否已取消注释nvidia-container-toolkitNOTIFY_ENABLED 已开启,且目标渠道已正确配置../../issuesmodules/bili_sdk 部分参考了社区开源项目,针对上传流程做了适配。本项目基于 GNU GPL v3 开源。请遵守相关平台条款,仅在合法合规前提下用于学习与研究。
1 followers · starred Jul 2026
78 followers · starred Jul 2026
81 followers · starred Jun 2025
5 followers · starred Jul 2026
YouTube到AcFun和bilibili自动化搬运工具,支持AI翻译、字幕生成、内容审核、智能监控
Python
3,806
735 commits
updated Oct 2, 2026
将 YouTube 视频自动搬运到 AcFun / bilibili 的一体化工具。
从下载、ASR、字幕翻译、字幕质检、内容审核到上传,全流程自动化;内置 Web 管理后台、YouTube 监控和维护能力。
快速开始 · 功能概览 · 部署与运行 · 配置说明 · 使用指南 · 通知推送 · CookieCloud · 安全特性 · 常见问题
Telegram 转发机器人(试用):
@Y2AAuto_bot
自部署版本:Y2A-Auto-tgbot
| 能力模块 | 说明 |
|---|---|
| 全流程自动化 | 从下载、ASR、字幕、元信息到上传一条龙处理 |
| 审核可控 | 支持人工审核、强制上传、内容安全检测和登录保护 |
| 灵活部署 | Docker / 本地双模式,支持 CPU 与多种 GPU 编码 |
| 监控拉取 | 支持 YouTube 频道 / 关键词定时抓取与历史记录 |
| 消息推送 | 企业微信、Server酱、message-pusher 多渠道异步通知 |
| CookieCloud | 从 CookieCloud 服务自动同步 YouTube Cookies |
| 安全防护 | 密码保护、暴力破解锁定、会话超时、路径遍历防护 |
| 维护完善 | 支持日志清理、下载清理、并发控制和 FFmpeg 自动补齐 |
yt-dlp 下载视频与封面Y2A-Auto/
├── app.py
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── docker-compose-build.yml
├── acfunid/
├── build-tools/
├── config/
├── cookies/
├── db/
├── downloads/
├── ffmpeg/
├── fonts/
├── logs/
├── modules/
├── static/
├── temp/
├── templates/
└── tests/
推荐使用 Docker(无需手动安装 Python、FFmpeg、yt-dlp)。
cookies/yt_cookies.txt:YouTube 登录 Cookiecookies/ac_cookies.json:AcFun 登录 Cookiecookies/bili_cookies.json:bilibili 登录 Cookiecookies.txt,请勿提交到仓库# 默认从 Docker Hub 拉取镜像 fqscfqj/y2a-auto:latest
# 如需使用 GitHub 容器注册表,可切换为 ghcr.io/fqscfqj/y2a-auto:latest
docker compose up -d
http://localhost:5000默认会持久化目录:config/、db/、downloads/、logs/、temp/、cookies/。
说明:fonts/ 中的字体属于项目内置依赖,用于字幕烧录;许可证见 fonts/LICENSE.txt。
docker compose up -ddocker compose downdocker compose restartdocker compose logs -f如需本地构建镜像,可使用:
docker compose -f docker-compose-build.yml up -d --build
如果启动日志出现写入 config/、db/ 或 logs/ 等挂载目录的
PermissionError,请在项目目录中创建这些目录,并将其属主改为容器内应用使用的
UID/GID(默认 1000:1000):
mkdir -p config db downloads logs cookies temp
sudo chown -R 1000:1000 config db downloads logs cookies temp
启用了 rootless Docker 或 userns-remap 时,请使用容器 UID 1000 实际映射到宿主机的
UID/GID;映射方式参见 Docker 官方文档。
前置要求:
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python app.py
访问 http://127.0.0.1:5000。
build-tools/ 提供 Windows 可执行文件构建工具ffmpeg/ 目录完整即可首次运行会自动生成 config/config.json。推荐先配置以下几类参数:
AUTO_MODE_ENABLED:无人值守自动投稿总开关,默认 falsepassword_protection_enabled:Web 密码保护,默认 falseLOGIN_MAX_FAILED_ATTEMPTS:连续错误次数上限,默认 5LOGIN_LOCKOUT_MINUTES:锁定时长,默认 15LOGIN_SESSION_TIMEOUT_MINUTES:登录空闲超时时长,默认 30 分钟,最小 1,访问受保护页面会自动续期UPLOAD_TARGET_DEFAULT:默认投稿平台,支持 acfun、bilibili、bothUPLOAD_APPEND_REPOST_NOTICE:是否自动追加转载声明,默认 trueYOUTUBE_COOKIES_PATH:YouTube Cookie 路径ACFUN_COOKIES_PATH:AcFun Cookie 路径BILIBILI_COOKIES_PATH:bilibili Cookie 路径YOUTUBE_PROXY_ENABLED / YOUTUBE_PROXY_URL:YouTube 下载代理YOUTUBE_API_PROXY_ENABLED / YOUTUBE_API_PROXY_URL:YouTube 监控 API 独立代理,不继承下载代理YOUTUBE_DOWNLOAD_THREADS:下载线程数YOUTUBE_THROTTLED_RATE:下载速度限制YOUTUBE_API_KEY:YouTube Data API v3 密钥,监控功能需要FFMPEG_LOCATION:自定义 FFmpeg 路径FFMPEG_AUTO_DOWNLOAD:Windows 缺失时自动下载 FFmpeg,默认 trueFFmpeg 版本要求:≥ 5.1。 字幕烧录使用
-fps_mode cfr控制帧率模式, 该选项在 FFmpeg 5.1 才引入(5.0 及更早只认已弃用的-vsync)。仓库自带的 与自动下载的 FFmpeg(BtbN latest)都远高于该版本;但若通过FFMPEG_LOCATION指向 5.0 或更早的旧版本,软件编码路径会因Unrecognized option 'fps_mode'直接失败(非硬件编码器没有降级重试,任务会直接报错)。
VIDEO_CPU_CODEC=x265还额外要求该 FFmpeg 构建带libx265(需--enable-gpl --enable-libx265,BtbN 与仓库自带版本均满足)。缺失时会自动降级为libx264并继续烧录,不会因缺库而丢掉整条字幕。
OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_MODEL_NAME:全局 AI 配置OPENAI_THINKING_ENABLED:是否允许模型使用思考模式;关闭时按可识别的 DeepSeek、Qwen、MiMo 接口发送各自的私有禁用参数SUBTITLE_OPENAI_*:字幕翻译专用覆盖配置,留空则回退全局SUBTITLE_QC_*:字幕质检专用覆盖配置,留空则回退字幕翻译 / 全局配置TRANSLATE_TITLE / TRANSLATE_DESCRIPTION / GENERATE_TAGS:自动生成标题、简介、标签RECOMMEND_PARTITION:自动推荐分区FIXED_PARTITION_ID / FIXED_PARTITION_ID_BILIBILI:固定分区YOUTUBE_UPLOADER_AS_FIRST_TAG:将上传者作为首标签PRESET_TAGS_ENABLED / PRESET_TAGS:预设标签,每行一个(也接受逗号、顿号、分号分隔)。启用后预设标签排在任务标签之前,GENERATE_TAGS 开启时 AI 只补齐剩余名额;一份预设同时服务 AcFun(前 6 个、每个约 10 字)与 bilibili(最多 12 个、每个 20 字)AI 文本功能同时兼容 OpenAI Chat Completions 与 Responses API。OPENAI_BASE_URL 可填写 API 根地址(例如 https://api.openai.com/v1,默认使用 Chat Completions)或完整的 /chat/completions、/responses 地址;填写完整端点时会自动选择协议并规范化。Responses 请求会自动转换消息、JSON 输出格式和 token 上限参数,返回值也会归一化供翻译、质检、智能分段等现有功能使用。当兼容服务不支持 response_format、token 上限参数、自定义 temperature 或特定指令角色时,系统会根据端点实际错误逐级协商;若网关只返回笼统的请求 schema 错误,则降级为仅含 model + user messages 的最小标准请求。能力只在降级请求成功后按端点、协议和模型缓存。
SUBTITLE_TRANSLATION_ENABLED:启用字幕翻译,默认 falseYOUTUBE_AUTO_GENERATED_SUBTITLES_ENABLED:下载 YouTube 自动生成字幕,默认 falseSUBTITLE_SOURCE_LANGUAGE:源语言,默认 autoSUBTITLE_TARGET_LANGUAGE:目标语言,默认 zhSUBTITLE_FONT_NAME:烧录字幕字体名,默认 NotoSansCJKsc-Regular.otfSUBTITLE_BATCH_SIZE:翻译批次大小SUBTITLE_MAX_RETRIES / SUBTITLE_RETRY_DELAY:翻译重试策略SUBTITLE_EMBED_IN_VIDEO:是否将字幕嵌入视频SUBTITLE_KEEP_ORIGINAL:是否保留原始字幕文件SUBTITLE_MAX_WORKERS:字幕翻译并发线程数烧录字幕外观(默认值即历史观感;对 .ass/.ssa 源的行为变更见下方说明):
SUBTITLE_FONT_SIZE_SCALE / SUBTITLE_MARGIN_V_SCALE:字号与底部边距倍率,范围 0.5-2.0,默认 1.0SUBTITLE_FONT_COLOR / SUBTITLE_OUTLINE_COLOR:字体色与描边色,#RRGGBB,默认 #FFFFFF / #000000SUBTITLE_OUTLINE_ENABLED / SUBTITLE_OUTLINE_SCALE:描边开关与粗细倍率(0-3)SUBTITLE_SHADOW_ENABLED / SUBTITLE_SHADOW_SCALE:阴影开关与倍率(0-3)SUBTITLE_TEXT_BOLD:是否粗体,默认 trueSUBTITLE_BACKGROUND_ENABLED / SUBTITLE_BACKGROUND_COLOR / SUBTITLE_BACKGROUND_OPACITY:半透明底板(BorderStyle=4)及其颜色与不透明度(0-1)。开启后 libass 会把阴影当作底框外扩,建议同时关闭阴影行为变更(
.ass/.ssa源素材):上述外观配置现在对所有字幕源统一生效。 此前上游只把字体与边距写进force_style,字色 / 描边色 / 粗体 / 底板这些键对.ass/.ssa源不生效(同一份配置喂.srt是红字、喂.ass仍是创作者的白字), 现在这些键改为逐键覆盖源样式 —— 也就是说,素材自带的字色 / 粗体 / 底板样式会被 应用配置覆盖,未配置时即默认的白字 + 粗体 + 描边(与 SRT 源行为一致)。 升级后若想保留素材自带外观,请把对应配置项显式设置成与素材一致的取值,或改用 自带样式的外部字幕文件而不依赖本功能。
SPEECH_RECOGNITION_ENABLED:是否启用语音识别生成字幕,默认 falseSPEECH_RECOGNITION_PROVIDER:支持 whisper、voxtralVAD_ENABLED:VAD 语音扫描窗,默认 trueWHISPER 路径默认使用 segment 级时间戳,并自动兼容不支持 timestamp_granularities 的接口WHISPER_LANGUAGE / WHISPER_PROMPT / WHISPER_TRANSLATE:Whisper 专用参数VOXTRAL_TIMESTAMP_GRANULARITIES:默认 segment,wordVOXTRAL_DIARIZE / VOXTRAL_CONTEXT_BIAS / VOXTRAL_LANGUAGEVOXTRAL_MAX_AUDIO_DURATION_S / VOXTRAL_LONG_AUDIO_MARGIN_S / VOXTRAL_ENFORCE_MAX_DURATIONVIDEO_ENCODER:auto / cpu / nvidia / intel / amdVIDEO_CPU_CODEC:x264(H.264,默认)或 x265(H.265/HEVC)。仅在最终使用 CPU 编码时生效:VIDEO_ENCODER=cpu,或硬编不可用而回退到 CPU 时。编码耗时约为 libx264 的 5 倍,超时预算会按同一倍数放大;体积收益不保证,取决于素材与 preset,建议开启后自行对比VIDEO_CPU_PRESET:常规 CPU 软编码 preset,默认 mediumVIDEO_CPU_PRESET_HD:1440p+ 且超过 10 分钟时使用的 preset,默认 veryfastVIDEO_QUALITY_MODE:auto(按分辨率推荐)或 manual(使用 VIDEO_QUALITY_VALUE),默认 autoVIDEO_QUALITY_VALUE:固定质量值 CRF/CQ/QP,范围 0-51,越小质量越高。自动模式的推荐值为 4K 22.5 / 1440p 23 / 1080p 23.5 / 720p 24.5VIDEO_HW_QUALITY_BOOST:编码质量增强总开关(自适应量化、前瞻、多遍分析等),默认 true。它同时作用于硬件编码器与软件编码器:x264 写 -aq-mode 3 -aq-strength 0.8 -psy-rd 1.0:0.0,非 HD preset 路径再加 -rc-lookahead 40;x265 只写 aq-mode=3,非 HD preset 路径再加 rc-lookahead=40(psy-rd / aq-strength / psy-rdoq 不写,即保持 x265 自身的默认值 2.00 / 1.0 / 1.00 —— 照抄 x264 的数值在 x265 上等于把这些心理视觉优化砍半,与「质量增强」相反)。1440p+ 长视频走 VERYFAST 档时前瞻跟随 preset 自身默认值,不被放大。老 GPU 驱动不认识这些参数时可关闭,命令会回到基础参数并自动重试VIDEO_HW_QUALITY_LEVEL:fast / balanced / quality,映射到各硬件编码器的速度档,默认 qualityVIDEO_COLOR_METADATA_MODE:auto(透传源流色彩信息)/ bt709(强制)/ off(不写入),默认 auto。不写入时播放器会按默认色域解释,可能偏色VIDEO_X264_TUNE:软编码 -tune 取值(如 film / animation),留空则不传。取值按 VIDEO_CPU_CODEC 各自的白名单校验:film 与 stillimage 只对 x264 合法,切到 x265 时会被忽略并写入任务日志VIDEO_CUSTOM_PARAMS_ENABLED / VIDEO_CUSTOM_PARAMS:自定义 FFmpeg 参数(启用后完全覆盖内置编码参数与色彩参数)。若自定义参数里没有写 -c:v,系统会按 VIDEO_CPU_CODEC 补上 -c:v libx264 / -c:v libx265 —— 否则 ffmpeg 会取容器默认编码器(mp4 为 libx264),VIDEO_CPU_CODEC 被静默忽略、色彩 VUI 补写也一并失效;若你自己写了 -c:v,则以你指定的编码器为准(识别为 libx264 / libx265 时才补写色彩 VUI,并在任务日志中说明)MAX_CONCURRENT_TASKS:最大并发任务数,默认 2MAX_CONCURRENT_UPLOADS:最大并发上传数,默认 1LOG_CLEANUP_ENABLED / LOG_CLEANUP_HOURS / LOG_CLEANUP_INTERVALDOWNLOAD_CLEANUP_ENABLED / DOWNLOAD_CLEANUP_HOURS / DOWNLOAD_CLEANUP_INTERVALDELETE_DOWNLOAD_FILES_AFTER_UPLOAD:所有目标平台上传成功后立即删除该任务的下载文件(默认关闭)NOTIFY_ENABLED:启用消息推送,默认 falseNOTIFY_CHANNELS:启用的渠道列表,支持 wecom、serverchan、message_pusherNOTIFY_EVENTS:订阅的事件列表,可选 task_added、task_completed、task_failed、login_success、login_locked、qr_login_success、qr_login_failedNOTIFY_WECOM_WEBHOOK_URLNOTIFY_SERVERCHAN_SENDKEYNOTIFY_MESSAGE_PUSHER_SERVER / NOTIFY_MESSAGE_PUSHER_USERNAME / NOTIFY_MESSAGE_PUSHER_TOKENCOOKIECLOUD_ENABLED:启用 CookieCloud 同步,默认 falseCOOKIECLOUD_SERVER_URL:CookieCloud 服务地址COOKIECLOUD_UUID:CookieCloud UUIDCOOKIECLOUD_PASSWORD:CookieCloud 加密密码COOKIECLOUD_ENCRYPT_MODE:加密模式,支持 auto / legacy / aes-128-cbc-fixedCONTENT_MODERATION_ENABLED:启用阿里云内容审核,默认 falseALIYUN_ACCESS_KEY_ID / ALIYUN_ACCESS_KEY_SECRET:阿里云 AK/SKALIYUN_CONTENT_MODERATION_REGION:审核服务区域ALIYUN_TEXT_MODERATION_SERVICE:文本审核服务名,默认 comment_detection_proYOUTUBE_DOWNLOAD_QUALITY_MODE:下载质量模式YOUTUBE_DOWNLOAD_MAX_HEIGHT:最大分辨率高度限制SUBTITLE_MAX_LINE_LENGTH:单行最大字符数,默认 42SUBTITLE_MAX_LINES:单条字幕最大行数,默认 2SUBTITLE_NORMALIZE_PUNCTUATION:标点标准化,默认 trueSUBTITLE_FILTER_FILLER_WORDS:过滤填充词(um、uh 等),默认 trueSUBTITLE_TIME_OFFSET_S:字幕时间偏移(秒)SUBTITLE_MIN_CUE_DURATION_S:最短字幕时长,默认 0.6SUBTITLE_MERGE_GAP_S:相邻间隙合并阈值,默认 0.3{
"AUTO_MODE_ENABLED": false,
"password_protection_enabled": false,
"password": "",
"UPLOAD_TARGET_DEFAULT": "acfun",
"OPENAI_API_KEY": "",
"OPENAI_BASE_URL": "https://api.openai.com/v1",
"OPENAI_MODEL_NAME": "gpt-3.5-turbo",
"OPENAI_THINKING_ENABLED": false,
"SUBTITLE_TRANSLATION_ENABLED": false,
"SUBTITLE_QC_ENABLED": true,
"SPEECH_RECOGNITION_ENABLED": false,
"SPEECH_RECOGNITION_PROVIDER": "whisper",
"VAD_ENABLED": true,
"VIDEO_ENCODER": "auto",
"VIDEO_CPU_CODEC": "x264",
"VIDEO_CPU_PRESET": "medium",
"VIDEO_CPU_PRESET_HD": "veryfast",
"FFMPEG_AUTO_DOWNLOAD": true,
"MAX_CONCURRENT_TASKS": 2,
"MAX_CONCURRENT_UPLOADS": 1
}
SUBTITLE_QC_ENABLED 默认为 true:系统会对 ASR 生成的源字幕做预检。
SUBTITLE_QC_THRESHOLD:AI 复核分数下限(0 ~ 1,默认 0.60)SUBTITLE_QC_SAMPLE_MAX_ITEMS:AI 抽样条目上限,默认 80SUBTITLE_QC_MAX_CHARS:AI 单次送检最大字符数上限,默认 9000SUBTITLE_QC_MODEL_NAME:单独指定 QC 模型,留空则复用字幕翻译 / 全局模型SUBTITLE_QC_TIMELINE_ENABLED:是否启用时间轴维度判定,默认 trueSUBTITLE_QC_MIN_COVERAGE_RATIO:字幕总时长 / 视频时长的覆盖率下限,默认 0.15SUBTITLE_QC_MAX_GAP_S:允许的最大连续无字幕间隙(秒),默认 90SUBTITLE_QC_MAX_CPS:单条字幕最大字符速率(字符/秒),默认 25QC 会先用规则做硬拦截,只有边界样本才会调用 AI 严格复核。
命中署名行、噪声提示、界面操作词、模板化重复句等明显低质量字幕时,会在规则层直接失败,不再进入宽松放行。
时间轴维度(覆盖率 / 间隙 / 语速)会在 ASR 来源退化(subtitle_quality_state == degraded)时随严格模式一并参与判定。
时间轴维度的三条边界语义:片尾留白容忍带取「30 秒」与「片长 25%」的较小值(60 秒素材不会因为末尾 23 秒无字幕而被当作良性留白);零时长 cue 达到「≥3 条且 ≥20%」即视为实质缺陷,AI 不可用时不予放行(≥25% 无条件硬失败);畸形时间戳(时间行无法解析)的 cue 会被跳过并记 warning,不再静默退化为 0.0 —— 退化到 0.0 会虚高覆盖率并反过来帮助质检通过。
可疑样本在 AI 不可用、返回异常或输出不合规时,默认按失败处理。QC 失败时会跳过烧录字幕,但仍保留字幕文件并继续上传原视频,任务最终标记为完成,并显示字幕异常标记。
被判定不合格的 ASR 字幕会被改名为 *.rejected.txt(内容保留供人工检查),移出复用范围,避免任务重跑时复用旧字幕而永远拿不到新字幕。平台自带或人工提供的字幕不受此影响。
ASR_FAILURE_BLOCKS_EMBED(默认 true):ASR/VAD 质量结局为 failed(来源不可信)时拒绝烧录该字幕。设为 false 恢复旧行为,只放宽「ASR 来源结局」与「质检没跑成」两种拦截,不会放过质检给出的明确失败结论 —— 质检结论针对字幕内容本身,与 ASR 来源可靠度是两件事。SUBTITLE_QC_ENABLED=false:用户主动放弃质检这道防线。此时不再看历史质检标记,也不再要求 degraded 素材通过严格质检(质检关闭时该条件无法满足,若仍拦截就变成「关掉质检反而更严格」)。「质检不可用」(字幕文件缺失 / 执行异常)与「用户主动关闭质检」是两种不同结局:前者按拒绝处理,后者放行。任务列表中会通过 qc_unavailable / subtitle_qc_rejected / asr_failed_block_embed / asr_degraded_block_embed 标注具体原因。
当前支持两类 ASR 提供商:
voxtral-mini-latest建议优先保持 VAD_ENABLED=true。当前默认采用质量优先的扫描窗参数,分片更短、重叠更小,便于提升字幕边界精度。
如果 VAD 结果不理想,系统会自动进入分片或整段兜底流程。
SourceHanSansHWSC-VF.otf,作为字幕烧录依赖随仓库一起分发SUBTITLE_FONT_NAME 指定 fonts/ 目录中的字体文件名;程序会读取该文件的真实字体名供 libass 使用fonts/LICENSE.txtffmpeg/ 目录中的二进制ffmpeg/ 缺失,系统可自动下载并补齐FFMPEG_LOCATION 可覆盖默认路径,支持直接指向 ffmpeg.exe 或其所在目录VIDEO_ENCODER=cpu 时使用 CPU 软编码,编码器由 VIDEO_CPU_CODEC 决定:
x264(默认):libx264(H.264)x265:libx265(H.265/HEVC)。实测(1080p30,带字幕烧录)耗时约为 libx264 的 5 倍(veryfast 1.70s → 8.44s),超时预算已按同一倍数放大veryfast 下同 CRF 的体积反而是 libx264 的 1.6~1.8 倍,medium 下约持平。是否更省取决于素材与 preset,建议开启后自行对比再决定;x265 的 CRF 标度与 x264 不可直接比较,本项不做任何自动偏移VIDEO_ENCODER=auto|nvidia|intel|amd 时优先使用 HEVC / H.265 硬件编码:
hevc_nvenchevc_qsvhevc_amfhevc_vaapiVIDEO_CPU_CODEC 选择编码器)x265 但当前 FFmpeg 不含 libx265,或 libx265 不接受某个参数,会自动降级为 libx264 重试。硬件编码失败回退到 CPU 时同样保留这一级:硬编回退的 CPU 阶段仍用你配置的 x265,因此仍需要 x265 -> x264 这条兜底;该阶段的超时预算也按其真实编码器(x265 为 5 倍)计算,而不是沿用 x264 的预算NVIDIA(推荐):
# 在 docker-compose.yml 内取消以下注释即可启用:
# gpus: all
# environment:
# - NVIDIA_VISIBLE_DEVICES=all
# - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
Intel / AMD(Linux):
devices:
- /dev/dri:/dev/dri
group_add:
- video
- render
NVIDIA 专用覆盖文件已移除,相关配置已直接集成到主
docker-compose.yml。
YOUTUBE_API_KEYconfig/youtube_monitor/,历史数据库位于 db/youtube_monitor.db支持三种推送渠道,可在设置页自由组合启用:
| 渠道 | 标识 | 必需配置 |
|---|---|---|
| 企业微信 | wecom | NOTIFY_WECOM_WEBHOOK_URL |
| Server酱 | serverchan | NOTIFY_SERVERCHAN_SENDKEY |
| message-pusher | message_pusher | NOTIFY_MESSAGE_PUSHER_SERVER + USERNAME + TOKEN |
支持的事件类型:
task_added:任务添加task_completed:任务完成task_failed:任务失败login_success:登录成功login_locked:登录锁定qr_login_success:QR 码登录成功qr_login_failed:QR 码登录失败通知采用异步重试队列(SQLite outbox),递增间隔(30s → 120s → 600s → 1800s → 3600s)保证最终投递。企业微信优先使用 Markdown 格式,失败后自动回退纯文本。
支持从 CookieCloud 服务自动拉取 YouTube / Google Cookies,免去手动导出的麻烦。
COOKIECLOUD_SERVER_URL、COOKIECLOUD_UUID、COOKIECLOUD_PASSWORD 后即可启用auto(自动探测)、legacy、aes-128-cbc-fixedyoutube.com、youtu.be、google.com 域名的 Cookiecookies/yt_cookies.txtwerkzeug.security.safe_join,Cookie 路径限制在项目目录内云平台的安全组 / 网络防火墙或服务器自身的防火墙可能没有放行 TCP 5000。不要直接将该端口向整个公网开放:Web 密码保护默认关闭,直接访问使用的也是明文 HTTP。
推荐通过 SSH 本地端口转发访问,无需开放公网 5000 端口:
ssh -N -L 5000:127.0.0.1:5000 -o ServerAliveInterval=30 user@<服务器公网IP>
连接建立后,在本地浏览器打开 http://localhost:5000。如果确实需要长期公网访问,请先启用 Web 密码保护,通过反向代理配置 HTTPS,并将云防火墙和主机防火墙的入站来源限制为可信 IP 或网段。
cookies/yt_cookies.txtffmpeg/ 未被安全软件隔离cookies/ac_cookies.json,或在设置页使用 QR 码重新扫码登录cookies/bili_cookies.json,或在设置页使用 QR 码重新扫码登录docker-compose.yml 中 GPU 部分是否已取消注释nvidia-container-toolkitNOTIFY_ENABLED 已开启,且目标渠道已正确配置../../issuesmodules/bili_sdk 部分参考了社区开源项目,针对上传流程做了适配。本项目基于 GNU GPL v3 开源。请遵守相关平台条款,仅在合法合规前提下用于学习与研究。
1 followers · starred Jul 2026
78 followers · starred Jul 2026
81 followers · starred Jun 2025
5 followers · starred Jul 2026