Skill: jiangzhiyu/github-trending (version 1.0.0)

# github-trending - 获取 GitHub 热门项目 自动获取 GitHub Trending 热门项目信息，支持按时间范围筛选。 ## 使用方法 ### 基础用法 ```bash github-trending # 获取今日热门 github-trending daily # 获取今日热门 github-trending weekly # 获取本周热门 github-trending monthly # 获取本月热门 github-trending json # 输出 JSON 格式 ``` ### 示例 ```bash # 获取今日热门项目（人类可读格式） github-trending # 获取本周热门（JSON 格式，便于程序处理） github-trending weekly json ``` ## 输出格式 默认输出 Markdown 格式的表格，包含： - 排名 - 项目名称 - 编程语言 - 今日 Stars - 总 Stars - 项目简介 ## 配置信息 - **数据源**: `https://github.com/trending` - **更新频率**: 实时（每次调用重新获取） - **无需认证**: 使用公开页面抓取，无需 API Key ## 故障排除 1. **网络错误**: 检查网络连接 2. **解析失败**: GitHub 页面结构可能已变更 3. **限流**: 频繁调用可能被 GitHub 限流，建议间隔使用 ## 相关技能 - `github`: GitHub API 操作（需要认证） - `send-email`: 发送邮件（可将结果邮件通知）

path: github-trending.sh
content: #!/bin/bash
# github-trending - 获取 GitHub 热门项目
# 用法：github-trending [daily|weekly|monthly]

set -e

TIMEFRAME="${1:-daily}"

YELLOW='\033[1;33m'
BLUE='\033[0;34m'
GREEN='\033[0;32m'
CYAN='\033[0;36m'
NC='\033[0m'

get_period_display() {
    case "$1" in
        daily) echo "今日" ;;
        weekly) echo "本周" ;;
        monthly) echo "本月" ;;
        *) echo "热门" ;;
    esac
}

case "$TIMEFRAME" in
    daily|today) PERIOD="daily" ;;
    weekly|week) PERIOD="weekly" ;;
    monthly|month) PERIOD="monthly" ;;
    *) echo "用法：github-trending [daily|weekly|monthly]"; exit 1 ;;
esac

PERIOD_DISPLAY=$(get_period_display "$PERIOD")

echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${YELLOW}🔥 GitHub Trending ${PERIOD_DISPLAY}${NC}"
echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""

# 获取并解析数据
curl -s "https://github.com/trending?since=$PERIOD" | python3 -c "
import sys, re

html = sys.stdin.read()

# 查找所有 trending 项目块
blocks = re.findall(r'(<h2[^>]*>.*?</article>)', html, re.DOTALL)

for i, block in enumerate(blocks[:10]):
    # 项目名称
    name_match = re.search(r'href=\"(/[^/\"]+/[^/\"]+)\"', block)
    if not name_match: continue
    name = name_match.group(1).lstrip('/')
    
    # 描述
    desc_match = re.search(r'<p[^>]*>(.*?)</p>', block, re.DOTALL)
    desc = re.sub(r'<[^>]+>', '', desc_match.group(1)).strip()[:80] if desc_match else ''
    if desc: desc += '...' if len(desc) < 80 else ''
    
    # 语言
    lang_match = re.search(r'<span[^>]*>([A-Za-z+#]+)</span>', block)
    lang = lang_match.group(1) if lang_match else 'Unknown'
    
    # Stars
    stars_match = re.search(r'stargazers\"[^>]*>[\\s\\n]*([\\d,\\.]+[kKmM]?)', block, re.IGNORECASE)
    stars = stars_match.group(1) if stars_match else '0'
    
    # Today
    today_match = re.search(r'>([\\d,\\.]+[kKmM]?) stars? today<', block, re.IGNORECASE)
    today = today_match.group(1) if today_match else '0'
    
    emoji = ['🥇', '🥈', '🥉', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣', '🔟'][i]
    print(f\"{emoji} **{name}** ({lang}) +{today}⭐\")
    if desc: print(f'   {desc}')
    print(f'   ⭐ {stars} total | https://github.com/{name}')
    print()
"

echo -e "${BLUE}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}数据来源：https://github.com/trending${NC}"


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)