每日备份 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
@@ -0,0 +1,134 @@
|
||||
#!/bin/bash
|
||||
# SEO进化猎手完整流程 v1.0
|
||||
# 扫描 → 评估 → 安装 → 沉淀
|
||||
|
||||
PROGRESS_FILE="/root/.openclaw/workspace/seo/evolution-hunter-progress.md"
|
||||
CANDIDATES="/root/.openclaw/workspace/seo/evolution-candidates.txt"
|
||||
EVAL_LOG="/root/.openclaw/workspace/seo/evolution-log.md"
|
||||
LOG_FILE="/root/.openclaw/logs/seo-evolution.log"
|
||||
PROXY="http://192.168.0.66:7890"
|
||||
TIMEOUT=20
|
||||
|
||||
log() { echo "[$(date '+%H:%M:%S') $1" | tee -a "$LOG_FILE" 2>/dev/null; }
|
||||
|
||||
# 资源检查
|
||||
check_resource() {
|
||||
bash /root/.openclaw/scripts/resource-guard.sh > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# GitHub搜索
|
||||
github_search() {
|
||||
local query="$1"
|
||||
local url="https://api.github.com/search/repositories?q=$(echo "$query" | python3 -c "import urllib.parse,sys; print(urllib.parse.quote(sys.stdin.read().strip()))&sort=stars&order=desc&per_page=10"
|
||||
curl -s --max-time $TIMEOUT --proxy "$PROXY" \
|
||||
-H "Accept: application/vnd.github.v3+json" \
|
||||
-H "User-Agent: Mozilla/5.0" "$url" 2>/dev/null | python3 -c "
|
||||
import json,sys
|
||||
try:
|
||||
data=json.load(sys.stdin)
|
||||
for item in data.get('items',[])[:5]:
|
||||
stars=item.get('stargazers_count',0)
|
||||
lang=item.get('language','N/A') or 'N/A'
|
||||
desc=str(item.get('description','N/A'))[:80]
|
||||
url=item.get('html_url','N/A')
|
||||
name=item.get('full_name','')
|
||||
print(f'NAME:{name}')
|
||||
print(f'STARS:{stars}')
|
||||
print(f'DESC:{desc}')
|
||||
print(f'LANG:{lang}')
|
||||
print(f'URL:{url}')
|
||||
print('---')
|
||||
except: pass
|
||||
" 2>/dev/null
|
||||
}
|
||||
|
||||
# 评估项目
|
||||
evaluate_project() {
|
||||
local name="$1"
|
||||
local stars="$2"
|
||||
local desc="$3"
|
||||
local url="$4"
|
||||
|
||||
# 高价值关键词
|
||||
case "$desc $name" in
|
||||
*seo*|*search*|*keyword*|*ranking*)
|
||||
echo "SEO直接相关"
|
||||
return 2
|
||||
;;
|
||||
*scraper*|*crawler*|*browser*|*automation*)
|
||||
echo "自动化工具"
|
||||
return 2
|
||||
;;
|
||||
*playwright*|*selenium*|*puppeteer*)
|
||||
echo "浏览器自动化"
|
||||
return 2
|
||||
;;
|
||||
*agent*|*tool*|*cli*|*api*)
|
||||
echo "Agent/工具"
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# 主流程
|
||||
main() {
|
||||
log "========== SEO进化猎手启动 =========="
|
||||
|
||||
check_resource || { log "资源不足"; exit 0; }
|
||||
|
||||
mkdir -p "$(dirname "$CANDIDATES")"
|
||||
> "$CANDIDATES"
|
||||
|
||||
# 扫描
|
||||
log "扫描SEO相关项目..."
|
||||
for query in "SEO tool python" "web scraper python" "keyword research" "content generator python"; do
|
||||
github_search "$query" >> "$EVAL_LOG"
|
||||
done
|
||||
|
||||
# 提取候选
|
||||
log "评估候选项目..."
|
||||
while IFS=: read -r field value; do
|
||||
case $field in
|
||||
NAME*) name="$value" ;;
|
||||
STARS*) stars="$value" ;;
|
||||
DESC*) desc="$value" ;;
|
||||
URL*) url="$value" ;;
|
||||
---)
|
||||
if [ -n "$name" ]; then
|
||||
result=$(evaluate_project "$name" "$stars" "$desc" "$url")
|
||||
priority=$?
|
||||
if [ $priority -ge 1 ]; then
|
||||
echo "【$result】⭐$stars $name" >> "$CANDIDATES"
|
||||
echo " $desc" >> "$CANDIDATES"
|
||||
echo " $url" >> "$CANDIDATES"
|
||||
echo "" >> "$CANDIDATES"
|
||||
fi
|
||||
fi
|
||||
name=""
|
||||
;;
|
||||
esac
|
||||
done < "$EVAL_LOG"
|
||||
|
||||
# 统计
|
||||
count=$(wc -l < "$CANDIDATES" 2>/dev/null || echo 0)
|
||||
log "发现 $count 个候选"
|
||||
|
||||
# 自动安装高优先级
|
||||
log "处理候选安装..."
|
||||
while IFS= read -r line; do
|
||||
echo "$line"
|
||||
done < "$CANDIDATES"
|
||||
|
||||
# 记录
|
||||
echo "## $(date '+%Y-%m-%d %H:%M'" >> "$PROGRESS_FILE"
|
||||
echo "" >> "$PROGRESS_FILE"
|
||||
cat "$CANDIDATES" >> "$PROGRESS_FILE"
|
||||
echo "" >> "$PROGRESS_FILE"
|
||||
|
||||
log "========== 进化猎手完成 =========="
|
||||
}
|
||||
|
||||
main
|
||||
Reference in new issue
Block a user