Files
115reelay/config.example.yaml
DerrorsandClaude Code ecae44a6b4 feat: 支持仅处理订阅并完善项目使用指南
增加全局与来源级订阅过滤,统一正式处理与测试预览。修复电驴链接提示和 AI 规则生成格式兼容问题,并补齐回归测试。

重写项目介绍,补全快速开始、日常使用、常见问题和文档导航。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-11-01 11:22:51 +08:00

167 lines
9.3 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ===== Reelay 配置示例 =====
# 一般不需要手写:首次启动会生成 data/config.yaml,之后在管理台「设置」「插件」页修改,自动写回这个文件。
# 想直接编辑时,复制为 data/config.yaml;有效配置会被重载,新任务使用新策略,已接收任务保留快照。
# 密钥(AI / TMDB key、Telegram API、控制 Bot Token、Web 密码)不写在这里,在管理台「设置」中填写,
# 保存在 data/secrets.json。
# ---------------------------------------------------------------- 系统配置
system:
# 可替换 Provider;配置保存/启动会校验名称
providers:
source: telegram
notify: [console]
# 115 目录别名 -> cid 映射(转存目标,可随时切换)
save_dirs:
电影: "0" # 填你 115 里对应目录的 cid(0 仅占位)
剧集: "0"
动漫: "0"
默认: "0"
# 监听多个 bot,各挂各的规则(先设全局默认,再按 bot 覆盖)
defaults:
approval_mode: manual # manual(人工确认)| auto(AI 处理:规则都通过就直接转存,拿不准的仍交给你)
bot_notify: true # Bot 通知:推送审批卡片与入库通知;关闭后在管理台处理,出问题的提醒照常发送
subscriptions_only: false # 仅处理订阅:开启后需匹配有效订阅的作品与季,否则直接忽略,不进入待审批
parser: llm # llm | regex;LLM 异常/非法输出降级后必须人工确认
llm_response_format: json_schema # 不支持 schema 的兼容接口可显式用 json_object,仍严格本地校验
decision: subscription # default(只按规则)| subscription(规则 + 订阅放行)| llm(再加自然语言偏好)
storage: p115
confidence_threshold: 0.5 # 置信度由标题/类型/年份/TMDB 匹配等确定性信号计算,不采信 LLM 自报值
preferences: "" # decision=llm 时,例如:只收 4K 电影,动画放入动漫目录
episodes_from: share # share:以分享内文件名为准并跳过已入库的集 | message:只转存消息声明的集
save_to: 默认
sources:
- bot: "@example_movie_bot"
approval_mode: manual
save_to: 电影
# 来源自己的识别规则(逐字段正则,没写的字段用通用规则):规则识别直接使用,
# AI 识别时作为参考,AI 不可用时兜底。管理台来源卡片的「识别规则」可让 AI 按最近的消息起草
# parse_rules:
# title: '^名称:(.+?)\s*\(\d{4}\)'
# episodes: 'E(\d+)'
filters:
must_have: ["115.com", "115.cn"]
block_keywords: ["广告", "招商", "投稿", "频道"]
# 结构化规则(可用管理台「用一句话生成规则」起草):识别与 TMDB 补全后按字段判断
# allow: [{origin_country: "CN,HK,TW"}] # 命中任一条才收
# deny: [{genre_ids: "10764,10767"}] # 真人秀、脱口秀不收
# min_resolution: 1080p # 清晰度未知时转人工
# 高度信任的源:AI 处理 + 自然语言偏好;低置信度、TMDB 未匹配和 LLM 降级仍会转人工
- bot: "@example_tv_bot"
approval_mode: auto
decision: llm
preferences: "只要 4K 或 1080p 的国产剧和日本动画,综艺不要"
save_to: 剧集
forward:
enabled: false # 来源级覆盖,全局 target/template 继续继承
# 追剧订阅与「不再接收」的作品不在配置里:在管理台「追剧订阅」、Telegram 审批卡片与 MCP 里维护,存在数据库中。
# 转发(识别成功后按模板转发到目标,可一键开关)
forward:
enabled: false
target: "@your_archive_channel"
template: "🎬 {title} ({year}) {resolution}\n📦 {size}\n🔗 {link}"
# 审批超时兜底(manual 卡片久未处理)
approval:
timeout_hours: 24
on_timeout: remind # remind(提醒)| skip(超时忽略)
reminder: digest # digest:所有超时任务合并成一条汇总 | card:逐条重推确认卡片
max_reminders: 3 # 每条最多提醒次数,之后不再提醒但保留在待审批(0 = 不限)
# 每日系统事件(日报、追更巡检)的发送时刻,本地时间 0-23 点
schedule:
daily_hour: 9
# AI 能力:人工裁决回流、转人工前兜底、审批建议与「改为自动转存」建议
ai:
examples: 3 # 识别时参考同一来源最近几条人工修正(0 关闭)
history: 20 # decision=llm 时参考同一来源最近几条批准与忽略(0 关闭)
assist: true # 分享里的文件按规则无法确定时先让 AI 给方案,方案经同一套规则校验
advice: true # 待审批附建议动作与理由(动作由规则决定,AI 只措辞)
suggest_auto: {min_decisions: 20, approve_rate: 0.9, max_correct_rate: 0.1}
# 同一集多个版本时的偏好:收件箱推荐版本与洗版共用,列表顺序即优先级
release:
prefer_subtitles: [chs, cht] # chs | cht | eng | jpn | kor
prefer_audio: [] # mandarin | cantonese | english | japanese | korean
hdr: any # any | prefer | avoid
prefer_sources: [] # remux | bluray | web-dl | webrip | hdtv | dvd
# AI 服务(OpenAI 兼容接口):base_url 留空用 OpenAI 官方地址
llm:
base_url: ""
model: gpt-4o-mini
reasoning_effort: "" # none | minimal | low | medium | high | xhigh | max;留空不传,各模型支持的取值不同
# TMDB:base_url 留空用官方地址;国内连不上时可改用 https://api.tmdb.org/3 或自己的反向代理
tmdb:
base_url: ""
language: zh-CN
timeout: 10
# Telegram:控制 Bot 只服务 owner_id(你的数字 ID);监听启动时按来源补拉停机期间的消息
telegram:
owner_id: ""
backfill_limit: 200 # 每个来源最多补拉条数,0 关闭
backfill_max_days: 7
alert_after_sec: 120 # 消息源断开多久告警
# 115 请求治理:各类接口每秒请求数,触发风控后全部接口暂停的秒数
p115:
open_qps: 3
cookie_qps: 2
share_qps: 1
risk_cooldown_sec: 3600
# 网络代理:国内网络连不上 Telegram、TMDB 或 AI 服务时使用;115 始终直连
proxy:
url: "" # http://192.168.1.2:7890 或 socks5://127.0.0.1:1080,留空不使用;需要认证时写成
# http://用户名@地址:端口,密码在管理台「设置 → 网络代理」中填写(保存在 secrets.json)
telegram: true # 监听、控制 Bot 与登录(改了重启主进程生效)
tmdb: true
ai: true # 用国内的 AI 服务或本地模型时可以关掉
# 主进程:同时处理的任务数与日志级别(重启生效)
runtime:
concurrency: 3
log_level: INFO
# ---------------------------------------------------------------- 插件配置
# plugins.<插件名>:enabled 开关(不写按插件默认)与该插件的设置;转存检查点仍绑定原 Provider 和文件 ID
plugins:
tmdb_enrich: {enabled: true}
share_probe: {enabled: true}
failure_explainer: {enabled: true} # 失败解释:任务停下来等人处理时说明原因与建议操作
# 媒体库整理(管理台「插件」页维护):转存前选存放目录,转存后按 Jinja2 模板改名归类,变量同 MoviePilot。
# 目录名中的 [tmdbid=xxx] 在 TMDB 匹配成功时写入,Jellyfin/Emby 据此精确刮削。
organizer:
enabled: true
# 目录方式:category(二级分类,规则随插件发布:reelay/plugins/organizer/category.yaml)
# | media_type(按媒体类型,见 type_dirs)| none(不分类)
layout: category
# 按媒体类型时的文件夹名;anime 留空则动漫不单独分
type_dirs: {movie: 电影, tv: 剧集, anime: 动漫}
naming:
movie: "{{title}}{% if year %} ({{year}}){% endif %}{% if tmdbid %} [tmdbid={{tmdbid}}]{% endif %}/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}{% if videoCodec %} {{videoCodec}}{% endif %}{% if audioCodec %} {{audioCodec}}{% endif %}{{fileExt}}"
tv: "{{title}}{% if year %} ({{year}}){% endif %}{% if tmdbid %} [tmdbid={{tmdbid}}]{% endif %}/Season {{season|pad2}}/{{title}} - {{season_episode}}{% if part %}-{{part}}{% endif %} - 第 {{episode}} 集{% if videoFormat %} - {{videoFormat}}{% endif %}{% if videoCodec %} {{videoCodec}}{% endif %}{% if audioCodec %} {{audioCodec}}{% endif %}{{fileExt}}"
# 库里已有同一集 / 同一部的文件时:manual(转人工,默认;可在管理台选删除转存文件或覆盖保存)| skip(保留旧文件,新文件进回收站)
# | suffix(新文件加「 (2)」并存)| upgrade(洗版:按版本偏好更好则替换,旧文件进回收站)
conflict: manual
# 缺集追更:订阅的剧(在管理台「追剧订阅」管理,存在数据库里)之外,也自动跟踪最近有更新的剧
episode_tracker:
enabled: true
track_all: true
lookback_days: 30
# 每日日报;配置了 AI 时开头附一段提醒
daily_report:
enabled: true
narrative: true