github-trending-digest

SKILL.md 内容

{
  "name": "github-trending-digest",
  "content": "---\nname: github-trending-digest\ndescription: 自动收集 GitHub Trending 热门项目,提炼技术亮点与赚钱潜力,生成 Markdown 日报并推送。首选 GitHub Search API。\ntags: [github, trending, digest, automation]\n---\n\n# GitHub Trending 日报 Skill\n\n> 自动收集 GitHub Trending 热门项目,提炼技术亮点\n\n## 触发词\n- \"GitHub 日报\"\n- \"今日热门项目\"\n- \"GitHub Trending\"\n- \"开源项目推荐\"\n\n## 核心功能\n\n### 1. 数据源\n- **首选 GitHub Search API**(`api.github.com`)模拟 Trending,见 Step 1\n- 语言筛选:Python、JavaScript、Go、Rust、TypeScript\n- 自动去重(已推送过的项目不再推送)\n\n### 2. 信息提炼\n每个项目提取:\n- 项目名称 + 描述\n- Stars 数量 + 今日新增\n- 技术栈(语言、框架)\n- 应用场景(Web、AI、工具等)\n- **赚钱潜力**:⭐⭐⭐⭐⭐ 评分\n- **学习价值**:是否适合学习\n- **商业化机会**:能否做成产品\n\n### 3. 分类标签\n- **AI/机器学习**:LLM、Agent、CV、NLP\n- **Web 开发**:前端、后端、全栈\n- **DevOps/云原生**:Docker、K8s、云平台\n- **工具/效率**:CLI、自动化、生产力\n- **区块链/Web3**:加密货币、DeFi、NFT\n\n## 使用方法\n\n### 快速开始:生成今日日报\n\n```\n生成 GitHub Trending 日报:\n\n语言:Python, JavaScript, Go\n数量:各 5 个\n输出格式:Markdown\n推送到:微信\n```\n\n### 高级用法:筛选特定类型\n\n```\n只推送 AI 相关的热门项目:\n\n关键词:LLM, GPT, Agent, AI\n语言:Python, TypeScript\n时间范围:今日\n```\n\n## 输出格式\n\n### 日报模板\n```markdown\n# GitHub Trending 日报 - YYYY-MM-DD\n\n## 🔥 今日热门(Python)\n\n### 1. [项目名](URL) ⭐ 12.3k (+234 today)\n- **描述**:项目简介\n- **技术栈**:FastAPI, PostgreSQL, Redis\n- **应用场景**:Web API、微服务\n- **赚钱潜力**:⭐⭐⭐⭐ (可做 SaaS)\n- **学习价值**:⭐⭐⭐⭐⭐ (代码质量高)\n- **商业化机会**:可做成 API 服务,按调用收费\n\n### 2. [项目名](URL) ...\n\n## 🚀 本周趋势\n- Python:AI Agent 框架持续火热\n- JavaScript:Next.js 15 发布,性能提升 30%\n- Go:云原生工具增长迅速\n\n## 💡 行动建议\n1. 学习项目 X 的架构设计\n2. 考虑基于项目 Y 做二次开发\n3. 关注技术 Z 的发展趋势\n```\n\n## 统一 Top 10 报告格式(跨语言,推荐)\n\n用户通常要求「按赚钱潜力排序的 Top 10」而非按语言分列。实际运行中验证有效的报告结构:\n\n1. **Top 10 项目**:跨语言统一排名,按 trending_score(money_score × log10(stars_per_day) × recency_bonus)降序,精选时限制 AI/ML 最多 6 个、按 owner 去重、过滤 stars < 500 和空描述\n2. **分类统计表**:各分类项目数 + 占比 + 进度条(`█`/`░` 字符)\n3. **语言分布表**:各语言项目数 + 占比\n4. **商业化机会分析表**:取 money_score 最高的 8 个项目,列出具体商业化路径\n5. **行动建议**:选 2 个项目给出深度学习/快速实践路径\n6. **趋势洞察**:3-5 条跨项目趋势总结\n\n> 详见 `references/github-api-trending.md` 第 5-7 节的 trending_score 公式、Top 10 精选规则和报告生成要点。\n\n## 运行注意事项(通过 Hermes execute_code)\n\n- **状态不跨调用持久化**:`execute_code` 的每次调用是独立 Python 进程,变量不保留。两种方案:(a) 将抓取+处理+报告生成全部放在一个 `execute_code` 块中(推荐,本次实测可行);(b) 用 `pickle` 保存中间结果到 `/tmp/`,下次调用时加载。\n- **预计耗时**:4 语言 × 2 查询 = 8 次 Search API 调用,无 Token 时约 2-3 分钟(含 rate-limit 重试等待)。首次查询可能触发 403,rate_limit_aware_search 会自动等待 ~60s 后重试。\n- **报告保存**:生成后写入 `~/.hermes/output/github_trending_YYYY-MM-DD.md` 和 `github_trending_latest.md`。\n- **微信推送**:作为 cron job 运行时,最终响应自动投递到配置的交付渠道(如 lightclawbot),无需额外推送代码。\n\n## 实现步骤\n\n### Step 1: 抓取 GitHub Trending\n\n> ⚠️ **首选 GitHub Search API,不要依赖网页抓取。** 直接抓取 `github.com/trending` 有两个已知问题:\n> 1. **DOM 选择器易失效**:`article.Box-row` 等选择器随 GitHub 改版频繁失效(实测返回 0 条)。\n> 2. **连通性**:部分环境(含国内服务器)`github.com` 直连超时,但 `api.github.com` 和 `raw.githubusercontent.com` 仍可达。务必先探测可达性再选数据源。\n\n#### 方案 A(首选):GitHub Search API\n\n用 `/search/repositories` 组合两个查询模拟「trending」——一个抓近 7 天有 push 的高星项目,一个抓近 30 天新建的爆款项目,按 id 去重合并:\n\n```python\nimport requests\nfrom datetime import datetime, timedelta\n\nHEADERS = {'Accept': 'application/vnd.github+json', 'User-Agent': 'Mozilla/5.0'}\n\ndef search_repos(language, per_page=20):\n    # 近 7 天有 push 的高星项目(活跃头部)\n    since = (datetime.utcnow() - timedelta(days=7)).strftime('%Y-%m-%d')\n    params = {'q': f'language:{language} pushed:>{since}',\n              'sort': 'stars', 'order': 'desc', 'per_page': per_page}\n    r = requests.get('https://api.github.com/search/repositories',\n                     headers=HEADERS, params=params, timeout=30)\n    return r.json().get('items', [])\n\ndef search_hot_today(language, per_page=15):\n    # 近 30 天新建、stars>50 的上升项目(新爆款)\n    since = (datetime.utcnow() - timedelta(days=30)).strftime('%Y-%m-%d')\n    params = {'q': f'language:{language} created:>{since} stars:>50',\n              'sort': 'stars', 'order': 'desc', 'per_page': per_page}\n    r = requests.get('https://api.github.com/search/repositories',\n                     headers=HEADERS, params=params, timeout=30)\n    return r.json().get('items', [])\n```\n\nAPI 返回的 item 已含 `stargazers_count / forks_count / topics / license / homepage / created_at / pushed_at`,无需二次抓取。注意 Search API 未鉴权时限速较低(约 10 req/min),`sleep(7)` 对 ≤4 次连续查询安全,但 **8+ 次连续查询仍会触发 403/429**(实测 4 语言 × 2 查询 = 8 次,第 5 次即限速)。批量查询前先调 `/rate_limit` 检查 `search.remaining`,不足则等 `reset` 秒数;捕获 403/429 后查 `/rate_limit` 获取剩余秒数再重试。有 Token(30 req/min)时基本不限速。\n\n完整可运行实现(含连通性探测、API 查询、分类、赚钱潜力评分、trending 排序、Markdown 报告生成)见 `references/github-api-trending.md`;一个开箱即用的无 Token 夜间收集器脚本(topic 定向查询 + 翻页 + SQLite 入库 + schema 漂移防护 + 报告生成)见 `scripts/nightly_collector.py`,复制后改 `DB_PATH`/`QUERIES` 即可挂 cron。\n\n### Step 1.1: 查询切分策略(topic 优于 language)\n\n「trending」模拟的查询切分有两个维度:\n\n- **按 language 切**(Step 1 方案):覆盖面广,但商业相关性参差(一个语言下鱼龙混杂)。\n- **按 topic 切**(推荐,`scripts/nightly_collector.py` 用的就是这套):直接用 `topic:llm`、`topic:ai-agent`、`topic:rag`、`topic:saas`、`topic:self-hosted`、`topic:developer-tools` 等高商业化潜力的 topic 做查询,每条查询返回的项目几乎都落在目标赛道。实测 10 个 topic 查询 × `max_pages=2`、`per_page=30`,一次跑出 324 个去重项目、其中近 300 个评到 ≥4⭐,远比纯按 language 切高效。\n\n两者可叠加(如 `topic:cli language:go`)。无 Token 时注意每条查询都会消耗 search 配额(10 req/min),查询数 × max_pages 要控制在配额内。\n\n### Step 2: 提炼关键信息\n- API item 已含 Stars、描述、topics、license、homepage,直接取用\n- 用关键词匹配分类(AI 优先,见 references 里的 CATEGORY_KEYWORDS_ORDERED)\n- 用启发式规则评估赚钱潜力(赛道热度 × 增长速度 × 许可证,见 references 里的 monetization_score)\n\n### Step 3: 生成报告 + 推送\n- 生成 Markdown 格式\n- 推送到微信/邮箱\n\n## 定时任务配置\n\n### 每日推送(推荐)\n```bash\n# 每天 9:00 推送 GitHub Trending 日报\ncronjob create \\\n  --name \"GitHub日报\" \\\n  --schedule \"0 9 * * *\" \\\n  --prompt \"生成 GitHub Trending 日报并推送\" \\\n  --deliver \"weixin\"\n```\n\n### 每周总结\n```bash\n# 每周日 10:00 生成周报\ncronjob create \\\n  --name \"GitHub周报\" \\\n  --schedule \"0 10 * * 0\" \\\n  --prompt \"生成本周 GitHub Trending 总结\" \\\n  --deliver \"weixin\"\n```\n\n## 与赚钱项目收集系统集成\n\n### 联动工作流\n1. GitHub Trending 发现热门开源项目\n2. 分析商业化机会(能做 SaaS?能接外包?)\n3. 自动加入赚钱项目数据库\n4. 每日报告推送\n\n### 示例\n```\n发现热门项目:AI 写作工具(2.3k stars)\n↓\n分析商业化机会:可做 Chrome 插件,订阅制 $9.9/月\n↓\n加入赚钱项目数据库\n↓\n每日报告推送:\"发现高潜力项目:AI 写作工具\"\n```\n\n## 中国用户适配\n\n### 数据源替代方案\n- **首选 GitHub Search API**(`api.github.com`,国内通常可达)—— 见上方 Step 1 方案 A 及 `references/github-api-trending.md`\n- `github.com` 直连超时时,`api.github.com` 和 `raw.githubusercontent.com` 往往仍可达,优先用 API 而非网页抓取\n- 备选:**Gitee Trending**(国内开源平台)\n\n### 推送渠道\n- 企业微信/政务微信\n- 钉钉/飞书\n- 邮箱(QQ、网易)\n\n## 实用建议\n\n1. **关注长期趋势**:不只看今日热门,看本周/本月趋势\n2. **筛选高质量项目**:Stars > 1k,最近有更新\n3. **学习优秀代码**:Star 多的项目代码质量通常较高\n4. **发现商业化机会**:开源项目 = 免费学习 + 商业化灵感\n\n---\n\n生成时间:2026-07-22(修订:8+ 次连续 search 查询 sleep(7) 仍触发 403,新增限速感知搜索模式;修正 Step 1 中过时的 sleep(2) 建议)\n\n2026-07-24 修订:新增「统一 Top 10 报告格式」和「运行注意事项(通过 Hermes execute_code)」两节,基于 4 语言 × 2 查询全流程实测。\n",
  "path": "/home/agentuser/.hermes/skills/github-trending-digest/SKILL.md",
  "size": 6443
}