skills$openclaw/mixpost
lao9s4.2k

by lao9s

mixpost – OpenClaw Skill

mixpost is an OpenClaw Skills integration for coding workflows. Mixpost is a self-hosted social media management software that helps you schedule and manage your social media content across multiple platforms including Facebook, Twitter/X, Instagram, LinkedIn, Pinterest, TikTok, YouTube, Mastodon, Google Business Profile, Threads, Bluesky, and more.

4.2k stars8.4k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namemixpost
descriptionMixpost is a self-hosted social media management software that helps you schedule and manage your social media content across multiple platforms including Facebook, Twitter/X, Instagram, LinkedIn, Pinterest, TikTok, YouTube, Mastodon, Google Business Profile, Threads, Bluesky, and more. OpenClaw Skills integration.
ownerlao9s
repositorylao9s/mixpost
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @lao9s/mixpost
last updatedFeb 7, 2026

Maintainer

lao9s

lao9s

Maintains mixpost in the OpenClaw Skills directory.

View GitHub profile
File Explorer
2 files
.
_meta.json
265 B
SKILL.md
10.0 KB
SKILL.md

name: mixpost description: Mixpost is a self-hosted social media management software that helps you schedule and manage your social media content across multiple platforms including Facebook, Twitter/X, Instagram, LinkedIn, Pinterest, TikTok, YouTube, Mastodon, Google Business Profile, Threads, Bluesky, and more. homepage: https://mixpost.app metadata: {"openclaw":{"emoji":"🗓️","primaryEnv":"MIXPOST_ACCESS_TOKEN","requires":{"env":["MIXPOST_URL","MIXPOST_ACCESS_TOKEN","MIXPOST_WORKSPACE_UUID"]}}}

Mixpost Skill

Mixpost is a self-hosted social media management software that helps you schedule and manage your social media content across multiple platforms including Facebook, Twitter/X, Instagram, LinkedIn, Pinterest, TikTok, YouTube, Mastodon, Google Business Profile, Threads, Bluesky, and more.

Setup

  1. Navigate to your Mixpost dashboard
  2. Click on Access Tokens from the user menu
  3. Click Create to generate a new token
  4. Get your workspace UUID: Go to Social Accounts page, click the 3 dots menu on any account, and copy the workspace UUID
  5. Set environment variables:
    export MIXPOST_URL="https://your-mixpost-instance.com/mixpost"
    export MIXPOST_ACCESS_TOKEN="your-access-token"
    export MIXPOST_WORKSPACE_UUID="your-workspace-uuid"
    

Test Connection

curl -X GET "$MIXPOST_URL/api/ping" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Accounts

Get all accounts

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/accounts" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Get a specific account

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/accounts/:accountUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Media

Get all media

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/media?limit=50" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Get a specific media file

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/media/:mediaUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Upload media (form-data)

curl -X POST "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/media" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json" \
  -F "file=@/path/to/your/file.png"

Update media

curl -X PUT "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/media/:mediaUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "alt_text": "Alternative text for accessibility"
  }'

Delete media

curl -X DELETE "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/media" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "items": ["media-id-1", "media-id-2"]
  }'

Tags

Get all tags

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/tags" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Get a specific tag

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/tags/:tagUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Create a tag

curl -X POST "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/tags" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "Marketing",
    "hex_color": "#FF5733"
  }'

Update a tag

curl -X PUT "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/tags/:tagUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "name": "Updated Tag Name",
    "hex_color": "#00FF00"
  }'

Delete a tag

curl -X DELETE "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/tags/:tagUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Posts

Get all posts

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts?limit=50&status=scheduled&page=1" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Query Parameters:

  • limit (number, default: 50): Results per page
  • status: draft, scheduled, published, failed, needs_approval, trash
  • keyword (string): Search posts by content
  • accounts (array): Filter by account IDs
  • tags (array): Filter by tag names
  • page (number): Page number for pagination

Get a specific post

curl -X GET "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts/:postUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Create a post

