GitHub趋势提取器
一个强大的工具,用于抓取GitHub Trending存储库,具有多种过滤选项。支持MCP服务器和WorkBuddy技能集成。
特性
- 抓取GitHub趋势页面数据
- 多种过滤器选项:
- 时间范围:每日、每周、每月 - 编程语言:Python、JavaScript、TypeScript、Rust、Go、Java等。 - 口语:英语、汉语、日语、法语等。
- 完整的存储库信息:
- 存储库名称和URL - 描述 - 编程语言 - 星/叉计数和URL - 带有头像的贡献者列表 - 今日获得明星
- 完全支持TypeScript
- 人工智能助手的MCP服务器模式
- WorkBuddy技能配置
快速开始
一键式Web界面
我们为手动测试提供了一个漂亮的web界面:
选项1:使用npm脚本
npm run server选项2:使用启动脚本(Windows)
start-server.bat选项3:使用启动脚本(Linux/Mac)
# Add execute permission (first time only)
chmod +x start-server.sh
# Run the script
./start-server.sh然后打开: http://localhost:34567
界面特点:
- 🔍 视觉过滤器选项(时间范围、编程语言、口语)
- 📦 存储库显示的卡片视图
- 📄 JSON数据查看器
- 📊 实时统计
运行MCP服务器
npm run mcp-server安装
# Clone the repository
git clone
cd github-trending
# Install dependencies
npm install
# Build TypeScript
npm run build用法
作为图书馆
import { getTrending, getTrendingRepositories, getTrendingStatistics } from './src/index';
// Get today's trending (all languages)
const result = await getTrending();
console.log(result.repositories);
// Get weekly Python trending
const repos = await getTrendingRepositories({
since: 'weekly',
language: 'python'
});
// Get statistics
const stats = await getTrendingStatistics({
since: 'monthly',
language: 'typescript'
});滤波器参数
| 参数 | 类型 | 描述 | 示例 | ||
|---|---|---|---|---|---|
since | `'daily' \ | 'weekly' \ | 'monthly'` | 时间范围 | 'weekly' |
language | string | 程序设计语言 | 'python', 'rust' | ||
spokenLanguageCode | string | 口语代码 | 'en', 'zh' |
作为MCP服务器
- 构建项目:
npm run build- 配置您的MCP客户端(例如,Claude Desktop):
编辑 claude_desktop_config.json:
{
"mcpServers": {
"github-trending": {
"command": "node",
"args": ["/path/to/github-trending/dist/mcp-server.js"],
"description": "GitHub Trending repository scraper"
}
}
}- 可用的MCP工具:
getTrendingRepositories-获取趋势存储库列表getTrendingMetadata-获取页面元数据getTrendingStatistics-获取统计数据
作为WorkBuddy技能
复制 skill/SKILL.md 转到WorkBuddy的技能目录:
# User-level Skill
cp skill/SKILL.md ~/.codebuddy/skills/github-trending/
# Project-level Skill
cp skill/SKILL.md .codebuddy/skills/github-trending/数据结构
趋势库
interface TrendingRepository {
name: string; // "owner/repo" format
url: string; // Repository URL
description: string; // Repository description
language: string; // Programming language
stars: number; // Star count (integer)
starsUrl: string; // Stars page URL
forks: number; // Fork count (integer)
forksUrl: string; // Forks page URL
contributors: Contributor[]; // Contributor list
starsToday: number; // Stars gained today (integer)
starsTodayText: string; // Original text, e.g., "2,149 stars today"
}
interface Contributor {
username: string; // GitHub username
url: string; // GitHub profile URL
avatar: string; // Avatar URL
}趋势元数据
interface TrendingMetadata {
title: string; // Page title
description: string; // Page description
filterOptions: {
since: string; // Current time range
language?: string; // Current language filter
spokenLanguageCode?: string; // Current spoken language filter
};
}示例
获取今天的Python趋势
import { getTrendingRepositories } from './src/index';
const repos = await getTrendingRepositories({
since: 'daily',
language: 'python'
});
repos.forEach(repo => {
console.log(`${repo.name}: ${repo.stars} stars, +${repo.starsToday} today`);
});每周从中国开发者那里获取TypeScript项目
const repos = await getTrendingRepositories({
since: 'weekly',
language: 'typescript',
spokenLanguageCode: 'zh'
});获取统计信息
import { getTrendingStatistics } from './src/index';
const stats = await getTrendingStatistics({ since: 'weekly' });
console.log(`Total repos: ${stats.total}`);
console.log(`Languages:`, stats.languages);
console.log(`Total stars: ${stats.totalStars}`);支持的语言
程式语言
pythonpythonjavascript-JavaScripttypescript-TypeScriptrust-生锈go-去吧javaJavacCc++Cc#Cruby-红宝石php-PHPswift-Swiftkotlin-Kotlin- …以及更多
口语
en-英语zh-中文ja-日语ko-朝鲜语fr-法语de-德语es-西班牙语ru-俄罗斯人
项目结构
github-trending/
├── src/
│ ├── types.ts # TypeScript type definitions
│ ├── scraper.ts # Page scraping module
│ ├── parser.ts # HTML parsing module
│ ├── index.ts # Main entry, exports API
│ ├── mcp-server.ts # MCP Server entry
│ └── server.ts # Web test server
├── public/
│ └── index.html # Web test interface
├── skill/
│ └── SKILL.md # WorkBuddy Skill config
├── start-server.bat # Windows startup script
├── start-server.sh # Linux/Mac startup script
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
├── README.md # Chinese documentation
└── README_EN.md # English documentation发展
# Development mode
npm run dev
# Start web test server
npm run server
# Run MCP Server
npm run mcp-server
# Build
npm run build备注
- 防刮擦:此工具设置了合理的User-Agent和headers,但频繁的请求可能会受到GitHub的速率限制
- 数据更新GitHub趋势数据会定期更新,而非实时更新
- 页面结构:如果GitHub页面结构发生变化,解析器可能需要更新
- 网络问题:中国用户可能需要配置代理才能访问GitHub
许可证
Apache 2.0
贡献
欢迎问题和拉取请求!
