1
0
mirror of https://github.com/pooneyy/1Panel-Appstore.git synced 2026-03-18 01:01:02 +08:00

520 lines
23 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# ═══════════════════════════════════════════════════════════════
# TrendRadar 配置文件
# Version: 2.0.0
# ═══════════════════════════════════════════════════════════════
# 可视化配置编辑器地址: https://sansan0.github.io/TrendRadar/
# ===============================================================
# 1. 基础设置
# ===============================================================
app:
# 时区配置(影响所有时间显示、调度系统判断、数据存储)
# 常用时区:
# - Asia/Shanghai (北京时间 UTC+8)
# - America/New_York (美东时间 UTC-5/-4)
# - Europe/London (伦敦时间 UTC+0/+1)
# 完整时区列表: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezone: "Asia/Shanghai"
show_version_update: true # 显示版本更新提示
# ===============================================================
# 1.5 调度系统 —— 什么时间做什么事
#
# 通过 timeline.yaml 里定义的时间段来自动决定:
# - 什么时候推送通知
# - 什么时候做 AI 分析
# - 用什么报告模式
#
# 快速上手:选一个预设模板,改 preset 的值就行
#
# always_on → 全天候,有新增即推送
# morning_evening → 全天推送 + 晚间当日汇总(推荐)
# office_hours → 工作日三段式(到岗→午间→收工),周末增量自由推
# night_owl → 午后速览 + 深夜全天汇总
# custom → 完全自定义,详见 timeline.yaml
#
# 详细时间线图请查看 config/timeline.yaml
# ===============================================================
schedule:
enabled: true # 是否启用调度系统
preset: "morning_evening" # 预设模板名称(见上方说明)
# ===============================================================
# 2. 数据源 - 热榜平台
#
# enabled: 是否启用热榜抓取(总开关)
# sources: 平台列表
# - id: 平台唯一标识(勿修改)
# - name: 显示名称(可自定义,修改后不影响运行)
# 参考: https://github.com/sansan0/TrendRadar/issues/95
# ===============================================================
platforms:
enabled: true # 是否启用热榜平台抓取
sources:
- id: "toutiao"
name: "今日头条"
- id: "baidu"
name: "百度热搜"
- id: "wallstreetcn-hot"
name: "华尔街见闻"
- id: "thepaper"
name: "澎湃新闻"
- id: "bilibili-hot-search"
name: "bilibili 热搜"
- id: "cls-hot"
name: "财联社热门"
- id: "ifeng"
name: "凤凰网"
- id: "tieba"
name: "贴吧"
- id: "weibo"
name: "微博"
- id: "douyin"
name: "抖音"
- id: "zhihu"
name: "知乎"
# ===============================================================
# 3. 数据源 - RSS 订阅
#
# 与热榜数据分开存储,按时间流展示
# 每个源配置id(唯一标识)、name(显示名称)、url(订阅地址)
# enabled: 可选,默认 true
# max_age_days: 可选,覆盖全局 freshness_filter.max_age_days
# ===============================================================
rss:
enabled: true # 是否启用 RSS 抓取
# 文章新鲜度过滤配置(全局默认值)
# 过滤掉发布时间超过指定天数的旧文章,避免同一篇文章重复出现在推送中
#
# 过滤逻辑:
# - 文章发布时间距当前时间app.timezone 时区)超过 N 天则不推送
# - 无发布时间的文章会被保留(不过滤)
#
# ⚠️ 过滤时机:在推送阶段过滤
# - 所有文章都会存入数据库MCP Server 的 AI 查询仍可访问)
# - 只有新鲜的文章会被推送到通知渠道
freshness_filter:
enabled: true # 是否启用新鲜度过滤(默认启用)
max_age_days: 3 # 最大文章年龄(天)
# - 正整数:只推送 N 天内的文章
# - 0禁用过滤推送所有文章
# 单个 feed 可配置 max_age_days 覆盖全局设置:
# - 不配置:使用全局 freshness_filter.max_age_days默认 3 天)
# - 正整数:覆盖全局设置,只推送此天数内的文章
# - 0禁用此频道的新鲜度过滤推送所有文章
feeds:
- id: "hacker-news"
name: "Hacker News"
url: "https://hnrss.org/frontpage"
# max_age_days: 1 # 示例只推送1天内的文章
- id: "ruanyifeng"
name: "阮一峰的网络日志"
url: "http://www.ruanyifeng.com/blog/atom.xml"
# max_age_days: 7 # 示例推送7天内的文章更新较慢的博客
- id: "yahoo-finance"
name: "雅虎财经"
url: "https://finance.yahoo.com/news/rssindex"
enabled: false # 禁用
# 自定义源示例
# - id: "custom-feed"
# name: "自定义源"
# url: "https://example.com/feed.xml"
# enabled: false
# max_age_days: 0 # 示例:禁用过滤,推送所有文章
# ===============================================================
# 4. 报告模式
#
# 🔸 daily当日汇总模式
# • 推送时机:按时推送(默认每小时推送一次)
# • 显示内容:当日所有匹配新闻 + 新增新闻区域
# • 适用场景:日报总结、全面了解当日热点趋势
#
# 🔸 current当前榜单模式
# • 推送时机:按时推送(默认每小时推送一次)
# • 显示内容:当前榜单匹配新闻 + 新增新闻区域
# • 适用场景:实时热点追踪、了解当前最火的内容
#
# 🔸 incremental增量监控模式
# • 推送时机:有新增才推送
# • 显示内容:新出现的匹配频率词新闻
# • 适用场景:避免重复信息干扰
# ===============================================================
report:
mode: "current" # 可选: daily | current | incremental
# ⚠️ 开启调度系统后,此值会被当前时间段的 report_mode 覆盖
display_mode: "keyword" # 分组维度: keyword | platform
# keyword: 按关键词分组显示(默认)
# platform: 按平台/来源分组显示
# 关键词组排序方式(仅 display_mode: keyword 时生效)
# true: 按 frequency_words.txt 中的定义顺序排列
# false: 按匹配到的热点条数排序(条数多的在前)
sort_by_position_first: false
rank_threshold: 5 # 排名高亮阈值
max_news_per_keyword: 0 # 每个关键词最大显示数量0=不限制)
# ===============================================================
# 5. 推送内容控制
#
# 统一管理推送消息中显示哪些区域及其排列顺序
# ===============================================================
display:
# 📋 区域显示顺序
# 列表从上到下的顺序 = 推送消息中从上到下的显示顺序
# 想调整顺序?直接剪切粘贴整行即可,例如把 ai_analysis 移到最前面:
# region_order:
# - ai_analysis ← 移到第一行AI 分析就会显示在最顶部
# - new_items
# - hotlist
# - ...
# 注意:区域需同时满足两个条件才会显示:
# 1. 在此列表中
# 2. 下方 regions 中对应开关为 true
region_order:
- new_items # 1⃣ 新增热点区域
- hotlist # 2⃣ 热榜区域(关键词匹配)
- rss # 3⃣ RSS 订阅区域
- standalone # 4⃣ 独立展示区
- ai_analysis # 5⃣ AI 分析区域
# 推送区域开关
# 控制各区域是否启用(配合 region_order 使用)
regions:
hotlist: true # 热榜区域(关键词匹配的热点新闻)
new_items: false # 新增热点区域(含热榜新增 + RSS 新增)
# 注:热点词汇统计中的新增标记🆕不受此配置影响
rss: true # RSS 订阅区域
# 开启后将对 RSS 进行关键词分析并在通知中展示
# 关闭后跳过分析,但独立展示区不受影响
standalone: false # 独立展示区(完整热榜/RSS不受关键词过滤
ai_analysis: true # AI 分析区域
# 📋 独立展示区配置
# 用途:将指定平台的完整热榜/RSS 数据独立提取,不受关键词过滤影响
# 两个独立用途:
# - 推送展示:由 regions.standalone 开关控制,在推送中单独展示完整热榜
# - AI 分析:由 ai.include_standalone 开关控制,将完整数据送入 AI 做深度分析
# 两者共享此处的平台/RSS 配置,但开关互相独立(可只开 AI 分析、不推送展示)
standalone:
platforms: ["zhihu", "wallstreetcn-hot"] # 热榜平台 ID 列表(如 ["zhihu", "weibo"]
rss_feeds: [] # RSS 源 ID 列表(如 ["hacker-news"]
max_items: 20 # 每个源最多展示条数0=不限制)
# ===============================================================
# 6. 推送通知
#
# ⚠️ 重要安全警告 ⚠️
#
# 🔴 请务必妥善保管好 webhooks不要公开!!!
# 🔴 如果你以 fork 的方式部署在 GitHub 上,请勿在此填写
# 🔴 而是将 webhooks 填入 GitHub Secrets
# (Settings → Secrets and variables → Actions)
# 🔴 否则:
# - 轻则:手机上收到大量垃圾广告推送
# - 重则webhook 被滥用造成严重安全隐患
#
# 📌 多账号支持说明
#
# • 使用分号(;)分隔多个账号,如:"url1;url2;url3"
# • 需要配对的配置(如 Telegram 的 token 和 chat_id数量必须一致
# • 每个渠道最多支持 max_accounts_per_channel 个账号
# • 邮箱已支持多收件人(逗号分隔)
# ===============================================================
notification:
enabled: true # 是否启用通知功能(总开关)
# ⚠️ 开启调度系统后,此项仍为总开关:
# false → 永远不推送(无论调度怎么设置)
# true → 由调度的 push 字段控制何时推送
# 推送渠道配置
channels:
feishu:
webhook_url: "" # 飞书机器人 webhook URL
dingtalk:
webhook_url: "" # 钉钉机器人 webhook URL
wework:
webhook_url: "" # 企业微信机器人 webhook URL
msg_type: "markdown" # 消息类型markdown(群机器人) | text(个人微信应用)
telegram:
bot_token: "" # Telegram Bot Token
chat_id: "" # Telegram Chat ID
email:
from: "" # 发件人邮箱地址
password: "" # 发件人邮箱密码或授权码
to: "" # 收件人邮箱,多个用逗号分隔
smtp_server: "" # SMTP 服务器(可选,留空自动识别)
smtp_port: "" # SMTP 端口(可选,留空自动识别)
ntfy:
server_url: "https://ntfy.sh" # ntfy 服务器地址(可改为自托管)
topic: "" # ntfy 主题名称
token: "" # ntfy 访问令牌(可选,用于私有主题)
bark:
url: "" # Bark 推送 URL格式https://api.day.app/your_device_key
slack:
webhook_url: "" # Slack Incoming Webhook URL
generic_webhook:
webhook_url: "" # 通用 Webhook URL支持 Discord、Matrix、IFTTT 等)
payload_template: "" # JSON 模板,支持 {title} 和 {content} 占位符
# 示例:{"content": "{content}"}
# 留空则使用默认格式:{"title": "{title}", "content": "{content}"}
# ===============================================================
# 7. 存储配置
# ===============================================================
storage:
# 存储后端选择
# - auto: 自动选择GitHub Actions 且配置了远程存储 → remote否则 → local
# - local: 本地 SQLite + TXT/HTML 文件
# - remote: 远程云存储S3 兼容协议,支持 R2/OSS/COS 等)
backend: "auto"
# 数据格式选项
formats:
sqlite: true # 主存储(必须启用)
txt: false # 是否生成 TXT 快照
html: true # 是否生成 HTML 报告(⚠️ 邮件推送或者需要看网页版报告必须设为 true
# 本地存储配置
local:
data_dir: "output" # 数据目录
retention_days: 0 # 保留天数0=永久保留)
# 远程存储配置S3 兼容协议)
# 支持: Cloudflare R2, 阿里云 OSS, 腾讯云 COS, AWS S3, MinIO 等
# 建议将敏感信息配置在 GitHub Secrets 或环境变量中
remote:
retention_days: 0 # 保留天数0=永久保留)
# S3 兼容配置(或使用环境变量 S3_ENDPOINT_URL 等)
endpoint_url: "" # 服务端点
# Cloudflare R2: https://<account_id>.r2.cloudflarestorage.com
# 阿里云 OSS: https://oss-cn-hangzhou.aliyuncs.com
# 腾讯云 COS: https://cos.ap-guangzhou.myqcloud.com
bucket_name: "" # 存储桶名称
access_key_id: "" # 访问密钥 ID
secret_access_key: "" # 访问密钥
region: "" # 区域(可选,部分服务商需要)
# 数据拉取配置(从远程同步到本地)
# 用于 MCP Server 等场景爬虫存到远程MCP 拉取到本地分析
pull:
enabled: false # 是否启用启动时自动拉取
days: 7 # 拉取最近 N 天的数据
# ===============================================================
# 8. AI 模型配置(共享)
#
# ai_analysis 和 ai_translation 共用此模型配置
# 基于 LiteLLM 统一接口,支持 100+ AI 提供商
# ===============================================================
ai:
# LiteLLM 模型格式: provider/model_name
# 示例:
# - deepseek/deepseek-chat (DeepSeek)
# - openai/gpt-4o (OpenAI)
# - gemini/gemini-2.5-flash (Google Gemini)
# - anthropic/claude-3-5-sonnet (Anthropic)
# - ollama/llama3 (本地 Ollama)
# 完整列表: https://docs.litellm.ai/docs/providers
# 如果你对于看英文文档比较头疼,那么可以点击页面右下角的 【Ask AI】 ,用中文询问怎么配置
model: "deepseek/deepseek-chat"
api_key: "" # API Key建议使用环境变量 AI_API_KEY
api_base: "" # 自定义 API 端点(可选,大多数情况留空)
# 示例: https://api.openai.com/v1自建代理或兼容接口
#
# 💡 超级重要:连接任意兼容 OpenAI 协议的模型商
# 如果你使用的模型商不在上述支持列表中,但提供了兼容 OpenAI 的接口:
#
# 1. api_base 填写: 服务商提供的接口地址
# 例如: https://api.example.com/v1
#
# 2. model 填写: "openai/" + 实际模型名称
# 例如: openai/deepseek-ai/DeepSeek-V3
# (原理:前缀 openai/ 强制 LiteLLM 使用 OpenAI 协议格式进行通信)
timeout: 120 # 请求超时(秒)
temperature: 1.0 # 采样温度 (0.0-2.0)
# 注意:部分模型(如 gpt-5)可能要求必须为 1.0,否则会报错
max_tokens: 5000 # 最大生成 token 数
# 注意:如果 API 不支持此参数(报 HTTP 400),请设为 0 以禁用发送
# 高级选项
num_retries: 1 # 失败重试次数
fallback_models: [] # 备用模型列表(可选)
# 示例: ["openai/gpt-4o-mini", "openai/deepseek-ai/DeepSeek-V3"]
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# 额外参数 (高级选项,一般无需修改)
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# LiteLLM 会自动将通用参数转换为各提供商格式,无需手动适配。
# 仅在需要传递特殊参数时启用此项。
#
# 提示:你可以根据模型 API 文档自行添加任何支持的字段。
# 操作:如需启用,请删掉该行最前方的 "# "(井号和空格)。
# 注意:如果这几行都带着井号,则代表不使用额外参数(推荐做法)。
# -------------------------------------------------------------
# extra_params:
# top_p: 1.0 # 核采样(通用)
# presence_penalty: 0.0 # 话题多样性OpenAI/DeepSeek
# stop: ["END"] # 停止词列表(通用)
# ===============================================================
# 9. AI 分析功能
#
# 使用 AI 大模型对推送内容进行深度分析
# 模型配置见上方 ai 配置段
# ===============================================================
ai_analysis:
enabled: true # 是否启用 AI 分析(总开关)
# ⚠️ 开启调度系统后,此项仍为总开关:
# false → 永远不分析(无论调度怎么设置)
# true → 由调度的 analyze 字段控制何时分析
# 分析报告输出语言
# 格式:自然语言描述
# 示例: "English", "Korean", "法语"
language: "Chinese"
# 提示词配置文件路径(相对于 config 目录)
prompt_file: "ai_analysis_prompt.txt"
# AI 分析模式(独立于推送报告模式)
# 可选值:
# - "follow_report": 跟随 report.mode 的设置(默认)
# - "daily": 强制使用当日汇总模式(分析当天所有新闻)
# - "current": 强制使用当前榜单模式(只分析当前在榜新闻)
# - "incremental": 强制使用增量模式(只分析新增新闻)
#
# 使用场景:
# - 推送 incremental避免重复AI 分析 current看当前榜单变化
# - 推送 current实时热点AI 分析 daily全天总结
#
mode: "follow_report"
# 分析内容配置
max_news_for_analysis: 150 # 热榜+RSS 合计参与分析的新闻数量上限(控制成本关键项)
# 热榜优先占用配额RSS 使用剩余配额;独立展示区不受此限制
# 推送消息顶部会显示实际的 AI 分析数供参考
# api 成本估算 (仅供参考)
# 按默认模型(deepseek)
# max_news_for_analysis 为 【50】 条
# include_rank_timeline 为 【false】
# 则
# GitHub Action 部署默认推送约 20 次(每小时推送一次), 约 0.1 元/天
# Docker 部署默认推送 48 次(每半小时推送一次) 约 0.2 元/天
include_rss: false # 是否包含 RSS 内容进行分析
include_standalone: true # 是否将独立展示区数据纳入 AI 分析(只需上方 display 区的 standalone 配置了平台/RSS 即可)
include_rank_timeline: true # 是否传递完整排名时间线
# false: 使用简化格式(排名范围+时间范围+出现次数)
# true: 传递完整排名变化轨迹(如 1(09:30)→2(10:00)→0(11:00)
# 启用后 AI 能更精确分析热度趋势,但会额外增加 token 消耗0.5 倍到 1 倍)
# ===============================================================
# 10. AI 翻译功能
#
# 对推送内容进行多语言翻译,不包含 ai_analysis 分析的内容
# 模型配置见上方 ai 配置段
# ===============================================================
ai_translation:
enabled: false # 是否启用翻译功能
# 翻译目标语言
# 格式:自然语言描述
# 示例: "Chinese", "Korean", "法语"
language: "中文"
# 提示词配置文件路径(相对于 config 目录)
prompt_file: "ai_translation_prompt.txt"
# ===============================================================
# 11. 高级设置(一般无需修改)
# ===============================================================
advanced:
# 调试模式
debug: false
# 版本检查
version_check_url: "https://raw.githubusercontent.com/sansan0/TrendRadar/refs/heads/master/version"
mcp_version_check_url: "https://raw.githubusercontent.com/sansan0/TrendRadar/refs/heads/master/version_mcp"
configs_version_check_url: "https://raw.githubusercontent.com/sansan0/TrendRadar/refs/heads/master/version_configs"
# 热榜爬虫技术参数
crawler:
request_interval: 2000 # 请求间隔(毫秒)
use_proxy: false # 是否启用代理
default_proxy: "http://127.0.0.1:10801"
# RSS 设置
rss:
request_interval: 1000 # 请求间隔(毫秒)
timeout: 15 # 请求超时(秒)
use_proxy: false # 是否使用代理
proxy_url: "" # RSS 专属代理(留空则使用 crawler.default_proxy
# 排序权重(用于重新排序不同平台的热搜)
# 合起来等于 1
weight:
rank: 0.6 # 排名权重
frequency: 0.3 # 频次权重
hotness: 0.1 # 热度权重
# 多账号限制
max_accounts_per_channel: 3 # 每个渠道最大账号数量
# 消息分批大小(字节)- 内部配置,请勿修改
batch_size:
default: 4000
dingtalk: 20000
feishu: 30000
bark: 4000
slack: 4000
batch_send_interval: 3 # 批次发送间隔(秒)
feishu_message_separator: "━━━━━━━━━━━━━━━━"