{
  "schemaVersion": "1.0",
  "item": {
    "slug": "scrask-bot",
    "name": "Scrask",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/devsandip/scrask-bot",
    "canonicalUrl": "https://clawhub.ai/devsandip/scrask-bot",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/scrask-bot",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=scrask-bot",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scrask_bot.py",
      "requirements.txt",
      "README.md",
      "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. 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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/scrask-bot"
    },
    "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/scrask-bot",
    "agentPageUrl": "https://openagent3.xyz/skills/scrask-bot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/scrask-bot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/scrask-bot/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": "Overview",
        "body": "This skill activates when the user sends a screenshot via Telegram.\nIt uses vision AI to extract actionable information from the image, then:\n\nHigh confidence (≥ 0.75): Saves immediately and replies with a brief confirmation.\nLow confidence (< 0.75): Shows a structured preview in Telegram and asks for confirmation before saving.\n\nProvider behaviour (auto mode, default):\n\nStepWhat happens1Gemini 2.0 Flash parses the screenshot (fast, cheap)2If any item confidence < 0.60, Claude Opus reruns the parse3Whichever provider scores higher average confidence wins4Output includes provider, fallback_triggered, and confidence delta\n\nSet vision_provider to \"claude\" or \"gemini\" to lock a specific provider.\n\nOutput destinations (AI-decided by content type):\n\nDetected typeDestinationEvent (has date+time, venue, or invite link)Google CalendarReminder (deadline, due date, personal action)Google Tasks (with due date)Task (no date, pure action item)Google Tasks (no due date)"
      },
      {
        "title": "Trigger Conditions",
        "body": "Activate when:\n\nThe user sends a message in Telegram that contains an image attachment\nThe image appears to be a screenshot — not a photo of a person, place, or physical object\nNo other skill has already claimed the image\n\nDo not activate for:\n\nPhotos of people, places, food, scenery\nScreenshots of code, errors, or UI bugs (leave for other skills)\nImages the user explicitly asks to edit, describe, or analyze for another purpose"
      },
      {
        "title": "Step 1: Acknowledge Immediately",
        "body": "Reply in Telegram right away so the user knows the skill is working:\n\n\"📸 Got it — analyzing your screenshot...\"\n\nDo not make the user wait silently."
      },
      {
        "title": "Step 2: Run the Parser",
        "body": "python3 ~/.openclaw/skills/scrask-bot/scripts/scrask_bot.py \\\n  --image-path \"<path-to-temp-image>\" \\\n  --provider \"$CONFIG_VISION_PROVIDER\" \\\n  --timezone \"$CONFIG_TIMEZONE\" \\\n  --google-credentials \"$GOOGLE_CREDENTIALS\"\n\nThe script auto-resolves the API key from ANTHROPIC_API_KEY or GEMINI_API_KEY\ndepending on the provider — no need to pass it explicitly.\n\nThe script returns a JSON object with:\n\nsuccess — whether parsing worked\nno_actionable_content — true if nothing found\nresults[] — one entry per detected item, each with confidence, type, destination, needs_confirmation, action_taken\ntelegram_reply — the pre-formatted message to send back to the user"
      },
      {
        "title": "Step 3: Handle the Output",
        "body": "If no_actionable_content is true:\nReply: \"🤷 I couldn't find any event, reminder, or task info in that screenshot. Could you describe what you'd like to add?\"\n\nIf success is true:\nSend the telegram_reply value directly back to the user in Telegram. The script has already:\n\nSaved high-confidence items silently\nFormatted confirmation prompts for low-confidence items\n\nDo not rephrase or reformat the telegram_reply — send it as-is."
      },
      {
        "title": "Step 4: Handle Confirmation Responses",
        "body": "If the script returned items with needs_confirmation: true, wait for the user's reply.\n\n\"yes\" or \"save\" or \"add\":\nRe-run the script for that specific item with confirmed=true, or use the calendar_create / tasks_create tools directly with the extracted fields.\n\n\"edit\":\nAsk what to change, update the relevant field, then save.\n\n\"skip\" or \"no\":\nReply: \"Got it, skipped ✓\""
      },
      {
        "title": "Step 5: Confirm Saves",
        "body": "For items saved silently (high confidence), the telegram_reply from the script already contains the confirmation message. Examples of what the user will see:\n\n📅 Added to Calendar: **Team Standup** — 2026-03-01 at 09:00\n🔔 Added to Tasks: **Pay electricity bill** (due 2026-02-28)\n✅ Added to Tasks: **Review PR for Arjun**"
      },
      {
        "title": "Edge Cases",
        "body": "ScenarioBehaviorScreenshot is in Hindi, Tamil, or another languageExtract and translate silently; save title in EnglishRecurring event (\"every Monday\")Set RRULE on the calendar event; mention it in the replyDate has already passedFlag in the reply: \"⚠️ This date has already passed (Feb 10). Save anyway?\"Multiple items in one screenshotProcess each independently; confirm per item if neededScreenshot of someone's calendarDetect already_in_calendar_hint; reply: \"Looks like this event is already in your calendar 🗓️\"Google API auth failureReply with the specific error and suggest re-checking GOOGLE_CREDENTIALSZoom/Meet link foundAdd to Calendar as both location and description"
      },
      {
        "title": "Configuration",
        "body": "{\n  \"skills\": {\n    \"entries\": {\n      \"scrask-bot\": {\n        \"enabled\": true,\n        \"env\": {\n          \"GEMINI_API_KEY\": \"AIza-your-gemini-key\",\n          \"ANTHROPIC_API_KEY\": \"sk-ant-your-key-here\",\n          \"GOOGLE_CREDENTIALS\": \"/home/user/.openclaw/google-creds.json\"\n        },\n        \"config\": {\n          \"vision_provider\": \"auto\",\n          \"fallback_threshold\": 0.60,\n          \"timezone\": \"Asia/Kolkata\",\n          \"confidence_threshold\": 0.75,\n          \"reminder_minutes_before\": 30\n        }\n      }\n    }\n  }\n}"
      },
      {
        "title": "Permissions Required",
        "body": "image:read — to access the screenshot from Telegram\nnetwork:outbound — to call Anthropic API and Google APIs\ntelegram:reply — to send confirmation messages back to the user"
      }
    ],
    "body": "Scrask Bot\nOverview\n\nThis skill activates when the user sends a screenshot via Telegram. It uses vision AI to extract actionable information from the image, then:\n\nHigh confidence (≥ 0.75): Saves immediately and replies with a brief confirmation.\nLow confidence (< 0.75): Shows a structured preview in Telegram and asks for confirmation before saving.\n\nProvider behaviour (auto mode, default):\n\nStep\tWhat happens\n1\tGemini 2.0 Flash parses the screenshot (fast, cheap)\n2\tIf any item confidence < 0.60, Claude Opus reruns the parse\n3\tWhichever provider scores higher average confidence wins\n4\tOutput includes provider, fallback_triggered, and confidence delta\n\nSet vision_provider to \"claude\" or \"gemini\" to lock a specific provider.\n\nOutput destinations (AI-decided by content type):\n\nDetected type\tDestination\nEvent (has date+time, venue, or invite link)\tGoogle Calendar\nReminder (deadline, due date, personal action)\tGoogle Tasks (with due date)\nTask (no date, pure action item)\tGoogle Tasks (no due date)\nTrigger Conditions\n\nActivate when:\n\nThe user sends a message in Telegram that contains an image attachment\nThe image appears to be a screenshot — not a photo of a person, place, or physical object\nNo other skill has already claimed the image\n\nDo not activate for:\n\nPhotos of people, places, food, scenery\nScreenshots of code, errors, or UI bugs (leave for other skills)\nImages the user explicitly asks to edit, describe, or analyze for another purpose\nStep-by-Step Instructions\nStep 1: Acknowledge Immediately\n\nReply in Telegram right away so the user knows the skill is working:\n\n\"📸 Got it — analyzing your screenshot...\"\n\nDo not make the user wait silently.\n\nStep 2: Run the Parser\npython3 ~/.openclaw/skills/scrask-bot/scripts/scrask_bot.py \\\n  --image-path \"<path-to-temp-image>\" \\\n  --provider \"$CONFIG_VISION_PROVIDER\" \\\n  --timezone \"$CONFIG_TIMEZONE\" \\\n  --google-credentials \"$GOOGLE_CREDENTIALS\"\n\nThe script auto-resolves the API key from ANTHROPIC_API_KEY or GEMINI_API_KEY\ndepending on the provider — no need to pass it explicitly.\n\n\nThe script returns a JSON object with:\n\nsuccess — whether parsing worked\nno_actionable_content — true if nothing found\nresults[] — one entry per detected item, each with confidence, type, destination, needs_confirmation, action_taken\ntelegram_reply — the pre-formatted message to send back to the user\nStep 3: Handle the Output\n\nIf no_actionable_content is true: Reply: \"🤷 I couldn't find any event, reminder, or task info in that screenshot. Could you describe what you'd like to add?\"\n\nIf success is true: Send the telegram_reply value directly back to the user in Telegram. The script has already:\n\nSaved high-confidence items silently\nFormatted confirmation prompts for low-confidence items\n\nDo not rephrase or reformat the telegram_reply — send it as-is.\n\nStep 4: Handle Confirmation Responses\n\nIf the script returned items with needs_confirmation: true, wait for the user's reply.\n\n\"yes\" or \"save\" or \"add\": Re-run the script for that specific item with confirmed=true, or use the calendar_create / tasks_create tools directly with the extracted fields.\n\n\"edit\": Ask what to change, update the relevant field, then save.\n\n\"skip\" or \"no\": Reply: \"Got it, skipped ✓\"\n\nStep 5: Confirm Saves\n\nFor items saved silently (high confidence), the telegram_reply from the script already contains the confirmation message. Examples of what the user will see:\n\n📅 Added to Calendar: **Team Standup** — 2026-03-01 at 09:00\n🔔 Added to Tasks: **Pay electricity bill** (due 2026-02-28)\n✅ Added to Tasks: **Review PR for Arjun**\nEdge Cases\nScenario\tBehavior\nScreenshot is in Hindi, Tamil, or another language\tExtract and translate silently; save title in English\nRecurring event (\"every Monday\")\tSet RRULE on the calendar event; mention it in the reply\nDate has already passed\tFlag in the reply: \"⚠️ This date has already passed (Feb 10). Save anyway?\"\nMultiple items in one screenshot\tProcess each independently; confirm per item if needed\nScreenshot of someone's calendar\tDetect already_in_calendar_hint; reply: \"Looks like this event is already in your calendar 🗓️\"\nGoogle API auth failure\tReply with the specific error and suggest re-checking GOOGLE_CREDENTIALS\nZoom/Meet link found\tAdd to Calendar as both location and description\nConfiguration\n{\n  \"skills\": {\n    \"entries\": {\n      \"scrask-bot\": {\n        \"enabled\": true,\n        \"env\": {\n          \"GEMINI_API_KEY\": \"AIza-your-gemini-key\",\n          \"ANTHROPIC_API_KEY\": \"sk-ant-your-key-here\",\n          \"GOOGLE_CREDENTIALS\": \"/home/user/.openclaw/google-creds.json\"\n        },\n        \"config\": {\n          \"vision_provider\": \"auto\",\n          \"fallback_threshold\": 0.60,\n          \"timezone\": \"Asia/Kolkata\",\n          \"confidence_threshold\": 0.75,\n          \"reminder_minutes_before\": 30\n        }\n      }\n    }\n  }\n}\n\nPermissions Required\nimage:read — to access the screenshot from Telegram\nnetwork:outbound — to call Anthropic API and Google APIs\ntelegram:reply — to send confirmation messages back to the user"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/devsandip/scrask-bot",
    "publisherUrl": "https://clawhub.ai/devsandip/scrask-bot",
    "owner": "devsandip",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/scrask-bot",
    "downloadUrl": "https://openagent3.xyz/downloads/scrask-bot",
    "agentUrl": "https://openagent3.xyz/skills/scrask-bot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/scrask-bot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/scrask-bot/agent.md"
  }
}