Files
justlovemaki 3c6740528e feat(rss): 添加RSS订阅功能并优化日期处理
- 在DEPLOYMENT.md中添加RSS_FEED_URL环境变量配置说明
- 修改日期处理函数,统一使用GMT时区格式
- 实现RSS订阅功能,支持通过Feedly等阅读器订阅
- 优化GitHub API调用的Base64编解码处理
- 更新README展示RSS订阅链接和访问方式
2025-06-15 14:34:24 +08:00

9.3 KiB
Raw Permalink Blame History

项目部署与维护

🏗️ 项目架构

本项目依托 Cloudflare 强大的生态系统,实现了高效、轻量与良好的可扩展性。

各核心组件协同工作,构成了一个从数据输入、处理到输出的完整闭环。

  • ☁️ Cloudflare Workers: 作为项目的核心执行环境,负责处理所有 HTTP 请求、调度任务、调用外部 API 以及执行 AI 内容生成逻辑。
  • 🗄️ Cloudflare KV: 作为项目的持久化存储,用于保存配置信息、缓存数据以及每日生成的报告内容,提供了低延迟的键值对存储能力。
  • 🔌 外部 API 整合:
    • AI 模型 API: 集成 Google Gemini 和 OpenAI 兼容 API为内容摘要和再创作提供强大的 AI 支持。
    • 内容源 API:
      • Folo API: 默认的信息聚合来源,可灵活配置抓取不同的 Folo 源。
      • GitHub Trending API: 获取 GitHub 每日热门项目,追踪开源趋势。
    • 发布渠道 API:
      • GitHub API: 用于将处理好的内容自动推送到指定的 GitHub 仓库。
  • 🛠️ Wrangler: Cloudflare官方的命令行工具用于项目的本地开发、环境配置和一键部署。

🚀 快速开始

1. 准备工作

首先,请确保您的开发环境中已安装 Node.js 和 npm。

  • 安装 Wrangler CLI:

    npm install -g wrangler
    或
    npm install -g @cloudflare/wrangler
    
  • 克隆项目代码:

    git clone https://github.com/justlovemaki/CloudFlare-AI-Insight-Daily.git
    cd CloudFlare-AI-Insight-Daily
    

2. 配置环境变量

项目的核心配置均在 wrangler.toml 文件中完成。请根据您的需求修改 [vars] 部分的配置。

注意:使用 ** 标记的为 必填项

# wrangler.toml

# 项目名称
name = "ai-insight-daily" 
# Worker 入口文件
main = "src/index.js" 
# 兼容性日期
compatibility_date = "2024-05-20"
# 在开发模式下是否启用 Worker设置为 true 可以在 workers.dev 子域上预览。
workers_dev = true

[vars]
# ========================
# 基础功能配置
# ========================
**LOGIN_USERNAME** = "your_login_username"
**LOGIN_PASSWORD** = "your_login_password"
DAILY_TITLE = "AI洞察日报"
PODCAST_TITLE = "来生小酒馆"
PODCAST_BEGIN = "嘿亲爱的V欢迎收听新一期的来生情报站我是你们的老朋友何夕2077"
PODCAST_END = "今天的情报就到这里,注意隐蔽,赶紧撤离"

# ========================
# AI 模型配置
# ========================
# 可选值: "GEMINI" 或 "OPEN"
**USE_MODEL_PLATFORM** = "GEMINI" 
OPEN_TRANSLATE = "true"

# Gemini 配置
**GEMINI_API_KEY** = "your_gemini_api_key"
GEMINI_API_URL = "https://generativelanguage.googleapis.com"
DEFAULT_GEMINI_MODEL = "gemini-2.5-flash-preview-05-20"

# OpenAI 兼容 API 配置 (如 DeepSeek)
OPENAI_API_KEY = "your_openai_compatible_key"
OPENAI_API_URL = "https://api.deepseek.com"
DEFAULT_OPEN_MODEL = "deepseek-chat"

# ========================
# GitHub 发布配置
# ========================
**GITHUB_TOKEN** = "your_github_personal_access_token"
**GITHUB_REPO_OWNER** = "your_github_username"
**GITHUB_REPO_NAME** = "your_repo_name"
**GITHUB_BRANCH** = "main"

# ========================
# 内容源配置 (按需配置)
# ========================
# Folo 源
FOLO_COOKIE_KV_KEY = "folo_auth_cookie"
FOLO_DATA_API = "https://api.follow.is/entries"
FOLO_FILTER_DAYS = "1"

# 其他内容源 ID 和抓取页数...
AIBASE_FEED_ID = "......" 
AIBASE_FETCH_PAGES = "2" 
XIAOHU_FEED_ID = "......" 
XIAOHU_FETCH_PAGES = "2" 
HGPAPERS_FEED_ID = "......"
HGPAPERS_FETCH_PAGES = "2" 
TWITTER_LIST_ID = "......"
TWITTER_FETCH_PAGES = "2" 

3. 本地开发与调试

  • 配置 KV 命名空间:

    1. 在 Cloudflare 控制台 > Workers 和 Pages > KV 中创建一个新的 KV 命名空间。
    2. 将创建的 KV ID 添加到 wrangler.toml 文件中:
      kv_namespaces = [
        { 
            binding = "DATA_KV",  # 代码中使用的绑定名称
            id = "your_kv_namespace_id"  # 在 Cloudflare 控制台找到的 ID
        }
      ]
      
  • 启动本地开发服务:

    wrangler dev
    

    该命令会启动一个本地服务器(通常在 http://localhost:8787),您可以直接在浏览器中访问以进行调试。

  • 默认开始路径:

    • 路径:/getContentHtml?date=YYYY-MM-DD (GET)

4. 部署到 Cloudflare

  • 登录 Cloudflare:

    wrangler login
    
  • 一键部署:

    wrangler deploy
    

    部署成功后Wrangler 会返回一个公开的 *.workers.dev 域名,您的 AI 洞察日报服务已在线上运行!

🗓️ 定时生成日报站点 (可选)

方案一:🌐 使用 GitHub Actions 自动部署 (推荐)

此方案利用 GitHub 的免费资源,实现全自动、零成本的日报站点部署,是大多数用户的首选。

📌 前置要求

  • 您的目标 GitHub 仓库已开通 GitHub Actions 功能。
  • 在仓库的 Settings -> Pages 中,选择 GitHub Actions 作为部署源 (Source)。
  • 确保 .github/workflows/ 目录下已包含 build-daily-book.yml 等工作流文件。
部署步骤
  1. 🔧 配置工作流文件

    • 打开 .github/workflows/build-daily-book.yml 文件,找到所有涉及到 book 分支的地方,将其修改为您计划用于存放日报站点的分支名称(例如 gh-pages)。
    • (可选) 修改文件顶部的定时任务时间,以自定义每日执行时间
  2. 🔧 调整mdbook配置文件

    • 打开 book.toml文件,
    • 修改 title 为您的日报站点标题。
    • 修改 git-repository-url 为您的 GitHub 仓库地址。
  3. 💡 (可选) 配置图片代理 如果遇到部署后图片无法显示的问题,可以配置一个图片代理来解决。

    • 在您的 GitHub 仓库页面,进入 Settings -> Secrets and variables -> Actions
    • Variables 标签页,点击 New repository variable
    • 创建一个名为 IMAGE_PROXY_URL 的变量,值为您的代理服务地址,例如 https://your-proxy.com/
    • 创建一个名为 RSS_FEED_URL 的变量,值为您的后端服务地址,例如 https://your-backend.com/rss
  4. 🚀 触发 Action 并验证

    • 手动触发一次 build-daily-book 工作流,或等待其定时自动执行。
    • 任务成功后,稍等片刻,即可通过您的 GitHub Pages 地址访问。
    • 访问地址格式通常为:https://<你的用户名>.github.io/<你的仓库名>/today/book/

方案二:🐳 使用 Docker 进行本地或服务器部署

此方案适合希望将日报站点部署在自己服务器或本地环境的用户,拥有更高的控制权。

部署步骤
  1. 📝 修改配置文件cron-docker 目录下,您需要根据自己的情况修改以下文件:

    • Dockerfile:

      • 修改 GITHUB相关变量 为您自己的 GitHub 仓库地址。
      • (可选) 修改 ENV IMAGE_PROXY_URL 为您的图片代理地址。
      • (可选) 修改第6步的 cron 表达式,以自定义每日执行时间 (默认为 UTC 时间)。
    • 修改默认分支:

      • 打开scripts/build.sh修改第四步git clone -b book "$REPO_URL",调整为你的分支
      • 打开scripts/work/github.sh修改BRANCH="book",调整为你的分支
    • scripts/work/book.toml:

      • 修改 title 为您的日报站点标题。
      • 修改 git-repository-url 为您的 GitHub 仓库地址。
  2. 🛠️ 构建并运行 Docker 容器 在您的终端中执行以下命令:

    # 进入 cron-docker 目录
    cd cron-docker
    
    # 构建 Docker 镜像,并命名为 ai-daily-cron-job
    docker build -t ai-daily-cron-job .
    
    # 在后台以守护进程模式 (-d) 启动容器
    docker run -d --name ai-daily-cron -p 4399:4399 --restart always ai-daily-cron-job
    

    提示-p 4399:80 命令会将容器的 80 端口映射到主机的 4399 端口,您可以根据需要修改主机端口。

  3. 验证部署 打开浏览器,访问 http://127.0.0.1:4399。如果能看到生成的日报站点,则表示本地部署成功。

  4. 🌐 (可选) 配置公网访问 如果您需要让外网也能访问到这个站点,可以将您的服务器端口暴露到公网。推荐使用 Cloudflare Tunnels 等工具,可以安全、便捷地实现内网穿透。

F.A.Q

如何获取 feedIdlistId

  • Folo Feed ID: 登录 Folo.so 后,在浏览器地址栏中找到 feedId获取 Folo Feed ID

  • Twitter List ID: 在 Twitter 上打开您想关注的列表,listId 就在地址栏中。 获取 Twitter List ID

🔑 如何获取 API 密钥?