Mastodon Publisher
Publish content to Mastodon. Use when you need to share updates, posts, or media.
Usage
Post one or more statuses to Mastodon
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 |
|---|---|---|---|---|---|
status |
The text content of the status | string | "Hello, World" | yes^1 | N/A |
visibility |
Sets the visibility of the posted status | public or private or unlisted or direct |
"private" | no | "public" |
language |
ISO 639-1 language code for this status | ISO-639-1 Language Code | "en" | no | |
scheduledAt |
Datetime at which to schedule a status | RFC3339 date time | "2029-02-03T15:30:45.000Z" | no | |
quoteApprovalPolicy |
Sets who is allowed to quote the status | public or followrs or nobody |
"nobody" | no | "public |
media |
Media to be attached to the status | array of {file, description} objects |
{"file": "/path/to/foo.png", "description" : "Foo"} |
no^2 |
- ^1
statuscan be ommitted when one or--media-pathparameters are present - ^2 one or
mediaobjects must be present ifstatusis ommitted - ^2
media.descriptionis optional
Environment Variables
| Name | Description | Example |
|---|---|---|
MASTODON_URL |
Your Mastodon instance URL | https://mastodon.social |
MASTODON_ACCESS_TOKEN |
Your Mastodon access token | xAyBzC |
Examples
- 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
Notes
- Requires
bunto be installed and available in the PATH.