← Back to Skills Marketplace
rkotchamp

agent-Postmoore

by Omaano Tetteh · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
86
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install agent-postmoore
Description
Autonomously post, schedule, upload media, save drafts, and manage content across Instagram, TikTok, YouTube Shorts, LinkedIn, Facebook, Threads, and Bluesky...
README (SKILL.md)

Postmoore — Social Media Assistant

Autonomously manage social media posting via the Postmoore API.

Setup

  1. Create a Postmoore account at postmoo.re
  2. Connect your social accounts (Instagram, TikTok, YouTube Shorts, LinkedIn, Facebook, Threads, Bluesky)
  3. Go to Profile → API Keys and generate an API key (Creator or Premium plan required)
  4. 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 request
  • platform — the platform name
  • displayName — the account display name
  • platformUsername — username on the platform
  • status — always active

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 ID
  • statuspending · scheduled · published · failed · draft
  • accounts — array of { id, platform }
  • results — per-platform result with success, 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

  1. Ask the user for the video file path
  2. Extract a frame to understand the content:
    ffmpeg -i video.mp4 -ss 00:00:03 -frames:v 1 frame.jpg -y
    
  3. Read the frame and write a caption with 4–5 relevant hashtags
  4. Upload the video: POST /media
  5. Get account IDs: GET /accounts
  6. Create the post with the media id and url from the upload
  7. 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 /accounts before every session
  • Check the results array 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
Usage Guidance
This skill appears to do what it says: it needs a Postmoore API key and will upload media files and call postmoo.re endpoints. Before installing: (1) Verify the service domain (https://postmoo.re) and that you trust Postmoore; (2) Prefer providing the API key via environment variable rather than writing it to a global config file if you are on a shared machine; (3) If you will use video features, install ffmpeg and ensure you consent to the agent being asked for file paths (the skill will read the specified media files to upload); (4) Note the package registry metadata omitted the declared POSTMOORE_API_KEY/homepage — this is likely a metadata error but you may want to confirm the publisher identity and the homepage; (5) Use a scoped or revocable API key (if the service supports it) so you can revoke access if needed.
Capability Analysis
Type: OpenClaw Skill Name: agent-postmoore Version: 1.0.0 The skill is a legitimate integration for the Postmoore social media management service. The Node.js script (scripts/postmoore.js) is a clean CLI wrapper that communicates exclusively with the official API domain (postmoo.re) and uses standard configuration paths for API key storage. The instructions in SKILL.md are well-defined, and the recommended use of ffmpeg for video processing is a standard utility task without signs of malicious intent or prompt injection.
Capability Tags
requires-oauth-tokenrequires-sensitive-credentials
Capability Assessment
Purpose & Capability
The name/description, SKILL.md, and the included CLI script all align: this is a Postmoore client for uploading and scheduling social posts. The required credential (POSTMOORE_API_KEY) and optional use of ffmpeg for extracting video frames are consistent with the stated purpose. Minor incoherences: the registry summary at the top of the package metadata lists no required env vars and no homepage, while SKILL.md declares POSTMOORE_API_KEY and a homepage (https://postmoo.re). That mismatch is likely an authoring/registry metadata error, not malicious.
Instruction Scope
SKILL.md instructs the agent to upload files, call the Postmoore API endpoints, and (for video) run ffmpeg to extract a frame. The included script reads/writes user config files (~/.config/postmoore/config.json and .postmoore/config.json) to store an API key and reads media files to upload. Those file reads/writes are coherent with the skill's purpose. There are no instructions to read unrelated system files or to send data to unexpected external endpoints beyond postmoo.re/storage endpoints described in the docs.
Install Mechanism
This is instruction-only plus a single CLI script; there is no install spec that downloads/extracts arbitrary archives or runs installers. No high-risk install behavior was found.
Credentials
The only secret the skill needs is POSTMOORE_API_KEY (declared in SKILL.md metadata and used in code). The code supports reading the key from env or from config files. This is proportionate, but be aware the CLI writes the key to a local or global config file by default (global ~/.config/postmoore/config.json) which may be a privacy risk in shared environments.
Persistence & Privilege
The skill does not request 'always: true' and does not modify other skills or global agent settings. It only persists its own config in user paths (expected behavior for a CLI client).
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install agent-postmoore
  3. After installation, invoke the skill by name or use /agent-postmoore
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Version 1.1.0 (Postmoore): Major documentation update and workflow clarification. - Added detailed usage instructions for the Postmoore API in SKILL.md, covering setup, authentication, endpoints, and content management. - Included multi-platform posting support information (Instagram, TikTok, YouTube Shorts, LinkedIn, Facebook, Threads, Bluesky). - Documented recommended workflow for video content creation and scheduling. - Outlined tips for best practices and troubleshooting per-platform posting results. - Specified required environment variable and binary dependencies (POSTMOORE_API_KEY, ffmpeg).
Metadata
Slug agent-postmoore
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

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.

💬 Comments