用 Vibe Coding 实现 GitHub Star 智能分类

2

背景与问题

作为一名开发者,我习惯将 GitHub 当做一个"网站"来浏览——关注"逛逛 GitHub"、"GitHub Daily"等自媒体账号,看到感兴趣的项目就随手点个 Star。久而久之,这个习惯带来了一个实际问题:

我的 GitHub Star 数量已经接近 700 个,其中很多项目已经遗忘在收藏夹中。

上周末我花了好久时间清理,最终保留了 312 个仓库。但这些项目涵盖了不同的技术栈、用途场景,不加以管理的话很快又会陷入混乱。

核心痛点

  1. 收藏容易,检索困难:Star 的时候只有简单印象,后续想用时很难找到

  2. 分类缺失:GitHub 原生没有提供 Star 分类功能

  3. 维护成本高:手动整理几百个仓库不现实

解决方案

受到 GithubStarsManager 项目的启发,我决定用 "Vibe Coding" 的方式快速构建一个自动化解决方案:

利用 LLM 的理解能力,自动分析每个 Star 仓库,每天定时运行,生成结构化的分类和标签。

技术选型

组件

技术方案

说明

开发语言

Python

生态丰富,适合快速开发

AI 分析引擎

DeepSeek API

性价比高,中文理解能力强

自动化调度

GitHub Actions

免费的 CI/CD 服务,支持定时任务

数据存储

GitHub 仓库

直接提交到仓库,版本可控

认证方式

GitHub Token

访问 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 stars

2. 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 包含完整的分类统计:

分类

数量

分类

数量

AI/机器学习

37

Web开发

17

移动开发

28

框架

6

数据库

5

工具/库

138

DevOps/基础设施

11

游戏

22

教育

6

其他

4

仓库详情

每个仓库都会生成详细的信息卡片:

### ultralytics/ultralytics
​
⭐ 51917 | Python
​
这是一个基于 PyTorch 的 YOLO 目标检测框架,提供训练、验证和部署功能。
​
**标签**: `目标检测` `计算机视觉`
​
**使用场景**: 用于图像和视频中的目标检测、实例分割、姿态估计等计算机视觉任务。

标签导航

支持按标签快速筛选,比如:

  • 自动化测试 (17 个)

  • Android (12 个)

  • 逆向工程 (11 个)

  • 性能测试 (9 个)

项目地址

完整的代码实现已开源:https://github.com/FanLu1994/my-star

总结

通过这个项目,我实践了"Vibe Coding"的理念:

  1. 快速原型:从想法到可用代码,仅用了几个小时

  2. AI 赋能:利用 LLM 的理解能力,自动化原本繁琐的分类工作

  3. 云端运行:借助 GitHub Actions,零成本实现定时任务

现在我的 274 个 Star 仓库已经被自动整理成 10 个分类、383 个标签,检索效率大大提升。


最后更新: 2026-01-24 | 项目仍在持续优化中