{
  "schemaVersion": "1.0",
  "item": {
    "slug": "snap",
    "name": "SaaS (Screenshot As A Service)",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/Kav-K/snap",
    "canonicalUrl": "https://clawhub.ai/Kav-K/snap",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/snap",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=snap",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "summary.txt",
      "SKILL.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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "snap",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-03T12:58:03.271Z",
      "expiresAt": "2026-05-10T12:58:03.271Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=snap",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=snap",
        "contentDisposition": "attachment; filename=\"snap-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "snap"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/snap"
    },
    "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/snap",
    "agentPageUrl": "https://openagent3.xyz/skills/snap/agent",
    "manifestUrl": "https://openagent3.xyz/skills/snap/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/snap/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SnapService — Screenshot as a Service",
        "body": "Free screenshot API at https://snap.llm.kaveenk.com.\nPOST a URL, get a PNG/JPEG back. Powered by headless Chromium."
      },
      {
        "title": "Step 1: Register for an API key",
        "body": "curl -s -X POST https://snap.llm.kaveenk.com/api/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"my-agent\"}'\n\nResponse:\n\n{\"key\":\"snap_abc123...\",\"name\":\"my-agent\",\"limits\":{\"per_minute\":2,\"per_day\":200}}\n\nIMPORTANT: Store key securely. It cannot be recovered.\n\nEach IP address can only register one API key."
      },
      {
        "title": "Step 2: Take screenshots",
        "body": "curl -s -X POST https://snap.llm.kaveenk.com/api/screenshot \\\n  -H \"Authorization: Bearer snap_yourkey\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com\"}' \\\n  -o screenshot.png\n\nThat's it. Two steps."
      },
      {
        "title": "Screenshot Options",
        "body": "All options go in the POST body alongside url:\n\nOptionTypeDefaultDescriptionurlstringrequiredURL to screenshotformatstring\"png\"\"png\" or \"jpeg\"full_pagebooleanfalseCapture entire scrollable pagewidthinteger1280Viewport width (pixels)heightinteger720Viewport height (pixels)dark_modebooleanfalseEmulate dark color schemeselectorstring—CSS selector to screenshot specific elementwait_msinteger0Extra wait time after page load (max 10000)scalenumber1Device scale factor (1-3, for retina)cookiesarray—Array of {name, value, domain} objectsheadersobject—Custom HTTP headersblock_adsbooleanfalseBlock common ad/tracker domains"
      },
      {
        "title": "Rate Limits",
        "body": "2 screenshots per minute per key\n200 screenshots per day per key\n1 API key per IP address\nMax page height: 16384px (full-page mode)\nMax screenshot size: 10MB"
      },
      {
        "title": "Response",
        "body": "200: PNG or JPEG image binary\n400: Invalid request (missing URL, invalid options)\n401: Missing or invalid API key\n409: IP already has an API key (on registration)\n429: Rate limit exceeded\n500: Internal error"
      },
      {
        "title": "Example with all options",
        "body": "curl -s -X POST https://snap.llm.kaveenk.com/api/screenshot \\\n  -H \"Authorization: Bearer snap_yourkey\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://example.com\",\n    \"format\": \"jpeg\",\n    \"full_page\": true,\n    \"width\": 1920,\n    \"height\": 1080,\n    \"dark_mode\": true,\n    \"wait_ms\": 2000,\n    \"block_ads\": true\n  }' \\\n  -o screenshot.jpg"
      },
      {
        "title": "Python example",
        "body": "import requests\n\nAPI = \"https://snap.llm.kaveenk.com\"\n\n# Register (one-time)\nr = requests.post(f\"{API}/api/register\", json={\"name\": \"my-agent\"})\nkey = r.json()[\"key\"]\n\n# Screenshot\nr = requests.post(f\"{API}/api/screenshot\",\n    headers={\"Authorization\": f\"Bearer {key}\"},\n    json={\"url\": \"https://example.com\", \"full_page\": True})\nwith open(\"shot.png\", \"wb\") as f:\n    f.write(r.content)"
      }
    ],
    "body": "SnapService — Screenshot as a Service\n\nFree screenshot API at https://snap.llm.kaveenk.com. POST a URL, get a PNG/JPEG back. Powered by headless Chromium.\n\nQuick Start (2 steps)\nStep 1: Register for an API key\ncurl -s -X POST https://snap.llm.kaveenk.com/api/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"my-agent\"}'\n\n\nResponse:\n\n{\"key\":\"snap_abc123...\",\"name\":\"my-agent\",\"limits\":{\"per_minute\":2,\"per_day\":200}}\n\n\nIMPORTANT: Store key securely. It cannot be recovered.\n\nEach IP address can only register one API key.\n\nStep 2: Take screenshots\ncurl -s -X POST https://snap.llm.kaveenk.com/api/screenshot \\\n  -H \"Authorization: Bearer snap_yourkey\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com\"}' \\\n  -o screenshot.png\n\n\nThat's it. Two steps.\n\nScreenshot Options\n\nAll options go in the POST body alongside url:\n\nOption\tType\tDefault\tDescription\nurl\tstring\trequired\tURL to screenshot\nformat\tstring\t\"png\"\t\"png\" or \"jpeg\"\nfull_page\tboolean\tfalse\tCapture entire scrollable page\nwidth\tinteger\t1280\tViewport width (pixels)\nheight\tinteger\t720\tViewport height (pixels)\ndark_mode\tboolean\tfalse\tEmulate dark color scheme\nselector\tstring\t—\tCSS selector to screenshot specific element\nwait_ms\tinteger\t0\tExtra wait time after page load (max 10000)\nscale\tnumber\t1\tDevice scale factor (1-3, for retina)\ncookies\tarray\t—\tArray of {name, value, domain} objects\nheaders\tobject\t—\tCustom HTTP headers\nblock_ads\tboolean\tfalse\tBlock common ad/tracker domains\nRate Limits\n2 screenshots per minute per key\n200 screenshots per day per key\n1 API key per IP address\nMax page height: 16384px (full-page mode)\nMax screenshot size: 10MB\nResponse\n200: PNG or JPEG image binary\n400: Invalid request (missing URL, invalid options)\n401: Missing or invalid API key\n409: IP already has an API key (on registration)\n429: Rate limit exceeded\n500: Internal error\nExample with all options\ncurl -s -X POST https://snap.llm.kaveenk.com/api/screenshot \\\n  -H \"Authorization: Bearer snap_yourkey\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://example.com\",\n    \"format\": \"jpeg\",\n    \"full_page\": true,\n    \"width\": 1920,\n    \"height\": 1080,\n    \"dark_mode\": true,\n    \"wait_ms\": 2000,\n    \"block_ads\": true\n  }' \\\n  -o screenshot.jpg\n\nPython example\nimport requests\n\nAPI = \"https://snap.llm.kaveenk.com\"\n\n# Register (one-time)\nr = requests.post(f\"{API}/api/register\", json={\"name\": \"my-agent\"})\nkey = r.json()[\"key\"]\n\n# Screenshot\nr = requests.post(f\"{API}/api/screenshot\",\n    headers={\"Authorization\": f\"Bearer {key}\"},\n    json={\"url\": \"https://example.com\", \"full_page\": True})\nwith open(\"shot.png\", \"wb\") as f:\n    f.write(r.content)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Kav-K/snap",
    "publisherUrl": "https://clawhub.ai/Kav-K/snap",
    "owner": "Kav-K",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/snap",
    "downloadUrl": "https://openagent3.xyz/downloads/snap",
    "agentUrl": "https://openagent3.xyz/skills/snap/agent",
    "manifestUrl": "https://openagent3.xyz/skills/snap/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/snap/agent.md"
  }
}