每日备份 2026-06-10 12:57:13
This commit is contained in:
1 parent
fda2ccb8c2
commit
3d2e638c6a
244 files changed
+58890
-3
No files matched your search
Executable
+154
@@ -0,0 +1,154 @@
|
||||
#!/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 "$@"
|
||||
Reference in new issue
Block a user