--- name: github-trending description: | 抓取 GitHub 上 star 涨得最快的项目(Trending 榜),打分标注是否与研究方向相关, 生成 Obsidian 笔记到 GitHubTrending 文件夹。默认周榜。 触发词:"GitHub 周榜"、"star 涨得最快"、"过去一周 GitHub 热门"、"GitHub trending"、 "看看这周 GitHub 上火了什么"、"GitHub 日榜"、"GitHub 月榜" --- > **开始前**: 先说一声 "开始抓 GitHub 榜单 🐙" 并告知今天日期与抓取周期(默认周榜)。 # GitHub Trending 抓取 抓取 GitHub Trending → 用关键词打分标注 → 写成 Obsidian 笔记。纯 Python 脚本,零 token。 ## Step 0: 读取共享配置 配置在 `../_shared/user-config.json`,个人覆盖在 `../_shared/user-config.local.json`(存在则以 local 为准)。 脚本内部已通过 `../_shared/user_config.py` 自动加载,无需手动传参。相关字段: - `paths.obsidian_vault` — vault 根路径 - `paths.github_trending_folder` — 输出文件夹(默认 `GitHubTrending`) - `daily_papers.keywords / negative_keywords / domain_boost_keywords` — 复用它们给项目打分、标注相关性 ## 解析周期与语言 从用户输入解析 `--since`: - "周榜"、"过去一周"、"这周"、"本周" → `--since weekly`(默认) - "日榜"、"今天"、"今日" → `--since daily` - "月榜"、"这个月"、"本月" → `--since monthly` 可选 `--language`(如 "只看 Python" → `--language python`),不指定则抓全部语言。 ## 工作流程 ### Phase 1: 抓取 + 打分(fetch_trending.py) ```bash python3 fetch_trending.py --since weekly > /tmp/github_trending.json # 指定语言示例: # python3 fetch_trending.py --since weekly --language python > /tmp/github_trending.json ``` 脚本自动完成: - 抓取 `github.com/trending?since=<周期>`(兼容 SSL 拦截环境,自动退回不验证证书) - regex 解析:repo、简介、语言、累计 star/fork、本周期新增 star - 用共享配置关键词打分,标注 `relevant`(命中正向/领域词且未被负向词压过),**不丢弃非相关项** - 按本周期新增 star 降序排序 **检查输出**:确认 `/tmp/github_trending.json` 是非空 JSON 数组。为空则看 stderr 诊断。 ### Phase 2: 写 Obsidian 笔记(write_trending_note.py) ```bash python3 write_trending_note.py /tmp/github_trending.json ``` - 输出到 `{vault}/{github_trending_folder}/` - 周榜文件名按 ISO 周编号,如 `2026-W28 GitHub周榜.md`;日/月榜用日期 - 笔记结构:摘要 → 「🎯 与研究方向相关」列表 → 「📊 完整榜单」表格(含 ✅ 相关标记) - 脚本把最终笔记路径打到 stdout ## 输出 完成后告知用户: - 抓取了多少个项目、其中多少个与研究方向相关 - 生成的笔记路径 ## 注意事项 - 两个脚本都不启动 Task Agent,零 token 消耗 - **不做 git 操作**(与 daily-papers 一致,git 自动化默认关闭) - 网络不通时参考全局 CLAUDE.md 的代理规则(17890 端口);脚本已内置 SSL 兜底 - GitHub Trending 只有 daily/weekly/monthly 三档,无法自定义任意天数