curl -X POST "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "schedule": true,
    "date": "2024-12-25",
    "time": "10:00",
    "timezone": "America/New_York",
    "accounts": [1, 2],
    "tags": [1],
    "versions": [
      {
        "account_id": 0,
        "is_original": true,
        "content": [
          {
            "body": "Hello from Mixpost API!",
            "media": [1, 2],
            "url": "https://example.com"
          }
        ],
        "options": {}
      }
    ]
  }'

Post Options:

  • schedule: Set to true to schedule for specific date/time
  • schedule_now: Set to true to publish immediately
  • queue: Set to true to add to publishing queue
  • If none are set, post is saved as draft

Platform-specific options:

{
  "options": {
    "facebook_page": {
      "type": "post" // post, reel, story
    },
    "instagram": {
      "type": "post" // post, reel, story
    },
    "linkedin": {
      "visibility": "PUBLIC" // PUBLIC, CONNECTIONS
    },
    "mastodon": {
      "sensitive": false // boolean
    },
    "pinterest": {
      "link": null, // null | string
      "title": "", // string
      "boards": {
        "account-1": "971672010430333260" // The key `account-*` is the ID of your Pinterest account
      }
    },
    "youtube": {
      "title": null, // null | string
      "status": "public" // public, private, unlisted
    },
    "gbp": { // Google Business Profile
      "type": "post", // post, offer, event
      "button": "NONE", // NONE, BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, CALL
      "button_link": "", // Leave empty if button is NONE or CALL
      "offer_has_details": false, // Only applies if type is offer
      "coupon_code": "", // Only applies if type is offer and offer_has_details is true
      "offer_link": "", // Only applies if type is offer and offer_has_details is true
      "terms": "", // Only applies if type is offer and offer_has_details is true
      "event_title": "", // Only applies if type is event or offer
      "start_date": null, // null | string - Only applies if type is event or offer
      "end_date": null, // null | string - Only applies if type is event or offer
      "event_has_time": false, // Only applies if type is event
      "start_time": "09:00", // Only applies if type is event and event_has_time is true
      "end_time": "17:00" // Only applies if type is event and event_has_time is true
    },
    "tiktok": {
      "privacy_level": {
        "account-2": "PUBLIC_TO_EVERYONE" // PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, SELF_ONLY - The key `account-*` is the ID of your TikTok account
      },
      "allow_comments": {
        "account-2": true // boolean
      },
      "allow_duet": {
        "account-2": false // boolean
      },
      "allow_stitch": {
        "account-2": false // boolean
      },
      "content_disclosure": {
        "account-2": false // boolean
      },
      "brand_organic_toggle": {
        "account-2": false // boolean
      },
      "brand_content_toggle": {
        "account-2": false // boolean
      }
    }
  }
}

Update a post

curl -X PUT "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts/:postUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "content": "Updated post content",
    "schedule_at": "2024-12-25T10:00:00Z",
    "media": ["url1", "url2"],
    "tags": ["tag1", "tag2"],
    "account_ids": ["id1", "id2"]
  }'

Delete a post

curl -X DELETE "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts/:postUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "trash": false,
    "delete_mode": "app_only"
  }'

Delete modes:

  • app_only: Delete only from the app (default)
  • app_and_social: Delete from both app and social media
  • social_only: Delete only from social media platforms

Delete multiple posts

curl -X DELETE "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "posts": ["post-uuid-1", "post-uuid-2"],
    "trash": false,
    "delete_mode": "app_only"
  }'

Schedule a post

curl -X POST "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts/schedule/:postUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "postNow": false
  }'

Add post to queue

curl -X POST "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts/add-to-queue/:postUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"

Approve a post

curl -X POST "$MIXPOST_URL/api/$MIXPOST_WORKSPACE_UUID/posts/approve/:postUuid" \
  -H "Authorization: Bearer $MIXPOST_ACCESS_TOKEN" \
  -H "Accept: application/json"
README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install mixpost?

Run openclaw add @lao9s/mixpost in your terminal. This installs mixpost into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/lao9s/mixpost. Review commits and README documentation before installing.