{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tg-media-resolve",
    "name": "Telegram Media Resolver",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/kurinzo/tg-media-resolve",
    "canonicalUrl": "https://clawhub.ai/kurinzo/tg-media-resolve",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tg-media-resolve",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tg-media-resolve",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/fetch_media.py"
    ],
    "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",
      "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/tg-media-resolve"
    },
    "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/tg-media-resolve",
    "agentPageUrl": "https://openagent3.xyz/skills/tg-media-resolve/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tg-media-resolve/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tg-media-resolve/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": "Telegram Media Resolver",
        "body": "Resolves <media:*> placeholders from Telegram messages into downloadable files."
      },
      {
        "title": "When to use",
        "body": "When you see <media:image>, <media:document>, <media:video>, <media:sticker>, <media:voice>, or <media:animation> in a Telegram message (especially in reply-quoted context or group history) and need to actually see/analyze the content."
      },
      {
        "title": "How it works",
        "body": "Temporarily forwards the target message via Bot API to get file metadata\nDownloads the file from Telegram servers\nDeletes the forwarded copy (cleanup)\nReturns local file path for use with image tool or exec"
      },
      {
        "title": "Usage",
        "body": "python3 scripts/fetch_media.py \\\n  --bot-token \"$BOT_TOKEN\" \\\n  --chat-id CHAT_ID \\\n  --message-id MESSAGE_ID \\\n  [--out /tmp] \\\n  [--forward-to SELF_CHAT_ID]"
      },
      {
        "title": "Parameters",
        "body": "--bot-token — Telegram Bot API token (read from OpenClaw config: channels.telegram.botToken)\n--chat-id — Chat where the message lives (from message context, e.g. -1001234567890)\n--message-id — ID of the message containing media (from [id:XXXXX] in message context)\n--out — Output directory (default: /tmp)\n--forward-to — Chat ID for temporary forward (default: same as --chat-id). Use bot owner's DM chat ID to avoid visible forwards in groups."
      },
      {
        "title": "Extracting parameters from message context",
        "body": "OpenClaw formats Telegram messages like:\n\n[Telegram GroupName id:CHAT_ID topic:N ...] User (USER_ID): <media:image> [id:MSG_ID chat:CHAT_ID]\n\nExtract CHAT_ID and MSG_ID from this format."
      },
      {
        "title": "Workflow",
        "body": "Extract chat_id and message_id from the message context\nRead bot token: cat ~/.openclaw/openclaw.json | python3 -c \"import sys,json; print(json.load(sys.stdin)['channels']['telegram']['botToken'])\"\nRun fetch script\nUse returned file path with image tool for vision analysis"
      },
      {
        "title": "Supported media types",
        "body": "Photos, documents, videos, animations (GIFs), stickers, voice messages, video notes, audio files."
      },
      {
        "title": "Limitations",
        "body": "Bot must be a member of the chat containing the target message\nFiles over 20MB cannot be downloaded via Bot API\nThe temporary forward may briefly appear in the forward-to chat before deletion\nUse --forward-to with a private chat (e.g. bot owner's DM) to avoid visible forwards in group chats"
      }
    ],
    "body": "Telegram Media Resolver\n\nResolves <media:*> placeholders from Telegram messages into downloadable files.\n\nWhen to use\n\nWhen you see <media:image>, <media:document>, <media:video>, <media:sticker>, <media:voice>, or <media:animation> in a Telegram message (especially in reply-quoted context or group history) and need to actually see/analyze the content.\n\nHow it works\nTemporarily forwards the target message via Bot API to get file metadata\nDownloads the file from Telegram servers\nDeletes the forwarded copy (cleanup)\nReturns local file path for use with image tool or exec\nUsage\npython3 scripts/fetch_media.py \\\n  --bot-token \"$BOT_TOKEN\" \\\n  --chat-id CHAT_ID \\\n  --message-id MESSAGE_ID \\\n  [--out /tmp] \\\n  [--forward-to SELF_CHAT_ID]\n\nParameters\n--bot-token — Telegram Bot API token (read from OpenClaw config: channels.telegram.botToken)\n--chat-id — Chat where the message lives (from message context, e.g. -1001234567890)\n--message-id — ID of the message containing media (from [id:XXXXX] in message context)\n--out — Output directory (default: /tmp)\n--forward-to — Chat ID for temporary forward (default: same as --chat-id). Use bot owner's DM chat ID to avoid visible forwards in groups.\nExtracting parameters from message context\n\nOpenClaw formats Telegram messages like:\n\n[Telegram GroupName id:CHAT_ID topic:N ...] User (USER_ID): <media:image> [id:MSG_ID chat:CHAT_ID]\n\n\nExtract CHAT_ID and MSG_ID from this format.\n\nWorkflow\nExtract chat_id and message_id from the message context\nRead bot token: cat ~/.openclaw/openclaw.json | python3 -c \"import sys,json; print(json.load(sys.stdin)['channels']['telegram']['botToken'])\"\nRun fetch script\nUse returned file path with image tool for vision analysis\nSupported media types\n\nPhotos, documents, videos, animations (GIFs), stickers, voice messages, video notes, audio files.\n\nLimitations\nBot must be a member of the chat containing the target message\nFiles over 20MB cannot be downloaded via Bot API\nThe temporary forward may briefly appear in the forward-to chat before deletion\nUse --forward-to with a private chat (e.g. bot owner's DM) to avoid visible forwards in group chats"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/kurinzo/tg-media-resolve",
    "publisherUrl": "https://clawhub.ai/kurinzo/tg-media-resolve",
    "owner": "kurinzo",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tg-media-resolve",
    "downloadUrl": "https://openagent3.xyz/downloads/tg-media-resolve",
    "agentUrl": "https://openagent3.xyz/skills/tg-media-resolve/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tg-media-resolve/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tg-media-resolve/agent.md"
  }
}