# daily-robots > **Daily Briefing** · **WeCom Push** · **Agent Mode** 给 AI 工程小团队推送**每日 curated 情报**:skills.sh 榜单、GitHub AI 趋势、国际/国内 RSS,生成叙事化早报并推到企业微信群。 与 TLDR AI / Ben's Bites 不同,这里专注 **Agent Skills 生态** + **可 fork 的自托管流水线**(不是又一个 email newsletter)。 **产出示例**:[docs/sample-output/wecom-agent-sample.md](docs/sample-output/wecom-agent-sample.md)(Agent 模式企微版节选) --- ## Quick Start 1. **Clone** 本仓库 2. **安装依赖**:`pip install -r requirements.txt` 3. **配置环境**:`copy .env.example .env` 4. **填写 webhook**:企微群 → 群机器人 → 添加 → 把 `key=` 写入 `.env` ```env WECOM_WEBHOOK_KEY=your-webhook-key ``` 5. **生成并推送**:`.\run-daily.ps1` 生成文件在 `output/`: | 文件 | 说明 | |------|------| | `YYYY-MM-DD.wecom.md` | 企微推送版(主产物) | | `YYYY-MM-DD.md` | 完整归档版 | | `YYYY-MM-DD.data.json` | 结构化数据(供 LLM / 调试) | 常用变体: ```powershell .\run-daily.ps1 -SkipPush # 只生成 python -m daily push output\2026-07-03.wecom.md # 只推送 ``` Linux / macOS / CI 等价脚本: ```bash chmod +x run-daily.sh ./run-daily.sh # 生成 + 推送 ./run-daily.sh --skip-push # 只生成 ./run-daily.sh --force # 忽略 30 分钟内重复运行锁 ``` **前置条件**:Python 3.10+、企业微信群机器人 webhook。无需 Bot API 凭证。 --- ## 部署(GitHub Actions / Docker) ### GitHub Actions(零服务器定时推送) 仓库已包含 [`.github/workflows/daily.yml`](.github/workflows/daily.yml),默认每天 **08:30(北京时间)** 生成并推送。 1. Fork 或启用本仓库的 Actions 2. **Settings → Secrets and variables → Actions** 添加 Secrets: | Secret | 必需 | 说明 | |--------|------|------| | `WECOM_WEBHOOK_KEY` | 是 | 企微群机器人 webhook key | | `GH_PAT` | 否 | 个人 GitHub PAT(提高 API 限额;不设则用 Actions 内置 token) | | `CURSOR_API_KEY` | 否 | Agent 模式(Cursor SDK) | | `DAILY_LLM_API_KEY` | 否 | Agent / 编辑层(OpenAI 兼容 API) | 3. 可选 **Variables**(不设则用代码默认值):`DAILY_REPORT_MODE`、`DAILY_LLM_MODEL`、`DAILY_AI_NEWS` 等 4. **Actions → daily → Run workflow** 可手动触发;勾选 *Skip WeCom push* 则只生成不上报 运行产物可在 workflow 的 **Artifacts** 中下载(`.md` / `.json`,保留 14 天)。 ### Docker ```bash cp .env.example .env # 填入 WECOM_WEBHOOK_KEY 等 docker compose build docker compose run --rm daily # 生成 + 推送 docker compose run --rm daily --skip-push # 只生成 ``` `output/`、`.cache/`、`logs/` 挂载到宿主机,与本地 `run-daily.ps1` 行为一致。 --- ## Agent 模式(推荐) 默认 `classic` 是分区榜单模板;**推荐 Agent 模式**——导语 + 今日信号 + 精选新闻 + 榜单,全中文叙述。 ```env DAILY_REPORT_MODE=agent CURSOR_API_KEY=cursor_... CURSOR_MODEL=composer-2.5 DAILY_CURSOR_CWD=. ``` | 模式 | 环境变量 | 风格 | |------|----------|------| | `classic` | — | 分区榜单 + 模板 | | `editor` | `DAILY_CURSOR_EDITOR=1` | 模板 + LLM 中文化 | | **`agent`** | `DAILY_REPORT_MODE=agent` | **叙事化早报(推荐)** | 流水线: ``` Python 抓取 → Step1 趋势分析 (.trends.json) → Step2 写企微稿 (.wecom.md) → webhook 分条推送 ``` - 规范见 `skills/daily-agent/SKILL.md` - LLM 失败自动回退 `classic`,不影响 `run-daily.ps1` - 无 `CURSOR_API_KEY` 时请用 `classic`,或配置 `DAILY_LLM_API_KEY`(OpenAI 兼容 API) 定时推送:Windows 任务计划程序每日执行 `run-daily.ps1`,或 cron / `schtasks`。 --- ## 自定义 RSS 源 RSS 源配置在 **`config/feeds.yaml`**(国际 `intl` / 国内 `cn`),改 URL 或增删 feed 后无需改 Python。文件缺失或解析失败时,会回退 `daily/news/feeds_defaults.py` 内置列表。 可选 **`config/sensitive_words.yaml`** + `DAILY_CONTENT_FILTER=1`:标题/摘要命中敏感词则丢弃该条。 旧版硬编码路径(仍可读作参考):`daily/news/feeds_defaults.py` ```env DAILY_AI_NEWS=1 DAILY_CN_AI_NEWS=1 DAILY_AI_NEWS_HOURS=72 DAILY_WECOM_AI_NEWS=10 DAILY_WECOM_CN_AI_NEWS=8 ``` Skills 榜单默认爬 skills.sh 官网(600+ 条);可改为第三方 feed: ```env # SKILLS_BOARD_SOURCE=feed ``` GitHub 新兴/Topic 榜需 `GITHUB_TOKEN`(见 `.env.example` 注释)。 --- ## Experimental:`bot/` 企微对话机器人 同仓库内的 **API 模式智能机器人**(@ 机器人快查 skills、Cursor 任务、Playwright 截图)**不在 v1 开源支持范围内**,需独立 venv 与 `WECOM_BOT_ID` / `SECRET`。 详见 **[bot/README.md](bot/README.md)**。 --- ## 项目结构 ``` daily-robots/ ├── run-daily.ps1 # 生成 + 推送 ├── daily/ # 早报主包 ├── shared/skills_data.py # skills feed 共用数据层 ├── skills/daily-agent/ # Agent 工作流规范 ├── output/ # 生成产物(gitignore) └── bot/ # experimental ``` --- ## 注意事项 - Webhook / API Key **勿提交 Git**,只用 `.env` - 企微 markdown 为子集;超长报告**自动分条推送**(默认 4096 bytes/条) - 完整配置项见 [`.env.example`](.env.example) - 开发测试:`pip install -r requirements-dev.txt` → `pytest`