Skip to content

anotherso1a/daily-report

Repository files navigation

自动化日报收集系统

基于Node.js 22+的自动化新闻收集与分析系统,通过GitHub Actions定时收集新闻并生成中文日报。

功能特性

  • 📰 多源新闻收集:集成NewsAPI、HackerNews和天行数据
  • 🤖 AI智能分析:使用Google Gemini API自动生成摘要和分类
  • 📧 多渠道推送:支持邮件(QQ邮箱)和飞书机器人推送
  • 📝 多格式输出:生成Markdown和JSON格式的报告
  • 自动化运行:通过GitHub Actions定时执行
  • 🔍 智能去重:自动识别和去除重复新闻
  • 🎯 关键词过滤:自定义关键词搜索和相关性分析

技术栈

  • 运行时:Node.js 22+ ESM
  • 开发语言:TypeScript
  • 测试框架:Vitest
  • 代码质量:ESLint + Prettier
  • AI分析:Google Gemini API
  • 发送邮件:Nodemailer(支持QQ邮箱)

快速开始

1. 配置环境变量

在GitHub仓库的Secrets中添加以下环境变量:

# 必需
NEWS_API_KEY=your_newsapi_key
TIAN_API_KEY=your_tianapi_key
GEMINI_API_KEY=your_gemini_key

# 推送配置(可选)
QQ_EMAIL_ENABLED=true
QQ_EMAIL_CONFIG=smtp.qq.com:465:your_qq@qq.com:password
FEISHU_WEBHOOK_ENABLED=true
FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx

2. 手动触发运行

进入GitHub仓库的Actions标签页,选择"Daily News Collection"工作流,点击"Run workflow"。

3. 查看结果

  • 报告文件将保存到 reports/ 目录
  • 推送日志可在GitHub Actions的运行日志中查看
  • 推送结果将通过配置的渠道发送

开发指南

本地开发

# 安装依赖
npm install

# 运行测试
npm test

# 构建项目
npm run build

# 运行开发模式
npm run dev

测试

# 运行所有测试
npm test

# 运行指定测试文件
npm test -- tests/unit/EmailService.test.ts

# 生成测试覆盖率报告
npm run test:coverage

配置说明

环境变量 说明 必需 示例
NEWS_API_KEY NewsAPI.org的API密钥 xxx
TIAN_API_KEY 天行数据的API密钥 xxx
GEMINI_API_KEY Google Gemini API密钥 xxx
QUERY_KEYWORDS 查询关键词配置 tech:AI,区块链;business:股市
MAX_ARTICLES 最大收集文章数 20
SCHEDULE_CRON 执行计划 0 8 * * *
OUTPUT_FORMAT 输出格式 markdownjsonboth

推送配置

QQ邮箱配置

  1. 登录QQ邮箱网页版
  2. 进入【设置】→【账户】
  3. 开启【IMAP/SMTP服务】
  4. 获取16位授权码(不是QQ密码)
  5. 设置环境变量:
    QQ_EMAIL_ENABLED=true
    QQ_EMAIL_CONFIG=smtp.qq.com:465:your_qq@qq.com:your_authorization_code

飞书机器人配置

  1. 在飞书中创建自定义机器人
  2. 获取Webhook地址
  3. 设置环境变量:
    FEISHU_WEBHOOK_ENABLED=true
    FEISHU_WEBHOOK_URL=https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxx

项目结构

src/
├── collectors/      # 新闻收集器
├── services/        # 服务层(邮件、飞书、Gemini)
├── generators/      # 报告生成器
├── utils/           # 工具函数
├── prompts/         # AI提示词模板
├── config/          # 配置管理
└── types/           # TypeScript类型定义

tests/               # 测试文件
├── unit/           # 单元测试
└── setup.ts        # 测试配置
.reports/           # 生成的报告文件

任务进度

查看 docs/todo.md 了解详细的开发任务清单。

贡献

欢迎提交Issue和Pull Request来改进这个项目!

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors