{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tootbot",
    "name": "Tootbot",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/behrangsa/tootbot",
    "canonicalUrl": "https://clawhub.ai/behrangsa/tootbot",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tootbot",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tootbot",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "README.md",
      "scripts/tootbot.js"
    ],
    "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/tootbot"
    },
    "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/tootbot",
    "agentPageUrl": "https://openagent3.xyz/skills/tootbot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tootbot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tootbot/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": "Mastodon Publisher",
        "body": "Publish content to Mastodon. Use when you need to share updates, posts, or media."
      },
      {
        "title": "Post one or more statuses to Mastodon",
        "body": "Post a new status to Mastodon with Bun:\n\nbun {baseDir}/scripts/tootbot.js '{\"status\": \"Hello, Mastodon!\"}' '{\"status\": \"Goodby, Mastodon!\"}'\n\nJSON fields\n\nNameDescriptionTypeExampleRequiredDefaultstatusThe text content of the statusstring\"Hello, World\"yes^1N/AvisibilitySets the visibility of the posted statuspublic or private or unlisted or direct\"private\"no\"public\"languageISO 639-1 language code for this statusISO-639-1 Language Code\"en\"noscheduledAtDatetime at which to schedule a statusRFC3339 date time\"2029-02-03T15:30:45.000Z\"noquoteApprovalPolicySets who is allowed to quote the statuspublic or followrs or nobody\"nobody\"no\"publicmediaMedia to be attached to the statusarray of {file, description} objects{\"file\": \"/path/to/foo.png\", \"description\" : \"Foo\"}no^2\n\n^1 status can be ommitted when one or --media-path parameters are present\n^2 one or media objects must be present if status is ommitted\n^2 media.description is optional\n\nEnvironment Variables\n\nNameDescriptionExampleMASTODON_URLYour Mastodon instance URLhttps://mastodon.socialMASTODON_ACCESS_TOKENYour Mastodon access tokenxAyBzC"
      },
      {
        "title": "Examples",
        "body": "Post a new status\nbun {baseDir}/scripts/tootbot.js '{\"status\": \"Hello, Mastodon\"}'\n\nRead the output and summarize it for the user.\n\n\nPost a scheduled status\nbun {baseDir}/scripts/tootbot.js '{\"status\": \"Hello, future!\", \"scheduledAt\" : \"2030-02-05T13:21:34.000Z\"}'\n\nRead the output and summarize it for the user.\n\n\nPost a scheduled status with visibility, language, quote approval policy, and a single media attachment\nbun {baseDir}/scripts/tootbot.js <<EOF\n{\n  \"status\" : \"Dorood\",\n  \"visibility\" : \"public\",\n  \"language\" : \"fa\",\n  \"scheduledAt\" : \"2029-02-03T15:30:45.123456789+03:30\",\n  \"quoteApprovalPolicy\" : \"followers\",\n  \"media\" : [\n    {\n      \"file\" : \"/path/to/media.png\",\n      \"description\" : \"Nowrooz Pirooz\"\n    }\n  ]\n}\nEOF\n\nRead the output and summarize it for the user.\n\n\nPost a new status with media multiple attachments\nbun {baseDir}/scripts/tootbot.js <<EOF\n{\n  \"status\" : \"Edsger W Dijkstra\",\n  \"visibility\" : \"public\",\n  \"language\" : \"fa\",\n  \"scheduledAt\" : \"2029-02-03T15:30:45.123456789+03:30\",\n  \"quoteApprovalPolicy\" : \"followers\",\n  \"media\" : [\n    {\n      \"file\" : \"/path/to/dijkstra.png\",\n      \"description\" : \"Portrait\"\n    },\n    {\n      \"file\" : \"/path/to/signature.png\",\n      \"description\" : \"Signature\"\n    }\n  ]\n}\nEOF\n\n\n\nPost a new status with media attachments and no status text\nbun {baseDir}/scripts/tootbot.js <<EOF\n{\n  \"media\" : [\n    {\n      \"file\" : \"/path/to/flower-1.png\",\n      \"description\" : \"White Rose\"\n    },\n    {\n      \"file\" : \"/path/to/flower-2.png\",\n      \"description\" : \"Red Rose\"\n    }\n  ]\n}\nEOF"
      },
      {
        "title": "Notes",
        "body": "Requires bun to be installed and available in the PATH."
      }
    ],
    "body": "Mastodon Publisher\n\nPublish content to Mastodon. Use when you need to share updates, posts, or media.\n\nUsage\nPost one or more statuses to Mastodon\n\nPost a new status to Mastodon with Bun:\n\nbun {baseDir}/scripts/tootbot.js '{\"status\": \"Hello, Mastodon!\"}' '{\"status\": \"Goodby, Mastodon!\"}'\n\n\nJSON fields\n\nName\tDescription\tType\tExample\tRequired\tDefault\nstatus\tThe text content of the status\tstring\t\"Hello, World\"\tyes^1\tN/A\nvisibility\tSets the visibility of the posted status\tpublic or private or unlisted or direct\t\"private\"\tno\t\"public\"\nlanguage\tISO 639-1 language code for this status\tISO-639-1 Language Code\t\"en\"\tno\t\nscheduledAt\tDatetime at which to schedule a status\tRFC3339 date time\t\"2029-02-03T15:30:45.000Z\"\tno\t\nquoteApprovalPolicy\tSets who is allowed to quote the status\tpublic or followrs or nobody\t\"nobody\"\tno\t\"public\nmedia\tMedia to be attached to the status\tarray of {file, description} objects\t{\"file\": \"/path/to/foo.png\", \"description\" : \"Foo\"}\tno^2\t\n^1 status can be ommitted when one or --media-path parameters are present\n^2 one or media objects must be present if status is ommitted\n^2 media.description is optional\n\nEnvironment Variables\n\nName\tDescription\tExample\nMASTODON_URL\tYour Mastodon instance URL\thttps://mastodon.social\nMASTODON_ACCESS_TOKEN\tYour Mastodon access token\txAyBzC\nExamples\n\nPost a new status\n\nbun {baseDir}/scripts/tootbot.js '{\"status\": \"Hello, Mastodon\"}'\n\n\nRead the output and summarize it for the user.\n\nPost a scheduled status\n\nbun {baseDir}/scripts/tootbot.js '{\"status\": \"Hello, future!\", \"scheduledAt\" : \"2030-02-05T13:21:34.000Z\"}'\n\n\nRead the output and summarize it for the user.\n\nPost a scheduled status with visibility, language, quote approval policy, and a single media attachment\n\nbun {baseDir}/scripts/tootbot.js <<EOF\n{\n  \"status\" : \"Dorood\",\n  \"visibility\" : \"public\",\n  \"language\" : \"fa\",\n  \"scheduledAt\" : \"2029-02-03T15:30:45.123456789+03:30\",\n  \"quoteApprovalPolicy\" : \"followers\",\n  \"media\" : [\n    {\n      \"file\" : \"/path/to/media.png\",\n      \"description\" : \"Nowrooz Pirooz\"\n    }\n  ]\n}\nEOF\n\n\nRead the output and summarize it for the user.\n\nPost a new status with media multiple attachments\n\nbun {baseDir}/scripts/tootbot.js <<EOF\n{\n  \"status\" : \"Edsger W Dijkstra\",\n  \"visibility\" : \"public\",\n  \"language\" : \"fa\",\n  \"scheduledAt\" : \"2029-02-03T15:30:45.123456789+03:30\",\n  \"quoteApprovalPolicy\" : \"followers\",\n  \"media\" : [\n    {\n      \"file\" : \"/path/to/dijkstra.png\",\n      \"description\" : \"Portrait\"\n    },\n    {\n      \"file\" : \"/path/to/signature.png\",\n      \"description\" : \"Signature\"\n    }\n  ]\n}\nEOF\n\n\nPost a new status with media attachments and no status text\n\nbun {baseDir}/scripts/tootbot.js <<EOF\n{\n  \"media\" : [\n    {\n      \"file\" : \"/path/to/flower-1.png\",\n      \"description\" : \"White Rose\"\n    },\n    {\n      \"file\" : \"/path/to/flower-2.png\",\n      \"description\" : \"Red Rose\"\n    }\n  ]\n}\nEOF\n\nNotes\nRequires bun to be installed and available in the PATH."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/behrangsa/tootbot",
    "publisherUrl": "https://clawhub.ai/behrangsa/tootbot",
    "owner": "behrangsa",
    "version": "0.5.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tootbot",
    "downloadUrl": "https://openagent3.xyz/downloads/tootbot",
    "agentUrl": "https://openagent3.xyz/skills/tootbot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tootbot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tootbot/agent.md"
  }
}