Telegram 转发机器人(公共实例):
@Y2AAuto_bot
⚠️ 公共实例部署在个人 VPS 上,该服务器已被墙,可用性无法保证;若无法连接,请按
自部署说明搭建自己的机器人:
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)。
准备 Cookie(必须)
- cookies/yt_cookies.txt:YouTube 登录 Cookie
- cookies/ac_cookies.json:AcFun 登录 Cookie
- cookies/bili_cookies.json:bilibili 登录 Cookie
- 可使用浏览器扩展导出 cookies.txt,请勿提交到仓库
启动服务
# 默认从 Docker Hub 拉取镜像 fqscfqj/y2a-auto:latest
# 如需使用 GitHub 容器注册表,可切换为 ghcr.io/fqscfqj/y2a-auto:latest
docker compose up -d
http://localhost:5000
- 首次进入建议先配置登录保护、平台账号和 YouTube Cookie默认会持久化目录: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 官方文档。
前置要求: - Python 3.11+ - FFmpeg - yt-dlp
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/ 目录完整即可Y2A-Auto-tgbot 是一个独立的 Telegram 机器人:在 Telegram 里直接发送 YouTube 视频 / 播放列表链接,机器人会调用本服务的 /tasks/add_via_extension 接口提交上传任务。它需要单独部署,不会随本项目一起启动。
⚠️ 公共实例不保证可用。 @Y2AAuto_bot 运行在个人 VPS 上,该服务器已被墙,可能随时无法访问。需要长期、稳定使用时请自行部署。
自部署要点(Bot Token 创建、Token 作用范围等完整说明见 Y2A-Auto-tgbot README):
/newbot 创建机器人,拿到 TG_BOT_TOKEN(形如 123456789:AAE...)bash
git clone https://github.com/fqscfqj/Y2A-Auto-tgbot.git
cd Y2A-Auto-tgbot
# 编辑 docker-compose.yml 填写 TG_BOT_TOKEN(可选 ADMIN_TELEGRAM_IDS),然后:
docker compose up -d
y2a_tgbot_v1_...(明文只显示一次)/settings,填写 API 地址(机器人所在网络能访问到的本项目地址,例如同机 http://127.0.0.1:5000,跨机器 http://192.168.1.100:5000)和 API Token,再点「🔬 测试」确认连接成功该 Token 只允许调用 /tasks/add_via_extension,无法访问设置、日志等其它接口,并且可以随时在设置页重置或撤销。
首次运行会自动生成 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 路径BILIBILI_SUBMIT_API:bilibili 投稿接口,auto(默认,优先必剪 PC 接口,失败回退 Web)/ bcut_pc / web(手改成 bcut 等别名也会被归一化后再保存)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 Chat 用 thinking、Responses 用 reasoning.effort=none;Qwen Chat/Responses 用 enable_thinking;MiMo Chat 用 thinking、Responses 用 reasoning.effort=none)。原生开关被端点以 400/422 拒绝时,会在同一请求内再尝试标准 reasoning_effort=none / reasoning.effort=none,全部形态都失败才移除控制并记录 warning;此时模型可能恢复默认思考行为。第三方网关上的 DeepSeek/Ling/混元没有可靠原生开关,先尝试标准参数,再尝试通用 thinking 对象。通过反向代理访问官方端点时无法从域名识别厂商,会按第三方顺序逐个尝试,但不会因此跳过关闭思考的尝试。OpenAI o 系列 / GPT-5 等推理模型各代支持的 reasoning_effort 取值不同,本开关不会自动改写,需在模型网关侧控制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 专用参数| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|