agent-Postmoore
/install agent-postmoore
Postmoore — Social Media Assistant
Autonomously manage social media posting via the Postmoore API.
Setup
- Create a Postmoore account at postmoo.re
- Connect your social accounts (Instagram, TikTok, YouTube Shorts, LinkedIn, Facebook, Threads, Bluesky)
- Go to Profile → API Keys and generate an API key (Creator or Premium plan required)
- Store your key in your workspace
.env:
POSTMOORE_API_KEY=pm_live_xxxxx
Auth
All requests use a Bearer token:
Authorization: Bearer \x3CPOSTMOORE_API_KEY>
Base URL: https://postmoo.re/api/v1
Core Workflow
1. Get Social Accounts
GET /accounts
Optional filter by platform:
GET /accounts?platform=tiktok
Supported platform values: instagram · tiktok · ytshorts · linkedin · facebook · threads · bluesky
Returns an array of connected accounts. Each account has:
id— use this in every post requestplatform— the platform namedisplayName— the account display nameplatformUsername— username on the platformstatus— alwaysactive
Always fetch account IDs before posting — never guess them.
2. Upload Media
POST /media
Content-Type: multipart/form-data
file: \x3Cbinary>
Supported formats: image/jpeg · image/png · image/gif · image/webp · video/mp4 · video/quicktime · video/webm
Max file size: 100 MB. Storage quota: 5 GB (Creator plan) · 20 GB (Premium plan).
Returns:
{
"data": {
"id": "uploads/user123/filename.mp4",
"type": "video",
"url": "https://storage.postmoo.re/...",
"mimeType": "video/mp4",
"size": 10485760,
"filename": "video.mp4"
}
}
Save both id and url — you need both when creating a media post.
3. Create a Post
POST /posts
Content-Type: application/json
Text post (post now):
{
"contentType": "text",
"text": "Your caption here #hashtags",
"accounts": ["\x3Caccount_id_1>", "\x3Caccount_id_2>"],
"schedule": { "type": "now" }
}
Text post (scheduled):
{
"contentType": "text",
"text": "Scheduled caption #hashtags",
"accounts": ["\x3Caccount_id_1>"],
"schedule": { "type": "scheduled", "at": "2026-06-01T14:00:00Z" }
}
Media post (image or video):
{
"contentType": "media",
"text": "Caption for the post #hashtags",
"media": [{ "id": "\x3Cid_from_upload>", "url": "\x3Curl_from_upload>" }],
"accounts": ["\x3Caccount_id_1>", "\x3Caccount_id_2>"],
"schedule": { "type": "now" }
}
Draft (save without publishing):
{
"contentType": "text",
"text": "Draft caption to review",
"accounts": ["\x3Caccount_id_1>"],
"schedule": { "type": "draft" }
}
schedule options:
{ "type": "now" }— publish immediately{ "type": "scheduled", "at": "\x3CISO 8601 datetime>" }— schedule for future{ "type": "draft" }— save as draft, no publishing
Returns post object with:
id— post IDstatus—pending·scheduled·published·failed·draftaccounts— array of{ id, platform }results— per-platform result withsuccess,postId,url,error
4. List Posts
GET /posts
GET /posts?status=scheduled
GET /posts?status=draft&page=1&limit=20
Status filters: pending · scheduled · published · failed · draft
Pagination params: page (default 1) · limit (default 20, max 100)
Returns paginated array with data and pagination object containing page, limit, total, totalPages, hasMore.
5. Get a Single Post
GET /posts/\x3Cpost_id>
Returns full post object including per-platform results.
6. Delete a Post
DELETE /posts/\x3Cpost_id>
Only works on posts with status pending or draft. Scheduled and published posts cannot be deleted.
Returns { "data": { "id": "\x3Cpost_id>", "deleted": true } }.
Recommended Workflow for Video Content
- Ask the user for the video file path
- Extract a frame to understand the content:
ffmpeg -i video.mp4 -ss 00:00:03 -frames:v 1 frame.jpg -y - Read the frame and write a caption with 4–5 relevant hashtags
- Upload the video:
POST /media - Get account IDs:
GET /accounts - Create the post with the media
idandurlfrom the upload - Confirm status:
GET /posts/\x3Cpost_id>
Tips
- Post to multiple platforms in one request by including multiple account IDs
- Use
"type": "draft"when the user wants to review content before it goes live - Stagger scheduled posts throughout the day for better reach
- Keep hashtags to 4–5 per post
- Always confirm account IDs from
GET /accountsbefore every session - Check the
resultsarray after posting for per-platform success or failure details - If a post fails on one platform but succeeds on others, the overall status will be
failed— check individual results
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install agent-postmoore - After installation, invoke the skill by name or use
/agent-postmoore - Provide required inputs per the skill's parameter spec and get structured output
What is agent-Postmoore?
Autonomously post, schedule, upload media, save drafts, and manage content across Instagram, TikTok, YouTube Shorts, LinkedIn, Facebook, Threads, and Bluesky... It is an AI Agent Skill for Claude Code / OpenClaw, with 86 downloads so far.
How do I install agent-Postmoore?
Run "/install agent-postmoore" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is agent-Postmoore free?
Yes, agent-Postmoore is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does agent-Postmoore support?
agent-Postmoore is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created agent-Postmoore?
It is built and maintained by Omaano Tetteh (@rkotchamp); the current version is v1.0.0.