用 Vibe Coding 实现 GitHub Star 智能分类
背景与问题
作为一名开发者,我习惯将 GitHub 当做一个"网站"来浏览——关注"逛逛 GitHub"、"GitHub Daily"等自媒体账号,看到感兴趣的项目就随手点个 Star。久而久之,这个习惯带来了一个实际问题:
我的 GitHub Star 数量已经接近 700 个,其中很多项目已经遗忘在收藏夹中。
上周末我花了好久时间清理,最终保留了 312 个仓库。但这些项目涵盖了不同的技术栈、用途场景,不加以管理的话很快又会陷入混乱。
核心痛点
收藏容易,检索困难:Star 的时候只有简单印象,后续想用时很难找到
分类缺失:GitHub 原生没有提供 Star 分类功能
维护成本高:手动整理几百个仓库不现实
解决方案
受到 GithubStarsManager 项目的启发,我决定用 "Vibe Coding" 的方式快速构建一个自动化解决方案:
利用 LLM 的理解能力,自动分析每个 Star 仓库,每天定时运行,生成结构化的分类和标签。
技术选型
系统架构
┌─────────────────┐
│ GitHub Actions │ ◄─── 定时触发 (每天)
│ Cron Trigger │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Python 脚本 │
│ - 拉取 Stars │
│ - 调用 DeepSeek│
│ - 生成分类/标签│
└────────┬────────┘
│
▼
┌─────────────────┐
│ DeepSeek API │ ◄─── 分析仓库信息
│ (LLM 分析) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 更新 README │ ◄─── 自动提交
│ 生成索引页面 │
└─────────────────┘实现细节
1. 数据获取
使用 GitHub REST API 获取用户的 Star 列表:
import requests
def get_stars(token):
headers = {"Authorization": f"token {token}"}
stars = []
page = 1
while True:
url = f"https://api.github.com/user/starred?page={page}&per_page=100"
response = requests.get(url, headers=headers)
if not response.json():
break
stars.extend(response.json())
page += 1
return stars2. LLM 分析
设计 Prompt 让 DeepSeek 分析仓库信息并返回结构化数据:
def analyze_repo(repo_name, description, language):
prompt = f"""
分析以下 GitHub 仓库,返回 JSON 格式的分类和标签:
仓库名: {repo_name}
描述: {description}
语言: {language}
返回格式:
{{
"category": "一级分类",
"tags": ["标签1", "标签2"],
"summary": "一句话描述"
}}
"""
# 调用 DeepSeek API
response = call_deepseek(prompt)
return parse_json(response)3. 定时任务
GitHub Actions 配置文件 .github/workflows/update.yml:
name: Update Stars
on:
schedule:
- cron: '0 0 * * *' # 每天 UTC 0:00 运行
workflow_dispatch: # 支持手动触发
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: pip install requests
- name: Run analyzer
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
run: python main.py
- name: Commit changes
run: |
git config user.name 'github-actions[bot]'
git config user.email 'github-actions[bot]@users.noreply.github.com'
git add .
git commit -m "Auto update stars" || exit 0
git push效果展示
分类统计
最终生成的 README 包含完整的分类统计:
仓库详情
每个仓库都会生成详细的信息卡片:
### ultralytics/ultralytics
⭐ 51917 | Python
这是一个基于 PyTorch 的 YOLO 目标检测框架,提供训练、验证和部署功能。
**标签**: `目标检测` `计算机视觉`
**使用场景**: 用于图像和视频中的目标检测、实例分割、姿态估计等计算机视觉任务。标签导航
支持按标签快速筛选,比如:
自动化测试(17 个)Android(12 个)逆向工程(11 个)性能测试(9 个)
项目地址
完整的代码实现已开源:https://github.com/FanLu1994/my-star
总结
通过这个项目,我实践了"Vibe Coding"的理念:
快速原型:从想法到可用代码,仅用了几个小时
AI 赋能:利用 LLM 的理解能力,自动化原本繁琐的分类工作
云端运行:借助 GitHub Actions,零成本实现定时任务
现在我的 274 个 Star 仓库已经被自动整理成 10 个分类、383 个标签,检索效率大大提升。
最后更新: 2026-01-24 | 项目仍在持续优化中