{"id":"9cfb23fa-3592-4b8c-8108-a30b4b20a082","entityType":"agent","slug":"clawhub-peturgeorgievv-postfast","name":"PostFast","canonicalUrl":"https://www.xpersona.co/agent/clawhub-peturgeorgievv-postfast","canonicalPath":"/agent/clawhub-peturgeorgievv-postfast","generatedAt":"2026-10-09T12:28:08.989Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post content to multiple platforms, or automate their social media workflow. PostFast is a SaaS tool — no self-hosting required. Skill: PostFast Owner: peturgeorgievv Summary: Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post co","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 634 downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn713njts7zey50nj4f3gc0ph181086z:postfast","sourceUrl":"https://clawhub.ai/peturgeorgievv/postfast","homepage":"https://clawhub.ai/peturgeorgievv/postfast","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/peturgeorgievv/postfast","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":56,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast AP"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":634,"packageName":null,"latestVersion":"1.0.0","tractionLabel":"634 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T03:44:01.526Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T03:44:01.526Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T03:44:01.526Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.0","createdAt":"2026-02-12T12:00:49.490Z","changelog":"Initial release of PostFast social media scheduling skill. - Schedule and manage posts across 9 platforms: TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest. - Upload and attach media to posts via a secure, 3-step signed URL workflow. - Cross-post content to multiple social media accounts in a single request. - List, view, and delete scheduled posts through dedicated endpoints. - Access platform-specific controls and content options for advanced scheduling. - Helper endpoints to fetch Pinterest boards and YouTube playlists. - SaaS-based API — no self-hosting required.","fileCount":6,"zipByteSize":12848}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn713njts7zey50nj4f3gc0ph181086z:postfast","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T12:28:08.988Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-peturgeorgievv-postfast/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: PostFast\n\nOwner: peturgeorgievv\n\nSummary: Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post content to multiple platforms, or automate their social media workflow. PostFast is a SaaS tool — no self-hosting required.\n\nTags: latest:1.0.0\n\nVersion history:\n\nv1.0.0 | 2026-02-12T12:00:49.490Z | auto\n\nInitial release of PostFast social media scheduling skill.\n\n- Schedule and manage posts across 9 platforms: TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest.\n- Upload and attach media to posts via a secure, 3-step signed URL workflow.\n- Cross-post content to multiple social media accounts in a single request.\n- List, view, and delete scheduled posts through dedicated endpoints.\n- Access platform-specific controls and content options for advanced scheduling.\n- Helper endpoints to fetch Pinterest boards and YouTube playlists.\n- SaaS-based API — no self-hosting required.\n\nArchive index:\n\nArchive v1.0.0: 6 files, 12848 bytes\n\nFiles: blog-post-openclaw-skill.md (8851b), README-PUBLISHING-GUIDE.md (4584b), references/api-reference.md (3537b), references/platform-controls.md (4702b), SKILL.md (5779b), _meta.json (127b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: postfast\ndescription: Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post content to multiple platforms, or automate their social media workflow. PostFast is a SaaS tool — no self-hosting required.\nhomepage: https://postfa.st\nmetadata: {\"openclaw\":{\"emoji\":\"⚡\",\"primaryEnv\":\"POSTFAST_API_KEY\",\"requires\":{\"env\":[\"POSTFAST_API_KEY\"]}}}\n---\n\n# PostFast\n\nSchedule social media posts across 9 platforms from one API. SaaS — no self-hosting needed.\n\n## Setup\n\n1. Sign up at https://app.postfa.st/register\n2. Go to Workspace Settings → generate an API key\n3. Set the environment variable:\n   ```bash\n   export POSTFAST_API_KEY=\"your-api-key\"\n   ```\n\nBase URL: `https://api.postfa.st`\nAuth header: `pf-api-key: $POSTFAST_API_KEY`\n\n## Core Workflow\n\n### 1. List connected accounts\n\n```bash\ncurl -s -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-media/my-social-accounts\n```\n\nReturns array of `{ id, platform, platformUsername, displayName }`. Save the `id` — it's the `socialMediaId` for posting.\n\n### 2. Schedule a text post (no media)\n\n```bash\ncurl -X POST https://api.postfa.st/social-posts \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"posts\": [{\n      \"content\": \"Your post text here\",\n      \"mediaItems\": [],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"ACCOUNT_ID_HERE\"\n    }],\n    \"controls\": {}\n  }'\n```\n\n### 3. Schedule a post with media (3-step flow)\n\n**Step A** — Get signed upload URLs:\n```bash\ncurl -X POST https://api.postfa.st/file/get-signed-upload-urls \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"contentType\": \"image/png\", \"count\": 1 }'\n```\nReturns `[{ \"key\": \"image/uuid.png\", \"signedUrl\": \"https://...\" }]`.\n\n**Step B** — Upload file to S3:\n```bash\ncurl -X PUT \"SIGNED_URL_HERE\" \\\n  -H \"Content-Type: image/png\" \\\n  --data-binary @/path/to/file.png\n```\n\n**Step C** — Create post with media key:\n```bash\ncurl -X POST https://api.postfa.st/social-posts \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"posts\": [{\n      \"content\": \"Post with image!\",\n      \"mediaItems\": [{ \"key\": \"image/uuid.png\", \"type\": \"IMAGE\", \"sortOrder\": 0 }],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"ACCOUNT_ID_HERE\"\n    }],\n    \"controls\": {}\n  }'\n```\n\nFor video: use `contentType: \"video/mp4\"`, `type: \"VIDEO\"`, key prefix `video/`.\n\n### 4. List scheduled posts\n\n```bash\ncurl -s -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-posts\n```\n\n### 5. Delete a scheduled post\n\n```bash\ncurl -X DELETE -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-posts/POST_ID\n```\n\n### 6. Cross-post to multiple platforms\n\nInclude multiple entries in the `posts` array, each with a different `socialMediaId`. They share the same `controls` and `mediaItems` keys.\n\n## Platform-Specific Controls\n\nPass these in the `controls` object. See [references/platform-controls.md](references/platform-controls.md) for full details.\n\n| Platform | Key Controls |\n|---|---|\n| **TikTok** | `tiktokPrivacy`, `tiktokAllowComments`, `tiktokAllowDuet`, `tiktokAllowStitch`, `tiktokIsDraft`, `tiktokBrandContent`, `tiktokAutoAddMusic` |\n| **Instagram** | `instagramPublishType` (TIMELINE/STORY/REEL), `instagramPostToGrid`, `instagramCollaborators` |\n| **Facebook** | `facebookContentType` (POST/REEL/STORY) |\n| **YouTube** | `youtubeIsShort`, `youtubeTitle`, `youtubePrivacy`, `youtubePlaylistId`, `youtubeTags`, `youtubeMadeForKids` |\n| **LinkedIn** | `linkedinAttachmentKey`, `linkedinAttachmentTitle` (for document posts) |\n| **X (Twitter)** | `xQuoteTweetUrl` (for quote tweets) |\n| **Pinterest** | `pinterestBoardId` (required), `pinterestLink` |\n| **Bluesky** | No platform-specific controls — text + images only |\n| **Threads** | No platform-specific controls — text + images/video |\n\n## Helper Endpoints\n\n- **Pinterest boards**: `GET /social-media/{id}/pinterest-boards` → returns `[{ boardId, name }]`\n- **YouTube playlists**: `GET /social-media/{id}/youtube-playlists` → returns `[{ playlistId, title }]`\n\n## Rate Limits\n\n- 60/min, 150/5min, 300/hour, 2000/day per API key\n- Check `X-RateLimit-Remaining-*` headers\n- 429 = rate limited, check `Retry-After-*` header\n\n## Media Specs Quick Reference\n\n| Platform | Images | Video | Carousel |\n|---|---|---|---|\n| TikTok | Carousels only | ≤250MB, MP4/MOV, 3s-10min | 2-35 images |\n| Instagram | JPEG/PNG | ≤1GB, 3-90s (Reels) | Up to 10 |\n| Facebook | ≤30MB, JPG/PNG | 1 per post | Up to 10 images |\n| YouTube | — | Shorts ≤3min, H.264 | — |\n| LinkedIn | Up to 9 | ≤10min | Up to 9, or documents (PDF/PPTX/DOCX) |\n| X (Twitter) | Up to 4 | — | — |\n| Pinterest | 2:3 ratio ideal | Supported | 2-5 images |\n| Bluesky | Up to 4 | Not supported | — |\n| Threads | Supported | Supported | Up to 10 |\n\n## Tips for the Agent\n\n- Always call `my-social-accounts` first to get valid `socialMediaId` values.\n- For media posts, complete the full 3-step upload flow (signed URL → S3 PUT → create post).\n- `scheduledAt` must be ISO 8601 UTC and in the future.\n- Pinterest always requires `pinterestBoardId` — fetch boards first.\n- LinkedIn documents use `linkedinAttachmentKey` instead of `mediaItems`.\n- For carousels, include multiple items in `mediaItems` with sequential `sortOrder`.\n- TikTok video thumbnails: set `coverTimestamp` (seconds) in `mediaItems`.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn713njts7zey50nj4f3gc0ph181086z\",\n  \"slug\": \"postfast\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1770897649490\n}\n\nFile v1.0.0:references/api-reference.md\n\n# PostFast API Reference\n\nBase URL: `https://api.postfa.st`\nAuth: `pf-api-key` header with workspace API key.\n\n## Endpoints\n\n### GET /social-media/my-social-accounts\n\nList all connected social media accounts.\n\n**Response:**\n```json\n[\n  {\n    \"id\": \"6a87b56e-ba73-4696-a415-3d524f1a92f8\",\n    \"platform\": \"FACEBOOK\",\n    \"platformUsername\": \"johndoe\",\n    \"displayName\": \"John's Page\"\n  }\n]\n```\n\nPlatform values: `TIKTOK`, `INSTAGRAM`, `FACEBOOK`, `X`, `YOUTUBE`, `LINKEDIN`, `THREADS`, `BLUESKY`, `PINTEREST`\n\n### GET /social-media/:id/pinterest-boards\n\nGet Pinterest boards for a connected account.\n\n**Response:**\n```json\n[{ \"boardId\": \"1234567890123456789\", \"name\": \"My Recipes\" }]\n```\n\n### GET /social-media/:id/youtube-playlists\n\nGet YouTube playlists for a connected account.\n\n**Response:**\n```json\n[{ \"playlistId\": \"PLrAXtmErZgOe...\", \"title\": \"My Tutorials\" }]\n```\n\n### POST /file/get-signed-upload-urls\n\nGet pre-signed S3 URLs for media upload.\n\n**Request:**\n```json\n{ \"contentType\": \"image/png\", \"count\": 1 }\n```\n\nSupported content types: `image/png`, `image/jpeg`, `image/jpg`, `image/gif`, `image/webp`, `video/mp4`, `video/quicktime`, `application/pdf`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n\n**Response:**\n```json\n[{ \"key\": \"image/a1b2c3d4-e5f6-7890-1234-567890abcdef.png\", \"signedUrl\": \"https://s3...\" }]\n```\n\nThen PUT the raw file to `signedUrl` with matching `Content-Type` header.\n\n### GET /social-posts\n\nList scheduled posts.\n\n**Response:**\n```json\n{\n  \"data\": [...],\n  \"totalCount\": 25,\n  \"pageInfo\": { \"page\": 1, \"hasNextPage\": true, \"perPage\": 10 }\n}\n```\n\n### POST /social-posts\n\nCreate/schedule one or more posts.\n\n**Request:**\n```json\n{\n  \"posts\": [\n    {\n      \"content\": \"Post text with #hashtags\",\n      \"mediaItems\": [\n        {\n          \"key\": \"image/uuid.png\",\n          \"type\": \"IMAGE\",\n          \"sortOrder\": 0\n        }\n      ],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"account-uuid\"\n    }\n  ],\n  \"controls\": {\n    \"tiktokPrivacy\": \"PUBLIC\",\n    \"instagramPublishType\": \"REEL\"\n  }\n}\n```\n\n**Post fields:**\n- `content` (string, required): Post text/caption\n- `mediaItems` (array): Media attachments. Each has `key` (from upload), `type` (`IMAGE`/`VIDEO`), `sortOrder` (int)\n- `scheduledAt` (string, required): ISO 8601 UTC datetime, must be in the future\n- `socialMediaId` (string, required): Target account ID from `/my-social-accounts`\n\n**mediaItems extra fields:**\n- `coverTimestamp` (string): TikTok video thumbnail, seconds (e.g., `\"3\"`)\n\n**controls**: Platform-specific settings. See platform-controls.md for all options.\n\n**Cross-posting**: Add multiple objects to the `posts` array, each with different `socialMediaId`. The `controls` object applies to all posts in the batch.\n\n**Response:**\n```json\n{ \"postIds\": [\"uuid-1\", \"uuid-2\"] }\n```\n\nOne ID per entry in the `posts` array.\n\n### DELETE /social-posts/:id\n\nDelete a scheduled post by ID.\n\n**Response:**\n```json\n{ \"deleted\": true }\n```\n\n## Error Responses\n\n- `400` — Bad request (missing fields, invalid data)\n- `401` — Invalid or missing API key\n- `403` — Forbidden (insufficient permissions)\n- `404` — Resource not found\n- `429` — Rate limit exceeded\n\n## Rate Limits\n\nPer API key (workspace):\n- 60 requests/minute\n- 150 requests/5 minutes\n- 300 requests/hour\n- 2,000 requests/day\n\nResponse headers: `X-RateLimit-Limit-*`, `X-RateLimit-Remaining-*`, `X-RateLimit-Reset-*`, `Retry-After-*`\n\nFile v1.0.0:references/platform-controls.md\n\n# Platform-Specific Controls Reference\n\nAll controls are passed in the `controls` object of `POST /social-posts`.\n\n## TikTok\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `tiktokPrivacy` | string | `PUBLIC` | `PUBLIC`, `MUTUAL_FRIENDS`, `ONLY_ME` |\n| `tiktokAllowComments` | boolean | `true` | Allow comments |\n| `tiktokAllowDuet` | boolean | `true` | Allow duets |\n| `tiktokAllowStitch` | boolean | `true` | Allow stitches |\n| `tiktokBrandOrganic` | boolean | `false` | Self-promotional content |\n| `tiktokBrandContent` | boolean | `false` | Sponsored/partnership content |\n| `tiktokAutoAddMusic` | boolean | `false` | Auto-add background music |\n| `tiktokIsDraft` | boolean | `false` | Save as draft (appears in TikTok app only) |\n\n**Media notes:**\n- Video: MP4/MOV, H.264, ≤250MB, 3s-10min. Best: 15-30s, 1080×1920 (9:16)\n- Carousels: 2-35 images (photo slideshows)\n- `coverTimestamp` in mediaItems: seconds into video for thumbnail (e.g., `\"3\"`)\n- Caption: max 2,200 characters\n\n## Instagram\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `instagramPublishType` | string | `TIMELINE` | `TIMELINE`, `STORY`, `REEL` |\n| `instagramPostToGrid` | boolean | `true` | Show Reel on profile grid |\n| `instagramCollaborators` | string[] | `[]` | Usernames (without @), max 3 |\n\n**Content types:**\n- **TIMELINE**: Feed posts. Single image, carousel (up to 10), or video\n- **STORY**: 24-hour temporary content. Image or video\n- **REEL**: Short-form video, 3-90 seconds, 9:16 recommended. Gets algorithm boost (2-3x reach vs feed)\n\n**Media notes:**\n- Video: ≤1GB for Reels\n- Carousels: up to 10 images or videos\n\n## Facebook\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `facebookContentType` | string | `POST` | `POST`, `REEL`, `STORY` |\n\n**Content types:**\n- **POST**: Permanent feed content. Up to 10 images OR 1 video. Text limit: 63,206 chars\n- **REEL**: Short-form vertical video\n- **STORY**: 24-hour temporary content\n\n**Media notes:**\n- Images: JPG/PNG, ≤30MB each, up to 10 per post\n- Cannot mix images and videos in same post\n\n## YouTube\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `youtubeIsShort` | boolean | `true` | Publish as YouTube Short |\n| `youtubeTitle` | string | — | Video title (max 100 chars). Falls back to first 100 chars of content |\n| `youtubePrivacy` | string | `PUBLIC` | `PUBLIC`, `UNLISTED`, `PRIVATE` |\n| `youtubePlaylistId` | string | — | Add to playlist after publishing. Get IDs from `GET /social-media/{id}/youtube-playlists` |\n| `youtubeMadeForKids` | boolean | `false` | COPPA compliance flag |\n| `youtubeTags` | string[] | `[]` | Video tags |\n\n**Media notes:**\n- Shorts: up to 3 minutes (as of Oct 2024), 9:16 or 1:1\n- Copyrighted music limits Shorts to 60 seconds\n- H.264 video codec with AAC audio recommended\n\n## LinkedIn\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `linkedinAttachmentKey` | string | — | S3 key for document post (from `/file/get-signed-upload-urls`). Format: `file/{uuid}.{ext}` |\n| `linkedinAttachmentTitle` | string | `Document` | Display title for document |\n\n**Content types:**\n- Regular posts: text + images (up to 9) or video (up to 10 min)\n- Document posts: PDF, PPTX, DOCX (display as swipeable carousels). Use `linkedinAttachmentKey` instead of `mediaItems`. ≤60MB\n- Cannot mix documents with regular media\n\n**Tips:**\n- Character limit: 3,000 (under 1,300 performs better)\n- Put links in comments, not post body (LinkedIn deprioritizes external links)\n- 3-5 hashtags max\n\n## X (Twitter)\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `xQuoteTweetUrl` | string | — | URL of tweet to quote. Accepts x.com, twitter.com, mobile.twitter.com |\n\n**Notes:**\n- Character limit: 280\n- Up to 4 images per post\n- Cannot use `xQuoteTweetUrl` and retweet together\n- Quoted tweet must be public\n\n## Pinterest\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `pinterestBoardId` | string | **required** | Board to pin to. Get IDs from `GET /social-media/{id}/pinterest-boards` |\n| `pinterestLink` | string | — | Destination URL when pin is clicked |\n\n**Content parsing:**\n- First line of `content` → pin title (max 100 chars)\n- Remaining lines → pin description (max 800 chars)\n\n**Media notes:**\n- Ideal aspect ratio: 2:3 (1000×1500)\n- Carousels: 2-5 static images only (no video in carousels)\n\n## Bluesky\n\nNo platform-specific controls.\n\n**Notes:**\n- Character limit: 300\n- Up to 4 images\n- No video support via API\n- URLs auto-generate link cards\n- No edit after publishing\n\n## Threads\n\nNo platform-specific controls.\n\n**Notes:**\n- Text + images + video supported\n- Carousels: up to 10 images\n\nFile v1.0.0:blog-post-openclaw-skill.md\n\n# How to Schedule Social Media Posts with AI Using PostFast and OpenClaw\n\nManaging social media across multiple platforms is a time sink. You open the scheduler, pick your accounts, write your caption, upload your media, set the time, and repeat for every platform. Now multiply that by every post, every week. It adds up fast.\n\nWhat if you could just tell your AI assistant what to post and when, and it handled the rest?\n\nThat's exactly what the PostFast skill for OpenClaw enables. Schedule posts to TikTok, Instagram, Facebook, X, YouTube, LinkedIn, Threads, Bluesky, and Pinterest through natural conversation. No interface switching, no clicking through menus. Just say what you want and your AI does it.\n\n## What You'll Learn\n\n- What OpenClaw is and why it matters for marketers\n- How the PostFast skill works\n- How to install and configure it in minutes\n- Real-world examples of AI-powered social media scheduling\n- Why this approach beats the traditional workflow\n\n## What is OpenClaw?\n\n[OpenClaw](https://openclaw.ai) is an open-source AI personal assistant with over 157,000 GitHub stars. It runs on your own device and connects to the messaging platforms you already use — WhatsApp, Telegram, Slack, Discord, and more.\n\nWhat makes OpenClaw powerful for marketers is its skill system. Skills are plugins that teach the assistant how to use specific tools and APIs. The [ClawHub marketplace](https://clawhub.ai) hosts hundreds of community-built skills, and PostFast is now one of them.\n\nThink of it as having a personal social media manager that lives in your terminal (or your chat app) and never sleeps.\n\n## The PostFast Skill for OpenClaw\n\nThe PostFast skill connects your OpenClaw assistant directly to the [PostFast API](https://postfa.st/docs). Once installed, you can manage your entire social media workflow through conversational commands.\n\n### What It Can Do\n\nWith the PostFast skill installed, your AI assistant can:\n\n- **Schedule posts** to any of the 9 supported platforms\n- **Upload media** — images, videos, carousels, and documents\n- **Cross-post** the same content to multiple platforms simultaneously\n- **List your connected accounts** and see what's scheduled\n- **Delete scheduled posts** you've changed your mind about\n- **Handle platform-specific settings** like TikTok privacy controls, Instagram Reels vs Stories, YouTube Shorts, Pinterest board selection, and more\n\nThe skill knows the full PostFast API, including the multi-step media upload workflow. You don't need to think about signed URLs or S3 uploads. Just tell it what to post and where.\n\n### Why PostFast vs Other Social Media Skills?\n\nThere are a few social media scheduling skills on ClawHub already. Here's why PostFast stands out:\n\n- **No self-hosting required.** Competitors like Mixpost and Postiz require you to run your own server infrastructure. PostFast is SaaS — sign up, get an API key, and you're done in 60 seconds.\n\n- **Deep platform controls.** PostFast exposes platform-specific settings that other tools don't: TikTok duet/stitch toggles, Instagram collaborators, YouTube playlist integration, Pinterest board targeting, and LinkedIn document posts.\n\n- **9 platforms, one API.** TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest. All from a single, unified API.\n\n- **Battle-tested API.** PostFast's API supports the full content lifecycle: upload media, schedule posts, manage accounts, and clean up. It's the same API that powers the [PostFast web app](https://app.postfa.st).\n\n## How to Install the PostFast Skill\n\nGetting started takes about two minutes.\n\n### Prerequisites\n\n- A working [OpenClaw](https://openclaw.ai) installation\n- The [ClawHub CLI](https://docs.openclaw.ai/tools/clawhub) installed (`npm i -g clawhub`)\n- A [PostFast account](https://app.postfa.st/register) (free 7-day trial available)\n\n### Step 1: Install the Skill\n\nOpen your terminal and run:\n\n```bash\nclawhub install postfast\n```\n\nThat's it. The skill is downloaded and ready.\n\n### Step 2: Get Your API Key\n\n1. Log in to [PostFast](https://app.postfa.st)\n2. Go to **Workspace Settings**\n3. Click **Generate API Key**\n4. Copy the key\n\n### Step 3: Configure OpenClaw\n\nAdd your API key to your OpenClaw configuration. You can either set it as an environment variable:\n\n```bash\nexport POSTFAST_API_KEY=\"your-api-key-here\"\n```\n\nOr add it to your `openclaw.json` config:\n\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"postfast\": {\n        \"enabled\": true,\n        \"apiKey\": \"your-api-key-here\"\n      }\n    }\n  }\n}\n```\n\n### Step 4: Verify the Connection\n\nStart a new OpenClaw session and ask:\n\n> \"Show me my connected social media accounts\"\n\nIf everything is configured correctly, your assistant will list all the social accounts connected to your PostFast workspace.\n\n## Real-World Usage Examples\n\nHere's where things get exciting. Instead of navigating interfaces, you just talk.\n\n### Quick Post Scheduling\n\n> \"Schedule a post to my LinkedIn for tomorrow at 9am: We just hit 1,000 customers! Here's what we learned along the way. Thread below 👇 #startup #milestone\"\n\nYour assistant calls the PostFast API, creates the post, and confirms the schedule. Done.\n\n### Cross-Platform Publishing\n\n> \"Post this to Instagram as a Reel, TikTok, and YouTube Shorts at 3pm today: Quick tip — batch your content creation into one session per week. You'll save 5+ hours. Trust me.\"\n\nThe skill handles the platform-specific settings automatically: `instagramPublishType: \"REEL\"`, `youtubeIsShort: true`, and the right TikTok defaults. One message, three platforms.\n\n### Media Uploads\n\n> \"Upload this image and schedule it as a Pinterest pin to my 'Marketing Tips' board with a link to postfa.st/blog\"\n\nThe assistant handles the full 3-step flow behind the scenes: gets a signed upload URL, uploads your image, and creates the pin with the right board ID and destination link.\n\n### Content Calendar Check\n\n> \"What do I have scheduled for this week?\"\n\nGet a quick overview of your upcoming posts without opening any dashboard.\n\n### TikTok with Specific Controls\n\n> \"Schedule a TikTok video for Friday at 6pm. Set it to public, disable duets, enable stitches, and mark it as branded content.\"\n\nThe skill knows every TikTok API parameter and maps your natural language to the right controls.\n\n### LinkedIn Document Post\n\n> \"Upload this PDF and post it to LinkedIn with the title 'Q1 Marketing Playbook' and the caption: Our complete Q1 strategy in 12 slides. Save this for later.\"\n\nDocument posts on LinkedIn display as swipeable carousels and consistently outperform regular image posts for educational content.\n\n## How It Works Under the Hood\n\nFor the technically curious, here's what happens when you tell your AI to schedule a post:\n\n1. **Account lookup** — The skill calls `GET /social-media/my-social-accounts` to find the right account ID for the platform you mentioned.\n\n2. **Media upload** (if needed) — Requests a signed upload URL via `POST /file/get-signed-upload-urls`, uploads your file directly to storage, and captures the media key.\n\n3. **Post creation** — Calls `POST /social-posts` with your content, media keys, schedule time, target account, and any platform-specific controls.\n\n4. **Confirmation** — Reports back the scheduled post ID and details.\n\nThe entire PostFast API is documented in the skill's reference files, so your AI assistant always knows the right endpoints, parameters, and constraints for every platform.\n\n## Security and Privacy\n\nYour PostFast API key stays on your machine. OpenClaw runs locally, and the skill communicates directly with the PostFast API over HTTPS. No data passes through ClawHub or any intermediary.\n\nA few best practices:\n\n- **Use workspace-scoped API keys.** Each PostFast API key is tied to a single workspace, limiting access to only the accounts in that workspace.\n- **Review the skill before enabling it.** The PostFast skill is open source and published by the PostFast team. You can inspect every line of the SKILL.md and reference files.\n- **Rotate keys periodically.** You can regenerate your API key in PostFast Workspace Settings at any time.\n\n## Getting Started\n\nReady to schedule social media posts with AI?\n\n1. **[Sign up for PostFast](https://app.postfa.st/register?source=blog-openclaw)** — Free 7-day trial, no credit card required\n2. **[Install OpenClaw](https://openclaw.ai)** — Open-source AI assistant\n3. **Install the skill:** `clawhub install postfast`\n4. **Start posting** — Just tell your AI what to schedule\n\nStop switching between tabs. Start telling your AI what to post.\n\n---\n\n*PostFast is a social media scheduling tool that helps creators, brands, and agencies publish content across 9 platforms from one dashboard. [Learn more about our features](https://postfa.st/features) or [explore the API](https://postfa.st/docs).*\n\nFile v1.0.0:README-PUBLISHING-GUIDE.md\n\n# PostFast OpenClaw Skill — Publishing Guide\n\n## What's in this folder\n\n```\npostfast/\n├── SKILL.md                           # The actual skill (this is what gets published)\n├── references/\n│   ├── api-reference.md               # Full API endpoint docs\n│   └── platform-controls.md           # All platform-specific settings\n├── blog-post-openclaw-skill.md        # Blog post draft for postfa.st\n└── README-PUBLISHING-GUIDE.md         # This file (don't publish this)\n```\n\n---\n\n## Step 1: Test the Skill (YOU ARE HERE)\n\nThe skill is now installed at `skills/postfast/` and configured with your API key.\nStart a new session (`/new`) and test these prompts:\n\n1. \"Show me my connected social media accounts\"\n2. \"What posts do I have scheduled?\"\n3. \"Schedule a test post to Facebook for next Monday at 10am: Testing PostFast + OpenClaw integration!\"\n4. \"Delete that scheduled post\"\n\nIf everything works → move to Step 2.\n\n---\n\n## Step 2: Publish to ClawHub\n\nNo GitHub repo needed — ClawHub publishes directly from a local folder.\n\n**On your machine:**\n\n1. **Install ClawHub CLI:**\n   ```bash\n   npm i -g clawhub\n   ```\n\n2. **Login** (requires GitHub account, at least 1 week old):\n   ```bash\n   clawhub login\n   ```\n   This opens a browser for GitHub OAuth.\n\n3. **Unzip and publish:**\n   ```bash\n   unzip postfast-skill-v1.0.0.zip\n   cd postfast-clean\n\n   clawhub publish . \\\n     --slug postfast \\\n     --name \"PostFast\" \\\n     --version 1.0.0 \\\n     --changelog \"Initial release: schedule posts to 9 platforms via PostFast API\" \\\n     --tags latest\n   ```\n\n4. **Verify it's live:**\n   ```bash\n   clawhub search \"postfast\"\n   ```\n\n---\n\n## Step 3: Publish the Blog Post\n\n1. Take the `blog-post-openclaw-skill.md` file\n2. Adapt it to your blog CMS format (whatever postfa.st uses)\n3. **Create a featured image** — suggestions:\n   - PostFast logo + OpenClaw 🦞 logo side by side\n   - Use Canva: clean background, both logos, \"Schedule Posts with AI\" subtitle\n   - Dimensions: 1200×630 (standard OG image)\n4. **SEO metadata:**\n   - **Title:** \"How to Schedule Social Media Posts with AI Using PostFast and OpenClaw\"\n   - **Description:** \"Use the PostFast skill for OpenClaw to schedule posts to TikTok, Instagram, Facebook, X, YouTube, LinkedIn, Threads, Bluesky, and Pinterest with natural language commands.\"\n   - **Slug:** `/blog/openclaw-skill` or `/blog/schedule-posts-with-ai-openclaw`\n   - **Keywords:** schedule social media posts AI, OpenClaw social media, PostFast OpenClaw skill, AI social media scheduling\n5. Publish it\n\n---\n\n## Step 4: Promote\n\n1. **OpenClaw Discord** (https://discord.com/invite/clawd):\n   - Post in #showcase or #skills channel\n   - Brief message: \"Just published a PostFast skill for scheduling social media to 9 platforms — `clawhub install postfast`. No self-hosting needed, SaaS API.\"\n\n2. **X / Twitter:**\n   - \"Just shipped a PostFast skill for @OpenClaw 🦞 — schedule posts to TikTok, Instagram, YouTube, LinkedIn & more with AI. No self-hosting needed. `clawhub install postfast`\"\n\n3. **Reddit** (r/selfhosted, r/sideproject, r/SaaS):\n   - Share the blog post link\n\n4. **Update PostFast homepage:**\n   - Consider adding \"OpenClaw Integration\" to the integrations section (alongside Canva)\n\n---\n\n## How Users Install & Use the Skill\n\nThis is what you tell users in docs/blog/README:\n\n### Installation\n\n```bash\n# Install the ClawHub CLI (if not already)\nnpm i -g clawhub\n\n# Install the PostFast skill\nclawhub install postfast\n```\n\n### Configuration\n\nGet your API key from PostFast → Workspace Settings → Generate API Key.\n\n**Option A** — Environment variable:\n```bash\nexport POSTFAST_API_KEY=\"your-api-key\"\n```\n\n**Option B** — OpenClaw config (`~/.openclaw/openclaw.json`):\n```json\n{\n  \"skills\": {\n    \"entries\": {\n      \"postfast\": {\n        \"enabled\": true,\n        \"apiKey\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\nStart a new OpenClaw session to pick up the skill.\n\n### Usage Examples\n\nJust talk to your AI assistant:\n\n- \"Show me my social media accounts\"\n- \"Schedule a TikTok video for tomorrow at 3pm with duets disabled\"\n- \"Post this image to Instagram as a Reel and Facebook at the same time\"\n- \"What's scheduled for this week?\"\n- \"Pin this to my Recipes board on Pinterest with a link to my blog\"\n- \"Delete my last scheduled post\"\n\n---\n\n## Future Updates\n\nTo publish a new version:\n```bash\nclawhub publish ./postfast-openclaw-skill \\\n  --slug postfast \\\n  --version 1.1.0 \\\n  --changelog \"Added XYZ\" \\\n  --tags latest\n```\n\nUsers update with:\n```bash\nclawhub update postfast\n```","readmeExcerpt":"Skill: PostFast Owner: peturgeorgievv Summary: Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post co","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export POSTFAST_API_KEY=\"your-api-key\""},{"language":"bash","snippet":"curl -s -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-media/my-social-accounts"},{"language":"bash","snippet":"curl -s -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-media/my-social-accounts"},{"language":"bash","snippet":"curl -X POST https://api.postfa.st/social-posts \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{"},{"language":"bash","snippet":"curl -X POST https://api.postfa.st/social-posts \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"posts\": [{\n      \"content\": \"Your post text here\",\n      \"mediaItems\": [],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"ACCOUNT_ID_HERE\"\n    }],\n    \"controls\": {}\n  }'"},{"language":"bash","snippet":"curl -X POST https://api.postfa.st/file/get-signed-upload-urls \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"contentType\": \"image/png\", \"count\": 1 }'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: postfast\ndescription: Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post content to multiple platforms, or automate their social media workflow. PostFast is a SaaS tool — no self-hosting required.\nhomepage: https://postfa.st\nmetadata: {\"openclaw\":{\"emoji\":\"⚡\",\"primaryEnv\":\"POSTFAST_API_KEY\",\"requires\":{\"env\":[\"POSTFAST_API_KEY\"]}}}\n---\n\n# PostFast\n\nSchedule social media posts across 9 platforms from one API. SaaS — no self-hosting needed.\n\n## Setup\n\n1. Sign up at https://app.postfa.st/register\n2. Go to Workspace Settings → generate an API key\n3. Set the environment variable:\n   ```bash\n   export POSTFAST_API_KEY=\"your-api-key\"\n   ```\n\nBase URL: `https://api.postfa.st`\nAuth header: `pf-api-key: $POSTFAST_API_KEY`\n\n## Core Workflow\n\n### 1. List connected accounts\n\n```bash\ncurl -s -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-media/my-social-accounts\n```\n\nReturns array of `{ id, platform, platformUsername, displayName }`. Save the `id` — it's the `socialMediaId` for posting.\n\n### 2. Schedule a text post (no media)\n\n```bash\ncurl -X POST https://api.postfa.st/social-posts \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"posts\": [{\n      \"content\": \"Your post text here\",\n      \"mediaItems\": [],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"ACCOUNT_ID_HERE\"\n    }],\n    \"controls\": {}\n  }'\n```\n\n### 3. Schedule a post with media (3-step flow)\n\n**Step A** — Get signed upload URLs:\n```bash\ncurl -X POST https://api.postfa.st/file/get-signed-upload-urls \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"contentType\": \"image/png\", \"count\": 1 }'\n```\nReturns `[{ \"key\": \"image/uuid.png\", \"signedUrl\": \"https://...\" }]`.\n\n**Step B** — Upload file to S3:\n```bash\ncurl -X PUT \"SIGNED_URL_HERE\" \\\n  -H \"Content-Type: image/png\" \\\n  --data-binary @/path/to/file.png\n```\n\n**Step C** — Create post with media key:\n```bash\ncurl -X POST https://api.postfa.st/social-posts \\\n  -H \"pf-api-key: $POSTFAST_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"posts\": [{\n      \"content\": \"Post with image!\",\n      \"mediaItems\": [{ \"key\": \"image/uuid.png\", \"type\": \"IMAGE\", \"sortOrder\": 0 }],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"ACCOUNT_ID_HERE\"\n    }],\n    \"controls\": {}\n  }'\n```\n\nFor video: use `contentType: \"video/mp4\"`, `type: \"VIDEO\"`, key prefix `video/`.\n\n### 4. List scheduled posts\n\n```bash\ncurl -s -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/social-posts\n```\n\n### 5. Delete a scheduled post\n\n```bash\ncurl -X DELETE -H \"pf-api-key: $POSTFAST_API_KEY\" https://api.postfa.st/s"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn713njts7zey50nj4f3gc0ph181086z\",\n  \"slug\": \"postfast\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1770897649490\n}"},{"path":"references/api-reference.md","content":"# PostFast API Reference\n\nBase URL: `https://api.postfa.st`\nAuth: `pf-api-key` header with workspace API key.\n\n## Endpoints\n\n### GET /social-media/my-social-accounts\n\nList all connected social media accounts.\n\n**Response:**\n```json\n[\n  {\n    \"id\": \"6a87b56e-ba73-4696-a415-3d524f1a92f8\",\n    \"platform\": \"FACEBOOK\",\n    \"platformUsername\": \"johndoe\",\n    \"displayName\": \"John's Page\"\n  }\n]\n```\n\nPlatform values: `TIKTOK`, `INSTAGRAM`, `FACEBOOK`, `X`, `YOUTUBE`, `LINKEDIN`, `THREADS`, `BLUESKY`, `PINTEREST`\n\n### GET /social-media/:id/pinterest-boards\n\nGet Pinterest boards for a connected account.\n\n**Response:**\n```json\n[{ \"boardId\": \"1234567890123456789\", \"name\": \"My Recipes\" }]\n```\n\n### GET /social-media/:id/youtube-playlists\n\nGet YouTube playlists for a connected account.\n\n**Response:**\n```json\n[{ \"playlistId\": \"PLrAXtmErZgOe...\", \"title\": \"My Tutorials\" }]\n```\n\n### POST /file/get-signed-upload-urls\n\nGet pre-signed S3 URLs for media upload.\n\n**Request:**\n```json\n{ \"contentType\": \"image/png\", \"count\": 1 }\n```\n\nSupported content types: `image/png`, `image/jpeg`, `image/jpg`, `image/gif`, `image/webp`, `video/mp4`, `video/quicktime`, `application/pdf`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.openxmlformats-officedocument.presentationml.presentation`\n\n**Response:**\n```json\n[{ \"key\": \"image/a1b2c3d4-e5f6-7890-1234-567890abcdef.png\", \"signedUrl\": \"https://s3...\" }]\n```\n\nThen PUT the raw file to `signedUrl` with matching `Content-Type` header.\n\n### GET /social-posts\n\nList scheduled posts.\n\n**Response:**\n```json\n{\n  \"data\": [...],\n  \"totalCount\": 25,\n  \"pageInfo\": { \"page\": 1, \"hasNextPage\": true, \"perPage\": 10 }\n}\n```\n\n### POST /social-posts\n\nCreate/schedule one or more posts.\n\n**Request:**\n```json\n{\n  \"posts\": [\n    {\n      \"content\": \"Post text with #hashtags\",\n      \"mediaItems\": [\n        {\n          \"key\": \"image/uuid.png\",\n          \"type\": \"IMAGE\",\n          \"sortOrder\": 0\n        }\n      ],\n      \"scheduledAt\": \"2025-06-15T10:00:00.000Z\",\n      \"socialMediaId\": \"account-uuid\"\n    }\n  ],\n  \"controls\": {\n    \"tiktokPrivacy\": \"PUBLIC\",\n    \"instagramPublishType\": \"REEL\"\n  }\n}\n```\n\n**Post fields:**\n- `content` (string, required): Post text/caption\n- `mediaItems` (array): Media attachments. Each has `key` (from upload), `type` (`IMAGE`/`VIDEO`), `sortOrder` (int)\n- `scheduledAt` (string, required): ISO 8601 UTC datetime, must be in the future\n- `socialMediaId` (string, required): Target account ID from `/my-social-accounts`\n\n**mediaItems extra fields:**\n- `coverTimestamp` (string): TikTok video thumbnail, seconds (e.g., `\"3\"`)\n\n**controls**: Platform-specific settings. See platform-controls.md for all options.\n\n**Cross-posting**: Add multiple objects to the `posts` array, each with different `socialMediaId`. The `controls` object applies to all posts in the batch.\n\n**Response:**\n```json\n{ \"postIds\": [\"uuid-1\", \"uuid-2\"] }\n```\n\nOne ID per entry in the `posts` array.\n\n### DELETE /social-posts/:id\n\nDelet"},{"path":"references/platform-controls.md","content":"# Platform-Specific Controls Reference\n\nAll controls are passed in the `controls` object of `POST /social-posts`.\n\n## TikTok\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `tiktokPrivacy` | string | `PUBLIC` | `PUBLIC`, `MUTUAL_FRIENDS`, `ONLY_ME` |\n| `tiktokAllowComments` | boolean | `true` | Allow comments |\n| `tiktokAllowDuet` | boolean | `true` | Allow duets |\n| `tiktokAllowStitch` | boolean | `true` | Allow stitches |\n| `tiktokBrandOrganic` | boolean | `false` | Self-promotional content |\n| `tiktokBrandContent` | boolean | `false` | Sponsored/partnership content |\n| `tiktokAutoAddMusic` | boolean | `false` | Auto-add background music |\n| `tiktokIsDraft` | boolean | `false` | Save as draft (appears in TikTok app only) |\n\n**Media notes:**\n- Video: MP4/MOV, H.264, ≤250MB, 3s-10min. Best: 15-30s, 1080×1920 (9:16)\n- Carousels: 2-35 images (photo slideshows)\n- `coverTimestamp` in mediaItems: seconds into video for thumbnail (e.g., `\"3\"`)\n- Caption: max 2,200 characters\n\n## Instagram\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `instagramPublishType` | string | `TIMELINE` | `TIMELINE`, `STORY`, `REEL` |\n| `instagramPostToGrid` | boolean | `true` | Show Reel on profile grid |\n| `instagramCollaborators` | string[] | `[]` | Usernames (without @), max 3 |\n\n**Content types:**\n- **TIMELINE**: Feed posts. Single image, carousel (up to 10), or video\n- **STORY**: 24-hour temporary content. Image or video\n- **REEL**: Short-form video, 3-90 seconds, 9:16 recommended. Gets algorithm boost (2-3x reach vs feed)\n\n**Media notes:**\n- Video: ≤1GB for Reels\n- Carousels: up to 10 images or videos\n\n## Facebook\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `facebookContentType` | string | `POST` | `POST`, `REEL`, `STORY` |\n\n**Content types:**\n- **POST**: Permanent feed content. Up to 10 images OR 1 video. Text limit: 63,206 chars\n- **REEL**: Short-form vertical video\n- **STORY**: 24-hour temporary content\n\n**Media notes:**\n- Images: JPG/PNG, ≤30MB each, up to 10 per post\n- Cannot mix images and videos in same post\n\n## YouTube\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `youtubeIsShort` | boolean | `true` | Publish as YouTube Short |\n| `youtubeTitle` | string | — | Video title (max 100 chars). Falls back to first 100 chars of content |\n| `youtubePrivacy` | string | `PUBLIC` | `PUBLIC`, `UNLISTED`, `PRIVATE` |\n| `youtubePlaylistId` | string | — | Add to playlist after publishing. Get IDs from `GET /social-media/{id}/youtube-playlists` |\n| `youtubeMadeForKids` | boolean | `false` | COPPA compliance flag |\n| `youtubeTags` | string[] | `[]` | Video tags |\n\n**Media notes:**\n- Shorts: up to 3 minutes (as of Oct 2024), 9:16 or 1:1\n- Copyrighted music limits Shorts to 60 seconds\n- H.264 video codec with AAC audio recommended\n\n## LinkedIn\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `linkedinAttachmentKey` | string | — | S3 key for document post (from `/file/get-signed-upload-ur"},{"path":"blog-post-openclaw-skill.md","content":"# How to Schedule Social Media Posts with AI Using PostFast and OpenClaw\n\nManaging social media across multiple platforms is a time sink. You open the scheduler, pick your accounts, write your caption, upload your media, set the time, and repeat for every platform. Now multiply that by every post, every week. It adds up fast.\n\nWhat if you could just tell your AI assistant what to post and when, and it handled the rest?\n\nThat's exactly what the PostFast skill for OpenClaw enables. Schedule posts to TikTok, Instagram, Facebook, X, YouTube, LinkedIn, Threads, Bluesky, and Pinterest through natural conversation. No interface switching, no clicking through menus. Just say what you want and your AI does it.\n\n## What You'll Learn\n\n- What OpenClaw is and why it matters for marketers\n- How the PostFast skill works\n- How to install and configure it in minutes\n- Real-world examples of AI-powered social media scheduling\n- Why this approach beats the traditional workflow\n\n## What is OpenClaw?\n\n[OpenClaw](https://openclaw.ai) is an open-source AI personal assistant with over 157,000 GitHub stars. It runs on your own device and connects to the messaging platforms you already use — WhatsApp, Telegram, Slack, Discord, and more.\n\nWhat makes OpenClaw powerful for marketers is its skill system. Skills are plugins that teach the assistant how to use specific tools and APIs. The [ClawHub marketplace](https://clawhub.ai) hosts hundreds of community-built skills, and PostFast is now one of them.\n\nThink of it as having a personal social media manager that lives in your terminal (or your chat app) and never sleeps.\n\n## The PostFast Skill for OpenClaw\n\nThe PostFast skill connects your OpenClaw assistant directly to the [PostFast API](https://postfa.st/docs). Once installed, you can manage your entire social media workflow through conversational commands.\n\n### What It Can Do\n\nWith the PostFast skill installed, your AI assistant can:\n\n- **Schedule posts** to any of the 9 supported platforms\n- **Upload media** — images, videos, carousels, and documents\n- **Cross-post** the same content to multiple platforms simultaneously\n- **List your connected accounts** and see what's scheduled\n- **Delete scheduled posts** you've changed your mind about\n- **Handle platform-specific settings** like TikTok privacy controls, Instagram Reels vs Stories, YouTube Shorts, Pinterest board selection, and more\n\nThe skill knows the full PostFast API, including the multi-step media upload workflow. You don't need to think about signed URLs or S3 uploads. Just tell it what to post and where.\n\n### Why PostFast vs Other Social Media Skills?\n\nThere are a few social media scheduling skills on ClawHub already. Here's why PostFast stands out:\n\n- **No self-hosting required.** Competitors like Mixpost and Postiz require you to run your own server infrastructure. PostFast is SaaS — sign up, get an API key, and you're done in 60 seconds.\n\n- **Deep platform controls.** PostFast exposes platform-specific settings "}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post content to multiple platforms, or automate their social media workflow. PostFast is a SaaS tool — no self-hosting required. Skill: PostFast Owner: peturgeorgievv Summary: Schedule and manage social media posts across TikTok, Instagram, Facebook, X (Twitter), YouTube, LinkedIn, Threads, Bluesky, and Pinterest using the PostFast API. Use when the user wants to schedule social media posts, manage social media content, upload media for social posting, list connected social accounts, check scheduled posts, delete scheduled posts, cross-post co","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1607,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T12:28:08.989Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}