{
  "schemaVersion": "1.0",
  "item": {
    "slug": "vpn-rotate-skill",
    "name": "Vpn Rotate Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/acastellana/vpn-rotate-skill",
    "canonicalUrl": "https://clawhub.ai/acastellana/vpn-rotate-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/vpn-rotate-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=vpn-rotate-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "README.md",
      "SKILL.md",
      "providers/mullvad.md",
      "providers/nordvpn.md",
      "providers/protonvpn.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/vpn-rotate-skill"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/vpn-rotate-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/vpn-rotate-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vpn-rotate-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vpn-rotate-skill/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "VPN Rotate Skill",
        "body": "Rotate VPN servers to bypass API rate limits. Works with any OpenVPN-compatible VPN."
      },
      {
        "title": "1. Run Setup Wizard",
        "body": "./scripts/setup.sh\n\nThis will:\n\nCheck OpenVPN is installed\nHelp you configure your VPN provider\nSet up passwordless sudo\nTest the connection"
      },
      {
        "title": "2. Manual Setup",
        "body": "If you prefer manual setup:\n\n# Install OpenVPN\nsudo apt install openvpn\n\n# Create config directory\nmkdir -p ~/.vpn/servers\n\n# Download .ovpn files from your VPN provider\n# Put them in ~/.vpn/servers/\n\n# Create credentials file\necho \"your_username\" > ~/.vpn/creds.txt\necho \"your_password\" >> ~/.vpn/creds.txt\nchmod 600 ~/.vpn/creds.txt\n\n# Enable passwordless sudo for openvpn\necho \"$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall\" | sudo tee /etc/sudoers.d/openvpn"
      },
      {
        "title": "Decorator (Recommended)",
        "body": "from scripts.decorator import with_vpn_rotation\n\n@with_vpn_rotation(rotate_every=10, delay=1.0)\ndef scrape(url):\n    return requests.get(url).json()\n\n# Automatically rotates VPN every 10 calls\nfor url in urls:\n    data = scrape(url)"
      },
      {
        "title": "VPN Class",
        "body": "from scripts.vpn import VPN\n\nvpn = VPN()\n\n# Connect\nvpn.connect()\nprint(vpn.get_ip())  # New IP\n\n# Rotate (disconnect + reconnect to different server)\nvpn.rotate()\nprint(vpn.get_ip())  # Different IP\n\n# Disconnect\nvpn.disconnect()"
      },
      {
        "title": "Context Manager",
        "body": "from scripts.vpn import VPN\n\nvpn = VPN()\n\nwith vpn.session():\n    # VPN connected\n    for url in urls:\n        vpn.before_request()  # Handles rotation\n        data = requests.get(url).json()\n# VPN disconnected"
      },
      {
        "title": "CLI",
        "body": "python scripts/vpn.py connect\npython scripts/vpn.py status\npython scripts/vpn.py rotate\npython scripts/vpn.py disconnect\npython scripts/vpn.py ip"
      },
      {
        "title": "Decorator Options",
        "body": "@with_vpn_rotation(\n    rotate_every=10,      # Rotate after N requests\n    delay=1.0,            # Seconds between requests\n    config_dir=None,      # Override config directory\n    creds_file=None,      # Override credentials file\n    country=None,         # Filter servers by country prefix (e.g., \"us\")\n    auto_connect=True,    # Connect automatically on first request\n)"
      },
      {
        "title": "VPN Class Options",
        "body": "VPN(\n    config_dir=\"~/.vpn/servers\",\n    creds_file=\"~/.vpn/creds.txt\", \n    rotate_every=10,\n    delay=1.0,\n    verbose=True,\n)"
      },
      {
        "title": "Recommended Settings",
        "body": "API Aggressivenessrotate_everydelayAggressive (Catastro, LinkedIn)52.0sStandard101.0sLenient20-500.5s"
      },
      {
        "title": "Files",
        "body": "vpn-rotate-skill/\n├── SKILL.md              # This file\n├── README.md             # Overview\n├── scripts/\n│   ├── vpn.py            # VPN controller\n│   ├── decorator.py      # @with_vpn_rotation\n│   └── setup.sh          # Setup wizard\n├── examples/\n│   └── catastro.py       # Spanish property API example\n└── providers/\n    ├── protonvpn.md      # ProtonVPN setup\n    ├── nordvpn.md        # NordVPN setup\n    └── mullvad.md        # Mullvad setup"
      },
      {
        "title": "\"sudo: a password is required\"",
        "body": "Run the setup script or manually add sudoers entry:\n\necho \"$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall\" | sudo tee /etc/sudoers.d/openvpn"
      },
      {
        "title": "Connection fails",
        "body": "Check credentials are correct\nTest manually: sudo openvpn --config ~/.vpn/servers/server.ovpn --auth-user-pass ~/.vpn/creds.txt\nCheck VPN provider account is active"
      },
      {
        "title": "Still getting blocked",
        "body": "Lower rotate_every (try 5 instead of 10)\nIncrease delay (try 2-3 seconds)\nCheck if API blocks VPN IPs entirely"
      },
      {
        "title": "No .ovpn files",
        "body": "Download from your VPN provider:\n\nProtonVPN: https://protonvpn.com/support/vpn-config-download/\nNordVPN: https://nordvpn.com/ovpn/\nMullvad: https://mullvad.net/en/account/#/openvpn-config"
      }
    ],
    "body": "VPN Rotate Skill\n\nRotate VPN servers to bypass API rate limits. Works with any OpenVPN-compatible VPN.\n\nSetup\n1. Run Setup Wizard\n./scripts/setup.sh\n\n\nThis will:\n\nCheck OpenVPN is installed\nHelp you configure your VPN provider\nSet up passwordless sudo\nTest the connection\n2. Manual Setup\n\nIf you prefer manual setup:\n\n# Install OpenVPN\nsudo apt install openvpn\n\n# Create config directory\nmkdir -p ~/.vpn/servers\n\n# Download .ovpn files from your VPN provider\n# Put them in ~/.vpn/servers/\n\n# Create credentials file\necho \"your_username\" > ~/.vpn/creds.txt\necho \"your_password\" >> ~/.vpn/creds.txt\nchmod 600 ~/.vpn/creds.txt\n\n# Enable passwordless sudo for openvpn\necho \"$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall\" | sudo tee /etc/sudoers.d/openvpn\n\nUsage\nDecorator (Recommended)\nfrom scripts.decorator import with_vpn_rotation\n\n@with_vpn_rotation(rotate_every=10, delay=1.0)\ndef scrape(url):\n    return requests.get(url).json()\n\n# Automatically rotates VPN every 10 calls\nfor url in urls:\n    data = scrape(url)\n\nVPN Class\nfrom scripts.vpn import VPN\n\nvpn = VPN()\n\n# Connect\nvpn.connect()\nprint(vpn.get_ip())  # New IP\n\n# Rotate (disconnect + reconnect to different server)\nvpn.rotate()\nprint(vpn.get_ip())  # Different IP\n\n# Disconnect\nvpn.disconnect()\n\nContext Manager\nfrom scripts.vpn import VPN\n\nvpn = VPN()\n\nwith vpn.session():\n    # VPN connected\n    for url in urls:\n        vpn.before_request()  # Handles rotation\n        data = requests.get(url).json()\n# VPN disconnected\n\nCLI\npython scripts/vpn.py connect\npython scripts/vpn.py status\npython scripts/vpn.py rotate\npython scripts/vpn.py disconnect\npython scripts/vpn.py ip\n\nConfiguration\nDecorator Options\n@with_vpn_rotation(\n    rotate_every=10,      # Rotate after N requests\n    delay=1.0,            # Seconds between requests\n    config_dir=None,      # Override config directory\n    creds_file=None,      # Override credentials file\n    country=None,         # Filter servers by country prefix (e.g., \"us\")\n    auto_connect=True,    # Connect automatically on first request\n)\n\nVPN Class Options\nVPN(\n    config_dir=\"~/.vpn/servers\",\n    creds_file=\"~/.vpn/creds.txt\", \n    rotate_every=10,\n    delay=1.0,\n    verbose=True,\n)\n\nRecommended Settings\nAPI Aggressiveness\trotate_every\tdelay\nAggressive (Catastro, LinkedIn)\t5\t2.0s\nStandard\t10\t1.0s\nLenient\t20-50\t0.5s\nFiles\nvpn-rotate-skill/\n├── SKILL.md              # This file\n├── README.md             # Overview\n├── scripts/\n│   ├── vpn.py            # VPN controller\n│   ├── decorator.py      # @with_vpn_rotation\n│   └── setup.sh          # Setup wizard\n├── examples/\n│   └── catastro.py       # Spanish property API example\n└── providers/\n    ├── protonvpn.md      # ProtonVPN setup\n    ├── nordvpn.md        # NordVPN setup\n    └── mullvad.md        # Mullvad setup\n\nTroubleshooting\n\"sudo: a password is required\"\n\nRun the setup script or manually add sudoers entry:\n\necho \"$USER ALL=(ALL) NOPASSWD: /usr/sbin/openvpn, /usr/bin/killall\" | sudo tee /etc/sudoers.d/openvpn\n\nConnection fails\nCheck credentials are correct\nTest manually: sudo openvpn --config ~/.vpn/servers/server.ovpn --auth-user-pass ~/.vpn/creds.txt\nCheck VPN provider account is active\nStill getting blocked\nLower rotate_every (try 5 instead of 10)\nIncrease delay (try 2-3 seconds)\nCheck if API blocks VPN IPs entirely\nNo .ovpn files\n\nDownload from your VPN provider:\n\nProtonVPN: https://protonvpn.com/support/vpn-config-download/\nNordVPN: https://nordvpn.com/ovpn/\nMullvad: https://mullvad.net/en/account/#/openvpn-config"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/acastellana/vpn-rotate-skill",
    "publisherUrl": "https://clawhub.ai/acastellana/vpn-rotate-skill",
    "owner": "acastellana",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/vpn-rotate-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/vpn-rotate-skill",
    "agentUrl": "https://openagent3.xyz/skills/vpn-rotate-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/vpn-rotate-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/vpn-rotate-skill/agent.md"
  }
}