环境变量参考
以下配置来自项目的 .env.example、配置加载器和校验 Schema。表中的示例值以仓库自带 .env.example 为准。
服务与 HTTP
| 变量 | 示例值 | 说明 |
|---|---|---|
PORT | 6689 | HTTP 服务监听端口 |
HOST | 0.0.0.0 | HTTP 服务监听地址。默认监听所有网卡;只给本机或反向代理使用时设 127.0.0.1。CLI 的 --host 优先级高于本变量 |
ALLOWED_DOMAIN | * | CORS 允许的 Origin |
REQUEST_TIMEOUT | 6000 | 上游 HTTP 请求超时,单位毫秒 |
RSS_MODE | false | 是否让热榜接口默认返回 RSS |
缓存与数据库
| 变量 | 示例值 | 说明 |
|---|---|---|
REDIS_HOST | 127.0.0.1 | Redis 主机 |
REDIS_PORT | 6379 | Redis 端口 |
REDIS_PASSWORD | 空 | Redis 密码 |
CACHE_TTL | 3600 | 热榜缓存时间,单位秒 |
MONGODB_URI | mongodb://localhost:27017/daily-hot-api | MongoDB 连接字符串。NODE_ENV=production 时必填,缺失会启动失败;Docker 镜像和 ecosystem.config.cjs 都设置了 NODE_ENV=production |
Redis 使用延迟连接,连接失败时不会阻止进程启动。历史热点和每日简报依赖 MongoDB 持久化。
热榜抓取与调度
| 变量 | 示例值 | 说明 |
|---|---|---|
NOT_ALLOWED_REFRESH_SOURCE | github,bilibili | 禁止客户端使用 noCache=true 强刷的来源 |
IGNORE_SAVE_SOURCES | v2ex,... | 不写入历史数据库的来源,逗号分隔 |
SCHEDULER_AUTO_START | false | 启动应用时是否自动启动热点调度器 |
SCHEDULER_CRON_EXPRESSION | 0 */12 * * * | 热点调度 Cron 表达式 |
每日简报
| 变量 | 示例值 | 说明 |
|---|---|---|
BRIEF_ENABLED | false | 启动应用时是否启用简报调度 |
BRIEF_CRON_EXPRESSION | 0 12 * * * | 简报生成 Cron 表达式 |
BRIEF_TIMEZONE | Asia/Shanghai | 简报日期和 Cron 时区 |
BRIEF_SOURCES | cls,yicai,... | 参与简报的热榜来源,需在 source_configs 中处于启用状态 |
BRIEF_LOOKBACK_HOURS | 24 | 历史热点回看窗口,单位小时 |
BRIEF_TOP_ITEMS_PER_SOURCE | 10 | 每个来源最多参与分析的条目数 |
BRIEF_MAX_TOPICS | 12 | 最多搜索增强的候选主题数,取值 1–12,上限由提示词预算决定 |
BRIEF_STOCK_RANKING_CACHE_TTL | 43200 | 股票历史排名缓存秒数 |
BRIEF_GENERATING_TIMEOUT_MINUTES | 30 | 生成尝试的过期阈值,单位分钟 |
BRIEF_SOURCE_CONCURRENCY | 3 | 简报刷新源的最大并发数 |
BRIEF_SEARCH_CONCURRENCY | 3 | 搜索增强的最大并发数 |
BRIEF_SEARCH_PROVIDERS | tavily,deepseek | 搜索平台优先级,逗号分隔;可选 tavily、deepseek,留空关闭搜索增强 |
AI 与搜索服务
| 变量 | 示例值 | 说明 |
|---|---|---|
OPENAI_API_KEY | skxxx | OpenAI SDK 兼容服务的密钥 |
OPENAI_API_BASE_URL | https://api.deepseek.com | OpenAI 兼容 API Base URL |
AI_MODEL | deepseek-v4-flash | 简报生成模型名 |
TAVILY_API_KEY | tvly-dev-xxx | Tavily Search API Key |
TAVILY_MAX_RESULTS | 5 | 每个搜索请求最多结果数 |
AI_TIMEOUT_MS | 120000 | 单次 AI 请求超时,单位毫秒 |
AI_MAX_RETRIES | 2 | AI 客户端重试次数 |
TAVILY_TIMEOUT_MS | 10000 | 单次 Tavily 请求超时,单位毫秒 |
DEEPSEEK_SEARCH_API_KEY | 空 | DeepSeek Search API Key;可使用与 DeepSeek 模型相同的 Key,需单独配置 |
DEEPSEEK_SEARCH_MAX_RESULTS | 5 | 单次 DeepSeek 搜索结果数,取值 1–50 |
DEEPSEEK_SEARCH_TIMEOUT_MS | 10000 | 单次 DeepSeek 搜索超时,单位毫秒 |
密钥安全
不要提交真实 API Key,也不要在日志、Issue、构建产物或前端代码中暴露密钥。GitHub Pages 只托管静态文档,不应注入任何服务端密钥。
CLI 专用变量
以下变量只由 daily-hot-api 命令行工具读取,不参与应用配置校验:
| 变量 | 示例值 | 说明 |
|---|---|---|
DAILY_HOT_API_HOME | ~/.daily-hot-api | CLI 状态目录,保存运行状态和后台日志 |
DAILY_HOT_API_ENV_FILE | /etc/daily-hot-api/prod.env | 显式指定 CLI 加载的 .env 文件,等价于 --config |
PORT 同时被 CLI 和服务读取:CLI 用它在启动前检查端口占用,服务用它监听。CLI 默认读取当前工作目录的 .env,因此从哪个目录执行 daily-hot-api 会影响加载的配置。详见命令行工具。
修改配置
默认值和校验规则只定义在 src/config/validation.schema.ts。configuration.ts 从这张 Schema 读取运行时配置。新增环境变量时同步修改:
src/config/validation.schema.ts.env.example- 本页对应配置表