# ============================================ # 环境变量配置示例 # 复制此文件为 .env 并填入你的真实 Token # ============================================ # # 变量生效范围: # .env → 本地 dev server (pnpm dev) + source .env 发布时的 shell 环境 # wrangler.jsonc vars → 线上 Cloudflare Worker 运行时 (自动注入 process.env) # # 两处都有的变量 (AI_*, TELEGRAM_*) 各管各的环境,需保持同步。 # 仅构建/部署时需要的变量 (CLOUDFLARE_API_TOKEN, GA4_*, TWITTER_*) 只在 .env 配置。 # ============================================ # -------------------------------------------- # 站点配置 (可选) # -------------------------------------------- # 网站完整 URL,用于 SSR 时构建内部 API 请求地址 # 本地开发默认 http://localhost:3000,生产环境自动识别 # NEXT_PUBLIC_SITE_URL=https://luolei.org # -------------------------------------------- # 开发服务器配置 (可选) # -------------------------------------------- # 自定义开发服务器端口(默认 3000) # PORT=3000 # 仅扫描端口可用性,不启动服务(用于 CI 检测) # PORT_SCAN_ONLY=0 # -------------------------------------------- # Twitter API (用于获取推文数据,仅构建时) # -------------------------------------------- # 获取方式: # 1. 访问 https://developer.twitter.com/en/portal/dashboard # 2. 创建应用或选择现有应用 # 3. 在 "Keys and Tokens" 页面生成 Bearer Token # 4. 复制以 "AAAAAAAAAAAAAAAAAAAAA..." 开头的 Token TWITTER_BEARER_TOKEN=AAAAAAAAAAAAAAAAAAAAA... # -------------------------------------------- # Cloudflare API (仅部署时,source .env 后使用) # -------------------------------------------- # 获取方式: # 1. 访问 https://dash.cloudflare.com/profile/api-tokens # 2. 点击 "Create Token" # 3. 使用模板 "Edit Cloudflare Workers" # 4. 选择你的账户和区域 # 5. 生成并复制 Token CLOUDFLARE_API_TOKEN=your_cloudflare_api_token_here # -------------------------------------------- # Google Analytics 4 (用于构建时获取文章阅读量,仅构建时) # -------------------------------------------- GA4_PROPERTY_ID=your_ga4_property_id GA4_CLIENT_EMAIL=your_service_account@project.iam.gserviceaccount.com # 私钥(单行格式,使用 \n 分隔) GA4_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" # ============================================ # AI 配置 (文章摘要、SEO 优化、首页 AI 对话) # ============================================ # 支持任何 OpenAI 兼容 API(阿里云千问、豆包、DeepSeek、OpenAI、Gemini 等) # 同时用于离线批处理(ai:process)和在线对话(/api/chat 流式响应) # # ⚠️ 同时需在 wrangler.jsonc vars 中配置相同值,线上 Worker 从 vars 读取 # # 阿里云千问示例: # AI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 # AI_MODEL=qwen3.7-plus # # DeepSeek 示例: # AI_BASE_URL=https://api.deepseek.com/v1 # AI_MODEL=deepseek-v4-pro # # OpenAI 示例: # AI_BASE_URL=https://api.openai.com/v1 # AI_MODEL=gpt-5.5 # # Google Gemini 示例: # AI_BASE_URL=https://generativelanguage.googleapis.com/v1beta/openai # AI_MODEL=gemini-3-flash-preview # # 使用方法: # pnpm ai:process 处理所有文章(离线批处理) # pnpm ai:process --force 强制重新处理 # pnpm ai:process --slug=xxx 处理指定文章 # pnpm ai:process --dry-run 预览模式 # # pnpm ai:profile 生成 About 页面作者画像(优先使用 AI) # pnpm ai:profile --no-ai 使用规则模板生成(离线兜底) AI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 AI_API_KEY=your_ai_api_key_here AI_MODEL=gpt-5.5 # Chat Prompt 版本与上下文控制 # v1: 旧版单体 prompt # v2: 分层 prompt(Core Identity + Core Rules + Runtime Context) # CHAT_PROMPT_VERSION=v1 # # v2 运行时控制项(可选) # MAX_EXPERIENCE_LINES=6 # MAX_SOCIAL_LINKS=4 # MAX_HIGHLIGHTS=3 # MAX_ARTICLES_IN_PROMPT=8 # MAX_TWEETS_IN_PROMPT=6 # ENABLE_INTENT_RANKING=true # SENSITIVE_HIGHLIGHT_PATTERNS=pet parent,铲屎官,猫,狗,cat,dog # # 检索召回控制(可选) # ARTICLE_SEARCH_LIMIT=12 # ARTICLE_SEARCH_LIMIT_BROAD=24 # TWEET_SEARCH_LIMIT=8 # TWEET_SEARCH_LIMIT_BROAD=18 # SEARCH_TERM_BROAD_QUERY_MAX=2 # SEARCH_RELATIVE_SCORE_THRESHOLD=0.35 # SEARCH_MIN_ABSOLUTE_SCORE=2 # SEARCH_ANCHOR_TERM_MAX=2 # SEARCH_MIN_ANCHOR_TERM_LENGTH=2 # ENABLE_FIRST_TURN_KEYWORD_EXTRACTION=true # ============================================ # Umami Analytics (用于文章阅读量统计) # ============================================ # Umami 是自托管的隐私友好型统计工具 # # 获取 API Token: # 1. 访问 https://u.is26.com # 2. 登录后点击右上角头像 > Settings # 3. 左侧菜单 > API Keys # 4. 点击 Create API Key,选择 View 权限 # 5. 复制生成的 Token # Umami API 地址(可选,默认 https://u.is26.com/api) # UMAMI_API_URL=https://u.is26.com/api # Umami Website ID(可选,默认已配置) # UMAMI_WEBSITE_ID=185ef031-29b2-49e3-bc50-1c9f80b4e831 # Umami 追踪脚本地址(可选,默认 https://u.is26.com/script.js) # UMAMI_SCRIPT_URL=https://u.is26.com/script.js # Umami API Token(本地开发必填,用于获取统计数据) UMAMI_API_TOKEN=your_api_token_here # ============================================ # Telegram 对话监控 (可选) # ============================================ # 用于将博客 AI 对话推送到 Telegram,实时监控读者互动 # # ⚠️ 同时需在 wrangler.jsonc vars 中配置相同值 # # 配置步骤: # 1. 通过 @BotFather 创建 Bot,获取 Token # 2. 给 Bot 发送任意消息 # 3. 访问 https://api.telegram.org/bot/getUpdates # 在返回的 JSON 中找到 result[0].message.chat.id 即为 CHAT_ID TELEGRAM_BOT_TOKEN=your_telegram_bot_token_here TELEGRAM_CHAT_ID=your_telegram_chat_id_here # ============================================ # Cloudflare Turnstile (AI 聊天人机验证) # ============================================ # 用于 /api/chat 接口的人机验证,隐式模式,用户无感 # # ⚠️ 同时需在 wrangler.jsonc vars 中配置相同值 # # 获取方式: # 1. 访问 https://dash.cloudflare.com → Turnstile # 2. 添加站点,选择 Managed 模式 # 3. 复制 Site Key 和 Secret Key TURNSTILE_SITE_KEY=your_turnstile_site_key_here TURNSTILE_SECRET_KEY=your_turnstile_secret_key_here # ============================================ # AI Chat Rate Limit (本地开发可选) # ============================================ # 生产环境默认开启,开发环境默认关闭。 # 如需在本地显式开启,可设为 true。 # CHAT_RATE_LIMIT_ENABLED=false # # 如需调整阈值,可按需覆盖: # CHAT_RATE_LIMIT_BURST_MAX=3 # CHAT_RATE_LIMIT_BURST_WINDOW_MS=10000 # CHAT_RATE_LIMIT_SUSTAINED_MAX=20 # CHAT_RATE_LIMIT_SUSTAINED_WINDOW_MS=60000 # CHAT_RATE_LIMIT_DAILY_MAX=100 # CHAT_RATE_LIMIT_DAILY_WINDOW_MS=86400000 # ============================================ # 使用说明 # ============================================ # # 本地开发: # pnpm dev # # 部署到 Cloudflare Workers: # source .env && pnpm deploy:vinext # # ============================================ # ⚠️ 安全提醒 # ============================================ # - 永远不要将 .env 文件提交到 Git # - .env 已添加到 .gitignore # - 定期轮换你的 API Token