Skill: itonlyforfun-ai/bitget-poolx-monitor (version 1.1.0)

--- name: Bitget PoolX Monitor description: Monitor Bitget PoolX for new staking projects using r.jina.ai to bypass Cloudflare. Detect ETH, BTC, SOL and other pool launches. version: "1.1.0" author: Liuge tags: - bitget - poolx - monitor - crypto - staking - jina --- # Bitget PoolX Monitor Monitor Bitget PoolX for new staking project launches. ## Features - Uses r.jina.ai to bypass Cloudflare protection - Fast and reliable (no Playwright needed) - Detects new staking pools (ETH, BTC, SOL, etc.) - Automatic notification support ## Usage ### Command Line ```bash curl -s "https://r.jina.ai/https://www.bitget.com/events/poolx" ``` ### Python ```python import requests def check_poolx(): url = "https://r.jina.ai/https://www.bitget.com/events/poolx" content = requests.get(url).text if "Ongoing" in content: # Check for new pools return "Has active pools" return "No pools" ``` ## Output Example ``` Ongoing (2) - BTC Pool: 2,473 BTC, APR 2.74% - ETH Pool: 80,664 ETH, APR 7.33% ``` ## Monetization This skill includes SkillPay integration: - Charge users per API call (0.001 USDT) - Check balance before execution - Payment link for deposits ## Files - bitget-monitor.py - Main script using r.jina.ai - billing.py - SkillPay billing integration

path: billing.py
content: #!/usr/bin/env python3
"""
SkillPay.me 收费接口
"""
import requests

BILLING_API_URL = "https://skillpay.me"
BILLING_API_KEY = "[REDACTED_SECRET]"
SKILL_ID = "6a3b1843-5266-40c6-8f0c-408512bb6f43"

def check_balance(user_id):
    """查询用户余额"""
    url = f"{BILLING_API_URL}/api/v1/billing/balance"
    headers = {"X-API-Key": BILLING_API_KEY}
    
    try:
        resp = requests.get(f"{url}?user_id={user_id}", headers=headers, timeout=10)
        data = resp.json()
        return data.get("balance", 0)
    except Exception as e:
        print(f"查询余额错误: {e}")
        return 0

def charge_user(user_id, amount=0.001):
    """
    扣费（每次调用）
    amount: USDT 数量，默认 0.001
    """
    url = f"{BILLING_API_URL}/api/v1/billing/charge"
    headers = {
        "X-API-Key": BILLING_API_KEY,
        "Content-Type": "application/json"
    }
    data = {
        "user_id": user_id,
        "skill_id": SKILL_ID,
        "amount": amount
    }
    
    try:
        resp = requests.post(url, json=data, headers=headers, timeout=10)
        result = resp.json()
        
        if result.get("success"):
            return {"ok": True, "balance": result.get("balance", 0)}
        else:
            return {
                "ok": False, 
                "balance": result.get("balance", 0),
                "payment_url": result.get("payment_url", "")
            }
    except Exception as e:
        print(f"扣费错误: {e}")
        return {"ok": False, "error": str(e)}

def get_payment_link(user_id, amount=10):
    """生成充值链接"""
    url = f"{BILLING_API_URL}/api/v1/billing/payment-link"
    headers = {
        "X-API-Key": BILLING_API_KEY,
        "Content-Type": "application/json"
    }
    data = {"user_id": user_id, "amount": amount}
    
    try:
        resp = requests.post(url, json=data, headers=headers, timeout=10)
        result = resp.json()
        return result.get("payment_url", "")
    except Exception as e:
        print(f"生成充值链接错误: {e}")
        return ""

# 使用示例
if __name__ == "__main__":
    user = "test_user"
    
    # 1. 查询余额
    balance = check_balance(user)
    print(f"用户余额: {balance} USDT")
    
    # 2. 扣费
    result = charge_user(user, 0.001)
    if result.get("ok"):
        print("✅ 扣费成功，执行功能")
    else:
        print(f"❌ 扣费失败: {result}")
        if result.get("payment_url"):
            print(f"充值链接: {result['payment_url']}")


path: bitget-final.py
content: #!/usr/bin/env python3
from playwright.sync_api import sync_playwright
import time

def check_poolx():
    with sync_playwright() as p:
        # 尝试不同设置
        browser = p.chromium.launch(
            headless=True,
            args=[
                '--disable-blink-features=AutomationControlled',
                '--no-sandbox',
                '--disable-setuid-sandbox',
                '--disable-dev-shm-usage',
                '--disable-accelerated-2d-canvas',
                '--no-first-run',
                '--no-zygote',
                '--disable-gpu',
            ]
        )
        
        context = browser.new_context(
            viewport={'width': 1920, 'height': 1080},
            user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
        )
        
        page = context.new_page()
        
        # 注入stealth脚本
        page.add_init_script("""
            Object.defineProperty(navigator, 'webdriver', {
                get: () => undefined
            });
        """)
        
        try:
            page.goto("https://www.bitget.com/events/poolx", timeout=45000)
            time.sleep(10)  # 等待更长时间
            
            # 检查是否有人登录状态（可能有不同的内容）
            content = page.content()
            
            if "Just a moment" in content or "security verification" in content or "challenge" in content.lower():
                print("❌ 被 Cloudflare 拦截")
            else:
                text = page.inner_text("body")
                print(f"✅ 成功! 文本长度: {len(text)}")
                if "Stake" in text:
                    print("  - 包含 Stake")
                if "Pool" in text:
                    print("  - 包含 Pool")
                if "No projects" in text:
                    print("  - 显示无项目")
                    
        except Exception as e:
            print(f"❌ 错误: {e}")
        finally:
            browser.close()

if __name__ == "__main__":
    check_poolx()


path: bitget-monitor.py
content: #!/usr/bin/env python3
"""
Bitget PoolX Monitor - 使用 r.jina.ai 绕过 Cloudflare
"""
import requests
import time

def check_poolx():
    """检查 Bitget PoolX 状态"""
    url = "https://r.jina.ai/https://www.bitget.com/events/poolx"
    
    try:
        resp = requests.get(url, timeout=30)
        content = resp.text
        
        print("=== Bitget PoolX 状态 ===")
        
        if "Ongoing" in content:
            print("✅ 有进行中的项目!")
            
            # 提取池子信息
            lines = content.split('\n')
            for line in lines:
                if "ETH" in line and "Pool" in line:
                    print(f"  - ETH Pool: {line.strip()[:100]}")
                if "BTC" in line and "Pool" in line:
                    print(f"  - BTC Pool: {line.strip()[:100]}")
                    
            return "HAS_POOLS"
        elif "Upcoming" in content and "0" in content:
            print("❌ 当前没有项目")
            return "NO_POOLS"
        else:
            print("⚠️ 状态未知")
            return "UNKNOWN"
            
    except Exception as e:
        print(f"错误: {e}")
        return "ERROR"

if __name__ == "__main__":
    result = check_poolx()
    print(f"\n结果: {result}")


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