#!/bin/bash # ============================================ # GitHub Intelligence Monitor v1.0 # 功能:主动监控GitHub榜单,寻找进化机会 # 监控范围:Trending + AI/Agent + 自动化 + Skills # ============================================ set -e PROXY="http://192.168.0.66:7890" OUT_DIR="/root/.openclaw/workspace/github-intel" REPORT="$OUT_DIR/report-$(date '+%Y%m%d').md" PREVIOUS="$OUT_DIR/previous-projects.txt" CURRENT="$OUT_DIR/current-projects.txt" # 颜色 RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; BLUE='\033[0;34m'; NC='\033[0m' log() { echo -e "${BLUE}[Intel]${NC} $(date '+%H:%M:%S') $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $(date '+%H:%M:%S') $1"; } info() { echo -e "${GREEN}[INFO]${NC} $(date '+%H:%M:%S') $1"; } mkdir -p "$OUT_DIR" # 1. 获取Trending页面 fetch_trending() { log "正在获取 GitHub Trending..." local content=$(curl -s --proxy "$PROXY" -A "Mozilla/5.0" "https://github.com/trending" | grep -oP 'href="/[a-zA-Z0-9_-]+/[a-zA-Z0-9_.-]+"' | grep -oP '(?<="\/)[^"]+' | grep -v 'trending\|developers\|sponsors\|apps' | head -30) echo "$content" > "$CURRENT" } # 2. 对比差异(新增项目) find_new_projects() { if [ ! -f "$PREVIOUS" ]; then touch "$PREVIOUS" log "首次运行,建立历史数据" return fi # 找出新增项目 comm -13 <(sort "$PREVIOUS") <(sort "$CURRENT") > "$OUT_DIR/new-projects.txt" 2>/dev/null || true local count=$(wc -l < "$OUT_DIR/new-projects.txt" 2>/dev/null | grep -oP '^\d+' || echo 0) log "发现 $count 个新项目" } # 3. 获取项目详情 get_project_details() { local project="$1" local api_url="https://api.github.com/repos/$project" curl -s --proxy "$PROXY" -A "Mozilla/5.0" "$api_url" 2>/dev/null || echo "{}" } # 4. 评估进化价值 evaluate_evolution() { local project="$1" local details=$(get_project_details "$project") local stars=$(echo "$details" | grep -oP '"stargazers_count":\d+' | head -1 | grep -oP '\d+' || echo 0) local desc=$(echo "$details" | grep -oP '"description":"[^"]*"' | head -1 | sed 's/"description":"//;s/"$//' || echo "") local lang=$(echo "$details" | grep -oP '"language":"[^"]*"' | head -1 | sed 's/"language":"//;s/"$//' || echo "") # 进化关键词 local keywords="agent|skill|automation|browser|playwright|puppeteer|cli|tool|openclaw|claude|gpt|llm|ai|copilot" local is_evolution=$(echo "$project $desc" | grep -iE "$keywords" || echo "") if [ -n "$is_evolution" ] && [ "$stars" -gt 500 ]; then echo "⭐ EVOLUTION_CANDIDATE: $project (⭐$stars) - $desc" echo " 语言: $lang" echo " 链接: https://github.com/$project" echo "" fi } # 5. 生成报告 generate_report() { local new_count=$(wc -l < "$OUT_DIR/new-projects.txt" | awk '{print $1}' 2>/dev/null || echo 0) { echo "# GitHub Intelligence Report" echo "生成时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "" echo "## 新增项目 ($new_count 个)" echo "" if [ -f "$OUT_DIR/new-projects.txt" ]; then while IFS= read -r project; do [ -z "$project" ] && continue evaluate_evolution "$project" done < "$OUT_DIR/new-projects.txt" fi echo "" echo "## Trending Top 10" echo "" if [ -f "$CURRENT" ]; then head -10 "$CURRENT" | while read -r project; do [ -z "$project" ] && continue evaluate_evolution "$project" done fi echo "" echo "## 进化建议" echo "" # 分析新增和热门项目中可能的进化机会 local candidates=$(grep -c "EVOLUTION_CANDIDATE" "$OUT_DIR/evolution-candidates.txt" 2>/dev/null || echo 0) if [ "$candidates" -gt 0 ]; then echo "发现 $candidates 个潜在进化目标,详见上方列表" else echo "本期无重大进化机会" fi } > "$REPORT" info "报告已生成: $REPORT" } # 主流程 main() { log "========== GitHub Intelligence Monitor ==========" fetch_trending find_new_projects # 生成候选列表 rm -f "$OUT_DIR/evolution-candidates.txt" touch "$OUT_DIR/evolution-candidates.txt" if [ -f "$CURRENT" ]; then while IFS= read -r project; do [ -z "$project" ] && continue result=$(evaluate_evolution "$project") if echo "$result" | grep -q "EVOLUTION_CANDIDATE"; then echo "$result" >> "$OUT_DIR/evolution-candidates.txt" fi done < "$CURRENT" fi generate_report # 更新历史 cp "$CURRENT" "$PREVIOUS" log "========== 监控完成 ==========" # 输出摘要 local candidate_count=$(wc -l < "$OUT_DIR/evolution-candidates.txt" 2>/dev/null || echo 0) if [ "$candidate_count" -gt 0 ]; then echo "" warn "发现 $candidate_count 个进化候选!" cat "$OUT_DIR/evolution-candidates.txt" fi } main "$@"