🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Mixpost

by @lao9s

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.

Versionv1.0.0
Downloads5,476
Installs11
Stars⭐ 7
TERMINAL
clawhub install mixpost

πŸ“– About This Skill


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"
    

    βš™οΈ Configuration

    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"