Skip to content
Back to skills

Tootbot

ASecurity

Publish content to Mastodon. Use when you need to post a Mastodon status.

  • 10 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 30, 2026
content-marketinggobash

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned May 30, 2026

npx -y skills add Demerzels-lab/elsamultiskillagent --skill tootbot --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tootbot?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tootbot
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/demerzels-lab-tootbot/badge)](https://www.skillsdirectory.com/skills/demerzels-lab-tootbot)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mastodon-publisher
description: Publish content to Mastodon. Use when you need to post a Mastodon status.
author: Behrang Saeedzadeh
version: 0.5.0
triggers:
  - "post to mastodon"
  - "publish status to mastodon"
metadata: { "clawdbot": { "emoji": "🐘" }, "requires": { "bins": ["bun"] } }
---

# 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:

```bash
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 `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

| 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**

  ```bash
  bun {baseDir}/scripts/tootbot.js '{"status": "Hello, Mastodon"}'
  ```

  Read the output and summarize it for the user.

- **Post a scheduled status**

  ```bash
  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**

  ```bash
  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**

  ```bash
  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**

  ```bash
  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 `bun` to be installed and available in the PATH.

Files in this skill

  • README.md4.5 KB
  • SKILL.md4.5 KB
  • _meta.json451 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.