mastodon-publisher

Review·Scanned 2/17/2026

This skill publishes statuses to Mastodon. It instructs executing bun {baseDir}/scripts/tootbot.js and requires MASTODON_URL and MASTODON_ACCESS_TOKEN, enabling network access to https://mastodon.social.

from clawhub.ai·v0.5.0·493.5 KB·0 installs
Scanned from 0.5.0 at addaaa2 · Transparency log ↗
$ vett add clawhub.ai/behrangsa/mastodon-publisherReview findings below

Toobot Skill

Mastodon publisher skill for Clawdbot.

Compatible with Claude Code skills.

Installation

bunx clawdhub@latest install tootbot

Configuration

Set these environment variables:

  • MASTODON_URL - Your Mastodon instance URL (e.g., https://mastodon.social)
  • MASTODON_ACCESS_TOKEN - Your Mastodon access token

Usage

Post one or more statuses to Mastodon

Post a new status to Mastodon with Bun:

bunx @nutthead/tootbot '{"status": "Hello, Mastodon!"}' '{"status": "Goodby, Mastodon!"}'

JSON fields

NameDescriptionTypeExampleRequiredDefault
statusThe text content of the statusstring"Hello, World"yes^1N/A
visibilitySets 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"no
scheduledAtDatetime at which to schedule a statusRFC3339 date time"2029-02-03T15:30:45.000Z"no
quoteApprovalPolicySets who is allowed to quote the statuspublic or followrs or nobody"nobody"no"public
mediaMedia to be attached to the statusarray of {file, description} objects{"file": "/path/to/foo.png", "description" : "Foo"}no^2
  • ^1 status can be ommitted when one or --media-path parameters are present
  • ^2 one or media objects must be present if status is ommitted
  • ^2 media.description is optional

Environment Variables

NameDescriptionExample
MASTODON_URLYour Mastodon instance URLhttps://mastodon.social
MASTODON_ACCESS_TOKENYour Mastodon access tokenxAyBzC

Examples

  • Post a new status

    bunx @nutthead/tootbot '{"status": "Hello, Mastodon"}'
    

    Read the output and summarize it for the user.

  • Post a scheduled status

    bunx @nutthead/tootbot '{"status": "Hello, future!", "scheduledAt" : "2030-02-05T13:21:34.000Z"}'
    

    Read the output and summarize it for the user.

  • Post a scheduled status with visibility, language, quote approval policy, and a single media attachment

    bunx @nutthead/tootbot <<EOF
    {
      "status" : "Dorood",
      "visibility" : "public",
      "language" : "fa",
      "scheduledAt" : "2029-02-03T15:30:45.123456789+03:30",
      "quoteApprovalPolicy" : "followers",
      "media" : [
        {
          "file" : "/path/to/media.png",
          "description" : "Nowrooz Pirooz"
        }
      ]
    }
    EOF
    

    Read the output and summarize it for the user.

  • Post a new status with media multiple attachments

    bunx @nutthead/tootbot <<EOF
    {
      "status" : "Edsger W Dijkstra",
      "visibility" : "public",
      "language" : "fa",
      "scheduledAt" : "2029-02-03T15:30:45.123456789+03:30",
      "quoteApprovalPolicy" : "followers",
      "media" : [
        {
          "file" : "/path/to/dijkstra.png",
          "description" : "Portrait"
        },
        {
          "file" : "/path/to/signature.png",
          "description" : "Signature"
        }
      ]
    }
    EOF
    
  • Post a new status with media attachments and no status text

    bunx @nutthead/tootbot <<EOF
    {
      "media" : [
        {
          "file" : "/path/to/flower-1.png",
          "description" : "White Rose"
        },
        {
          "file" : "/path/to/flower-2.png",
          "description" : "Red Rose"
        }
      ]
    }
    EOF
    

Links