# MyHOT 的配置。复制成 .env 再改(或者运行 node scripts/init-env.ts,它会生成 .env 并填好随机密钥)。 # 前端只拿到网站地址;所有密钥只在后端。不要把 .env 提交到 Git。 # ===== 必填 ===== # 网站对外的地址:生成的链接、RSS、分享图、MCP 都用它。本机试用就用下面这个。 SITE_URL=http://localhost:3000 # 管理员密码(至少 12 位),登录 /admin 用。 ADMIN_PASSWORD= # 会话签名和图片代理签名的密钥,各填一串随机字符(可以用 openssl rand -hex 32 生成)。 SESSION_SECRET= IMG_PROXY_SIGN_SECRET= # 用 Docker 时数据库的密码(数据库不对外开放端口,也请用随机字符)。 POSTGRES_PASSWORD= # 模型:任何 OpenAI 兼容接口都可以,所有步骤默认都用它。下面是 DeepSeek 的写法。 LLM_BASE_URL=https://api.deepseek.com/v1 LLM_API_KEY= LLM_MODEL=deepseek-flash # 服务商特有的请求参数(JSON),比如关掉思考模式: LLM_EXTRA_JSON={"thinking":{"type":"disabled"}} # 其他服务商的例子: # 千问 LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 LLM_MODEL=qwen3.8-flash LLM_EXTRA_JSON={"enable_thinking":false} # 智谱 LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4 LLM_MODEL=glm-5.3-flash # 模型能看图就打开(精选内容的标题摘要会参考首图): # LLM_VISION=true # 服务不支持 JSON 模式(response_format)时关掉: # LLM_JSON_MODE=false # ===== 选填:让事件归组更准 ===== # 向量召回:任何 OpenAI 兼容的 /embeddings 接口。不填也能跑,只是归组少一路线索。 # EMBEDDING_BASE_URL=https://api.openai.com/v1 # EMBEDDING_API_KEY= # EMBEDDING_MODEL=text-embedding-3-small # 或者只填阿里云百炼的 key,就用 text-embedding-v4: # DASHSCOPE_API_KEY= # ===== 选填:每一步单独换模型 ===== # 默认每一步都用上面的 LLM_*。想让某一步用别家,填预设名(需要对应的 key): # PREFILTER_MODEL SCORE_MODEL UNDERSTAND_MODEL SUMMARIZE_MODEL STRUCTURE_MODEL # GROUP_MODEL GROUP_REVIEW_MODEL DIGEST_MODEL REPORT_MODEL TRANSLATE_MODEL MONITOR_MODEL # 预设名与需要的 key: # deepseek-flash / deepseek-flash-think DEEPSEEK_BASE_URL=https://api.deepseek.com/v1 DEEPSEEK_API_KEY= # qwen3.7-flash / qwen3.8-flash / qwen3-vl-flash DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 DASHSCOPE_API_KEY= # glm-5.3-flash / glm-5.3-flash-selection ZHIPU_BASE_URL=https://open.bigmodel.cn/api/paas/v4 ZHIPU_API_KEY= # mimo-v2.6-flash XIAOMI_MIMO_BASE_URL=https://api.xiaomimimo.com/v1 XIAOMI_MIMO_API_KEY= # AIHOT 自己的分工(供参考): # PREFILTER_MODEL=qwen3.7-flash SCORE_MODEL=glm-5.3-flash-selection UNDERSTAND_MODEL=glm-5.3-flash # SUMMARIZE_MODEL=deepseek-flash STRUCTURE_MODEL=qwen3.8-flash GROUP_MODEL=deepseek-flash # GROUP_REVIEW_MODEL=mimo-v2.6-flash DIGEST_MODEL=deepseek-flash REPORT_MODEL=deepseek-flash # ===== 选填:付费的采集服务(按请求计费,有预算熔断,在后台“设置”里调) ===== # X(推特)账号:SocialData(Codex 重置监控也靠它读 X,不填就不运行) # SOCIALDATA_API_KEY= # 微信公众号:极致了(Dajiala) # DAJIALA_KEY= # 抓不到正文时用浏览器渲染兜底:Jina Reader # JINA_API_KEY= # 读 GitHub 接口类信源时提高配额(只读 token) # GITHUB_TOKEN= # 模型榜里 Artificial Analysis 这一项评测需要它自己的 key # ARTIFICIAL_ANALYSIS_API_KEY= # ===== 选填:飞书 ===== # 精选推送到飞书群:在后台“设置 → 推送目标”里启用,webhook 地址填在这里。 FEISHU_CONTENT_PUSH_ENABLED=false # FEISHU_PUSH_WEBHOOK_URL= # FEISHU_PUSH_MIRROR_WEBHOOK_URL= # 告警、反馈转发到内部飞书群(需要一个飞书自建应用): FEISHU_INTERNAL_ENABLED=false # FEISHU_APP_ID= # FEISHU_APP_SECRET= # FEISHU_INTERNAL_CHAT_ID= # FEISHU_ALERT_CHAT_ID= # 用飞书账号登录后台(可选,和管理员密码并存): # FEISHU_LOGIN_APP_ID= # FEISHU_LOGIN_APP_SECRET= # ADMIN_FEISHU_UNION_IDS= # ADMIN_EMAILS= # ===== 选填:其他 ===== # 外部脚本往站里推送内容(POST /api/ingest/items)用的 token,至少 16 位;不填就关闭这个接口。 # INGEST_TOKEN= # 抓取海外信源要走代理时(比如服务器在中国大陆): # EGRESS_PROXY_URL=http://127.0.0.1:7890 # 前面有 Caddy 或 Nginx 这类反向代理时设为 true,访客地址才从代理的 X-Forwarded-For 里读; # 网站直接对外时保持 false,免得有人伪造地址绕过登录次数和反馈的限制。 TRUST_PROXY=false # MCP 只接受发给 SITE_URL 域名(和 localhost)的请求;还有别的访问域名时,逗号分隔写在这里: # MCP_ALLOWED_HOSTS= # 网站多久没有新内容就算“停止收录”并告警(分钟,默认 360): # ALERT_QUIET_MINUTES=360 # 每天把新页面提交给 IndexNow(Bing 等);key 是 32 位十六进制,自己生成一个: INDEXNOW_SUBMIT_ENABLED=false # INDEXNOW_KEY= # 数据库每天备份到 S3 兼容的对象存储(腾讯云 COS、AWS S3、阿里云 OSS……): # DB_BACKUP_STORE_SECRET_ID= # DB_BACKUP_STORE_SECRET_KEY= # DB_BACKUP_STORE_BUCKET= # DB_BACKUP_STORE_REGION= # DB_BACKUP_STORE_DOMAIN= # ===== 安全阀 ===== # 关掉就不抓信源、不调模型(调试界面时有用)。 COLLECT_ENABLED=true MODEL_CALLS_ENABLED=true # ===== 不用 Docker、直接在本机跑时才需要 ===== # DATABASE_URL=postgres://用户名@127.0.0.1:5432/aihot # API_BASE_URL=http://127.0.0.1:3001 # 开发时免登录进后台(生产环境会拒绝启动): # DEV_AUTH_ROLE=admin # ===== 用 docker compose --profile https 时 ===== # SITE_DOMAIN=example.com