Tootbot
Publish content to Mastodon. Use when you need to post a Mastodon status.
Publish content to Mastodon. Use when you need to post a Mastodon status.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Publish content to Mastodon. Use when you need to share updates, posts, or media.
Post a new status to Mastodon with Bun:
bun {baseDir}/scripts/tootbot.js '{"status": "Hello, Mastodon!"}' '{"status": "Goodby, Mastodon!"}'
JSON fields
| Name | Description | Type | Example | Required | Default |
|---|---|---|---|---|---|
| The text content of the status | string | "Hello, World" | yes^1 | N/A |
| Sets the visibility of the posted status | or or or | "private" | no | "public" |
| ISO 639-1 language code for this status | ISO-639-1 Language Code | "en" | no | |
| Datetime at which to schedule a status | RFC3339 date time | "2029-02-03T15:30:45.000Z" | no | |
| Sets who is allowed to quote the status | or or | "nobody" | no | "public |
| Media to be attached to the status | array of objects | | no^2 |
status can be ommitted when one or --media-path parameters are presentmedia objects must be present if status is ommittedmedia.description is optionalEnvironment Variables
| Name | Description | Example |
|---|---|---|
| Your Mastodon instance URL | |
| Your Mastodon access token | |
Post a new status
bun {baseDir}/scripts/tootbot.js '{"status": "Hello, Mastodon"}'
Read the output and summarize it for the user.
Post a scheduled status
bun {baseDir}/scripts/tootbot.js '{"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
bun {baseDir}/scripts/tootbot.js <<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
bun {baseDir}/scripts/tootbot.js <<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
bun {baseDir}/scripts/tootbot.js <<EOF { "media" : [ { "file" : "/path/to/flower-1.png", "description" : "White Rose" }, { "file" : "/path/to/flower-2.png", "description" : "Red Rose" } ] } EOF
bun to be installed and available in the PATH.No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.