{"id":"88276388-ce6a-43c2-9753-179d1a0d3427","entityType":"agent","slug":"clawhub-abogitoff-fuxux-openclaw-skill","name":"Fuxux Social Manager","canonicalUrl":"https://www.xpersona.co/agent/clawhub-abogitoff-fuxux-openclaw-skill","canonicalPath":"/agent/clawhub-abogitoff-fuxux-openclaw-skill","generatedAt":"2026-10-10T06:44:21.956Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:33:19.979Z","emptyReason":null},"description":"Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish to 12 platforms via REST API and MCP: media, drafts, queue, editing, publishing analytics and AI captions.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s176rep9qy20bvymrtfxbwjeqx86z20b:fuxux-openclaw-skill","sourceUrl":"https://clawhub.ai/abogitoff/fuxux-openclaw-skill","homepage":"https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/abogitoff/fuxux-openclaw-skill","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Fuxux Social Manager technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:33:19.979Z","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-10-10T00:33:19.979Z","emptyReason":null},"stars":null,"forks":null,"downloads":1834,"packageName":null,"latestVersion":"1.1.5","tractionLabel":"1.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:33:19.978Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T00:33:19.979Z","lastCrawledAt":"2026-10-10T00:33:19.978Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T00:33:19.978Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.5","createdAt":"2026-10-03T13:26:05.714Z","changelog":"fuxux-openclaw-skill v1.1.5 - Updated platform support to 12 platforms (dropped Google Business Profile). - Documentation refreshed in README.md and SKILL.md. - Removed obsolete skill-card.md documentation file.","fileCount":6,"zipByteSize":9781},{"version":"1.1.4","createdAt":"2026-10-02T19:15:32.439Z","changelog":"- Removed Reddit as a supported platform (now 13 platforms supported). - Updated documentation to reflect current supported platforms. - Added .clawhubignore file to the project. - Removed skill-card.md from the repository.","fileCount":6,"zipByteSize":9851},{"version":"1.1.3","createdAt":"2026-09-30T19:31:06.850Z","changelog":"- Added new filter and sort options to MCP's list_posts tool: month, status (including failed), limit, offset, and order. - MCP create_post now supports granular targeting via targets (account_id, platform, format, subreddit, flair_id). - Removed skill-card.md file. - Documentation updates to reflect the new MCP tool features and parameter options.","fileCount":5,"zipByteSize":9668},{"version":"1.1.2","createdAt":"2026-09-30T16:11:40.857Z","changelog":"- Removed the file skill-card.md. - Updated documentation in SKILL.md; no new features or behavioral changes.","fileCount":5,"zipByteSize":9588},{"version":"1.1.1","createdAt":"2026-09-29T18:13:27.946Z","changelog":"- Added support for AI caption generation using the Fuxux API (`POST /api/ai/generate`). - Updated documentation to mention AI caption workflow in both the description and feature list. - No changes to setup, configuration, or non-documentation functionality.","fileCount":5,"zipByteSize":9413},{"version":"1.1.0","createdAt":"2026-09-29T18:01:21.208Z","changelog":"Version 1.1.0 - Expanded supported platforms to 14, adding Google Business Profile, Reddit, Discord, Kick, and Twitch. - Added post editing and deletion: new MCP tools `get_post`, `update_post`, and `delete_post`. - Updated account connection details and streamlined instructions for valid platforms. - Clarified workflow around media upload limits and handling of large files via alternate hosting. - Removed legacy files: skill-card.md and examples.","fileCount":5,"zipByteSize":9444},{"version":"0.1.2","createdAt":"2026-08-14T14:09:30.326Z","changelog":"- Changed documentation to clarify that the default base URL for the API is always https://www.fuxux.com. - Updated the description for the FUXUX_BASE_URL environment variable to indicate it is an override, not specifically for local development. - Removed the detailed base URL table for production and local development, simplifying base URL instructions. - No changes to APIs or tool behavior—documentation only.","fileCount":6,"zipByteSize":8921},{"version":"0.1.1","createdAt":"2026-08-14T14:00:15.771Z","changelog":"- Removed the file: skill-card.md. - Updated SKILL.md to remove details about using a Supabase session JWT as an alternative authentication method, now only mentioning the API key for auth. - No functional or interface changes to core workflow or features.","fileCount":6,"zipByteSize":9020}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s176rep9qy20bvymrtfxbwjeqx86z20b:fuxux-openclaw-skill","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s176rep9qy20bvymrtfxbwjeqx86z20b:fuxux-openclaw-skill` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/abogitoff/fuxux-openclaw-skill before using production credentials."],"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-abogitoff-fuxux-openclaw-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/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-10T06:44:21.952Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-abogitoff-fuxux-openclaw-skill/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":"medium","updatedAt":"2026-10-10T00:33:19.979Z","emptyReason":null},"readme":"Skill: Fuxux Social Manager\n\nOwner: abogitoff\n\nSummary: Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish to 12 platforms via REST API and MCP: media, drafts, queue, editing, publishing analytics and AI captions.\n\nTags: latest:1.1.5\n\nVersion history:\n\nv1.1.5 | 2026-10-03T13:26:05.714Z | auto\n\nfuxux-openclaw-skill v1.1.5\n\n- Updated platform support to 12 platforms (dropped Google Business Profile).\n- Documentation refreshed in README.md and SKILL.md.\n- Removed obsolete skill-card.md documentation file.\n\nv1.1.4 | 2026-10-02T19:15:32.439Z | auto\n\n- Removed Reddit as a supported platform (now 13 platforms supported).\n- Updated documentation to reflect current supported platforms.\n- Added .clawhubignore file to the project.\n- Removed skill-card.md from the repository.\n\nv1.1.3 | 2026-09-30T19:31:06.850Z | auto\n\n- Added new filter and sort options to MCP's list_posts tool: month, status (including failed), limit, offset, and order.\n- MCP create_post now supports granular targeting via targets (account_id, platform, format, subreddit, flair_id).\n- Removed skill-card.md file.\n- Documentation updates to reflect the new MCP tool features and parameter options.\n\nv1.1.2 | 2026-09-30T16:11:40.857Z | auto\n\n- Removed the file skill-card.md.\n- Updated documentation in SKILL.md; no new features or behavioral changes.\n\nv1.1.1 | 2026-09-29T18:13:27.946Z | auto\n\n- Added support for AI caption generation using the Fuxux API (`POST /api/ai/generate`).\n- Updated documentation to mention AI caption workflow in both the description and feature list.\n- No changes to setup, configuration, or non-documentation functionality.\n\nv1.1.0 | 2026-09-29T18:01:21.208Z | auto\n\nVersion 1.1.0\n\n- Expanded supported platforms to 14, adding Google Business Profile, Reddit, Discord, Kick, and Twitch.\n- Added post editing and deletion: new MCP tools `get_post`, `update_post`, and `delete_post`.\n- Updated account connection details and streamlined instructions for valid platforms.\n- Clarified workflow around media upload limits and handling of large files via alternate hosting.\n- Removed legacy files: skill-card.md and examples.\n\nv0.1.2 | 2026-08-14T14:09:30.326Z | auto\n\n- Changed documentation to clarify that the default base URL for the API is always https://www.fuxux.com.\n- Updated the description for the FUXUX_BASE_URL environment variable to indicate it is an override, not specifically for local development.\n- Removed the detailed base URL table for production and local development, simplifying base URL instructions.\n- No changes to APIs or tool behavior—documentation only.\n\nv0.1.1 | 2026-08-14T14:00:15.771Z | auto\n\n- Removed the file: skill-card.md.\n- Updated SKILL.md to remove details about using a Supabase session JWT as an alternative authentication method, now only mentioning the API key for auth.\n- No functional or interface changes to core workflow or features.\n\nv0.1.0 | 2026-08-14T13:45:05.853Z | auto\n\nInitial release: Turn OpenClaw into an autonomous social media manager for Fuxux, supporting major platforms and analytics.\n\n- Schedule, publish, and manage drafts for Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, and Pinterest.\n- Upload and manage media, monitor post queue, and view publishing analytics via Fuxux REST API and MCP tools.\n- Offers integration via REST and a Streamable HTTP MCP server for flexible agent workflows.\n- Includes setup, authentication, environment variables, and recommended best practices for use with OpenClaw and compatible clients.\n\nArchive index:\n\nArchive v1.1.5: 6 files, 9781 bytes\n\nFiles: .clawhubignore (38b), examples/openclaw-mcp.json (241b), README.md (1240b), skill-card.md (2015b), SKILL.md (17167b), _meta.json (139b)\n\nFile v1.1.5:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 12 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, publishing analytics, and AI caption generation.\nversion: 1.1.5\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, publishing analytics, and AI caption generation (`POST /api/ai/generate`).\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `failed` \\| `all`), `limit` (1–50, default 20), `offset`, `order` (`upcoming` \\| `newest` \\| `recently_published` \\| `recently_updated`) |\n| `create_post` | Publish, schedule (`scheduled_at`) or save a draft (`draft: true`); optional `targets` (`account_id`, `platform`, `format`, `board_id`) to pick accounts |\n| `get_post` | One post with its per-platform variants (variant ids for `update_post`); also finds drafts |\n| `update_post` | Reschedule, edit captions (`variant_updates`), or replace media on a draft/scheduled post |\n| `delete_post` | Delete a post from Fuxux (published posts stay on the platform — only Fuxux's record goes) |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), `scopes`, and `via_reminder` (this isn't a real OAuth connection — it's a manual \"notify me\" entry for a platform Fuxux can't auto-publish to; Fuxux will remind the user to post it themselves rather than publishing on their behalf).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected** and that are not **expired** — `status: \"expired\"` means the account must be reconnected in the Fuxux dashboard (**Settings → Accounts**) before it can publish again; publishing to it will fail otherwise.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Fuxux itself allows up to **50 MB**, but the underlying hosting platform hard-caps any single request body at **~4.5 MB** — files above that will fail here regardless of the 50 MB limit. For anything larger, use Option B.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended, and required for files over ~4 MB):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again after **at least 60 seconds** instead (never in a tight loop).\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limits:** ~30 creates per 5 minutes per user; 120 requests/min per API key and 300/min per account across all keys. Over the limit returns `429` with `Retry-After` (seconds): wait that long before retrying. Don't poll: post status settles on the order of minutes, so check at most once a minute.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\nWorks with your `fx_live_` API key. A draft or scheduled post is removed and will never publish. For an already-published post this deletes only Fuxux's record — it does **not** remove the post from the social platform. Returns `409` while the post is mid-publish; wait a moment and retry.\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published to a platform with native insights support, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n| Discord | `discord` | 2000 |\n| Kick | `kick` | 140 (stream title) |\n| Twitch | `twitch` | 140 (stream title) |\n\n**Platforms that need more than a caption** (send them through `targets` on `POST /api/posts`; Twitch/Kick categories are REST-only):\n\n- **Google Business Profile is coming soon.** It can't be connected or posted to yet, so don't offer it or send a `google-business` caption.\n- **Reddit is not available to agents.** Reddit posts are written and approved by the user in the Fuxux web app; a `reddit` caption or target is refused with 403 `reddit_web_only`. Don't retry it; tell the user to post to Reddit from the app.\n- **Twitch / Kick** don't have posts: the **first line** of the caption becomes the channel's stream title, and publishing updates the channel (at the scheduled time, if scheduled). Optional category: `{\"account_id\": \"<uuid>\", \"platform\": \"twitch\", \"category\": {\"id\": \"509658\", \"name\": \"Just Chatting\"}}` (numeric Twitch game id / Kick category id). No media on either.\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest, Discord, Kick, Twitch — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `status: \"expired\"` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting and never poll in a loop without sleeping (once a minute is plenty for status checks).\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `GET /api/posts/{id}` | ✅ |\n| `PATCH /api/posts/{id}` | ✅ |\n| `DELETE /api/posts/{id}` | ✅ |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install @abogitoff/fuxux-openclaw-skill\n```\n\n---\n\n## Version\n\n- **Skill:** `1.1.5` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.2.2 (8 tools)\n\nFile v1.1.5:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 12 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v1.1.5:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.5\",\n  \"publishedAt\": 1791033965714\n}\n\nFile v1.1.5:skill-card.md\n\n## Description:\n\nHelps OpenClaw agents draft, schedule, publish, and manage social content across 12 platforms through Fuxux.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSocial media managers and teams use this skill with OpenClaw to prepare platform-specific captions, manage drafts and schedules, publish content, and review publishing analytics for Fuxux-connected accounts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An agent with the Fuxux API key can publish, schedule, edit, or delete managed posts.\n\nMitigation: Review generated content and connected accounts before broad posting, and confirm destructive actions.\n\nRisk: Exposure of the FUXUX_API_KEY could grant access to connected social accounts.\n\nMitigation: Keep the key private and rotate it if exposed.\n\nRisk: The example MCP bridge installs an unpinned Node package.\n\nMitigation: Review and pin the bridge package version before using the example configuration.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n- [Fuxux OpenClaw guide](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux OpenAPI specification](https://www.fuxux.com/openapi.json)\n- [Fuxux MCP setup guide](https://www.fuxux.com/mcp/docs)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration guidance]\n\n**Output Format:** [Markdown with HTTP and JSON examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [None]\n\n## Skill Version(s):\n\n1.1.5 (source: frontmatter and ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.5:examples/openclaw-mcp.json\n\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}\n\nArchive v1.1.4: 6 files, 9851 bytes\n\nFiles: .clawhubignore (38b), examples/openclaw-mcp.json (241b), README.md (1265b), skill-card.md (2147b), SKILL.md (17156b), _meta.json (139b)\n\nFile v1.1.4:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 13 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Google Business Profile, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, publishing analytics, and AI caption generation.\nversion: 1.1.4\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, publishing analytics, and AI caption generation (`POST /api/ai/generate`).\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `failed` \\| `all`), `limit` (1–50, default 20), `offset`, `order` (`upcoming` \\| `newest` \\| `recently_published` \\| `recently_updated`) |\n| `create_post` | Publish, schedule (`scheduled_at`) or save a draft (`draft: true`); optional `targets` (`account_id`, `platform`, `format`, `board_id`) to pick accounts |\n| `get_post` | One post with its per-platform variants (variant ids for `update_post`); also finds drafts |\n| `update_post` | Reschedule, edit captions (`variant_updates`), or replace media on a draft/scheduled post |\n| `delete_post` | Delete a post from Fuxux (published posts stay on the platform — only Fuxux's record goes) |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), `scopes`, and `via_reminder` (this isn't a real OAuth connection — it's a manual \"notify me\" entry for a platform Fuxux can't auto-publish to; Fuxux will remind the user to post it themselves rather than publishing on their behalf).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected** and that are not **expired** — `status: \"expired\"` means the account must be reconnected in the Fuxux dashboard (**Settings → Accounts**) before it can publish again; publishing to it will fail otherwise.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Fuxux itself allows up to **50 MB**, but the underlying hosting platform hard-caps any single request body at **~4.5 MB** — files above that will fail here regardless of the 50 MB limit. For anything larger, use Option B.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended, and required for files over ~4 MB):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again after **at least 60 seconds** instead (never in a tight loop).\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limits:** ~30 creates per 5 minutes per user; 120 requests/min per API key and 300/min per account across all keys. Over the limit returns `429` with `Retry-After` (seconds): wait that long before retrying. Don't poll: post status settles on the order of minutes, so check at most once a minute.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\nWorks with your `fx_live_` API key. A draft or scheduled post is removed and will never publish. For an already-published post this deletes only Fuxux's record — it does **not** remove the post from the social platform. Returns `409` while the post is mid-publish; wait a moment and retry.\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published to a platform with native insights support, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n| Google Business Profile | `google-business` | 1500 |\n| Discord | `discord` | 2000 |\n| Kick | `kick` | 140 (stream title) |\n| Twitch | `twitch` | 140 (stream title) |\n\n**Platforms that need more than a caption** (send them through `targets` on `POST /api/posts`; Twitch/Kick categories are REST-only):\n\n- **Reddit is not available to agents.** Reddit posts are written and approved by the user in the Fuxux web app; a `reddit` caption or target is refused with 403 `reddit_web_only`. Don't retry it; tell the user to post to Reddit from the app.\n- **Twitch / Kick** don't have posts: the **first line** of the caption becomes the channel's stream title, and publishing updates the channel (at the scheduled time, if scheduled). Optional category: `{\"account_id\": \"<uuid>\", \"platform\": \"twitch\", \"category\": {\"id\": \"509658\", \"name\": \"Just Chatting\"}}` (numeric Twitch game id / Kick category id). No media on either.\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest, Google Business Profile, Discord, Kick, Twitch — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `status: \"expired\"` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting and never poll in a loop without sleeping (once a minute is plenty for status checks).\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `GET /api/posts/{id}` | ✅ |\n| `PATCH /api/posts/{id}` | ✅ |\n| `DELETE /api/posts/{id}` | ✅ |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install @abogitoff/fuxux-openclaw-skill\n```\n\n---\n\n## Version\n\n- **Skill:** `1.1.4` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.2.1 (8 tools)\n\nFile v1.1.4:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 13 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v1.1.4:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.4\",\n  \"publishedAt\": 1790968532439\n}\n\nFile v1.1.4:skill-card.md\n\n## Description:\n\nHelps an OpenClaw agent draft, schedule, publish, edit, and review social posts across 13 platforms through Fuxux's API or MCP server.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSocial media managers and other Fuxux users can have an agent prepare platform-specific posts, save drafts, schedule or publish content, and inspect queues and publishing analytics.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An agent with Fuxux access can publish, edit, or delete social content on connected accounts.\n\nMitigation: Use draft mode when review is needed and confirm bulk or irreversible actions before execution.\n\nRisk: Exposure of the Fuxux API key could allow unauthorized access to connected social accounts.\n\nMitigation: Keep FUXUX_API_KEY private and use an environment-based authorization header where supported.\n\nRisk: MCP setup may install a remotely fetched bridge package.\n\nMitigation: Consider pinning mcp-remote to a reviewed version before connecting it.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n- [Fuxux OpenClaw guide](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux MCP setup](https://www.fuxux.com/mcp/docs)\n- [Fuxux OpenAPI specification](https://www.fuxux.com/openapi.json)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration]\n\n**Output Format:** [Markdown with JSON and shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Platform-specific captions, posting instructions, and status or analytics summaries as requested.]\n\n## Skill Version(s):\n\n1.1.4 (source: frontmatter and server-resolved release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.4:examples/openclaw-mcp.json\n\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}\n\nArchive v1.1.3: 5 files, 9668 bytes\n\nFiles: examples/openclaw-mcp.json (241b), README.md (1273b), skill-card.md (2080b), SKILL.md (17219b), _meta.json (139b)\n\nFile v1.1.3:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 14 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, publishing analytics, and AI caption generation.\nversion: 1.1.3\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, publishing analytics, and AI caption generation (`POST /api/ai/generate`).\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `failed` \\| `all`), `limit` (1–50, default 20), `offset`, `order` (`upcoming` \\| `newest` \\| `recently_published` \\| `recently_updated`) |\n| `create_post` | Publish, schedule (`scheduled_at`) or save a draft (`draft: true`); optional `targets` (`account_id`, `platform`, `format`, `subreddit`, `flair_id`) to pick accounts |\n| `get_post` | One post with its per-platform variants (variant ids for `update_post`); also finds drafts |\n| `update_post` | Reschedule, edit captions (`variant_updates`), or replace media on a draft/scheduled post |\n| `delete_post` | Delete a post from Fuxux (published posts stay on the platform — only Fuxux's record goes) |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), `scopes`, and `via_reminder` (this isn't a real OAuth connection — it's a manual \"notify me\" entry for a platform Fuxux can't auto-publish to; Fuxux will remind the user to post it themselves rather than publishing on their behalf).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected** and that are not **expired** — `status: \"expired\"` means the account must be reconnected in the Fuxux dashboard (**Settings → Accounts**) before it can publish again; publishing to it will fail otherwise.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Fuxux itself allows up to **50 MB**, but the underlying hosting platform hard-caps any single request body at **~4.5 MB** — files above that will fail here regardless of the 50 MB limit. For anything larger, use Option B.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended, and required for files over ~4 MB):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again after **at least 60 seconds** instead (never in a tight loop).\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limits:** ~30 creates per 5 minutes per user; 120 requests/min per API key and 300/min per account across all keys. Over the limit returns `429` with `Retry-After` (seconds): wait that long before retrying. Don't poll: post status settles on the order of minutes, so check at most once a minute.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\nWorks with your `fx_live_` API key. A draft or scheduled post is removed and will never publish. For an already-published post this deletes only Fuxux's record — it does **not** remove the post from the social platform. Returns `409` while the post is mid-publish; wait a moment and retry.\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published to a platform with native insights support, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n| Google Business Profile | `google-business` | 1500 |\n| Reddit | `reddit` | 40000 |\n| Discord | `discord` | 2000 |\n| Kick | `kick` | 140 (stream title) |\n| Twitch | `twitch` | 140 (stream title) |\n\n**Platforms that need more than a caption** (send them through `targets`: on `POST /api/posts`, or on MCP `create_post` for Reddit; Twitch/Kick categories are REST-only):\n\n- **Reddit** requires a subreddit: `{\"account_id\": \"<uuid>\", \"platform\": \"reddit\", \"subreddit\": \"smallbusiness\"}` (optional `flairId`). Without it the Reddit variant fails with \"Choose a subreddit…\".\n- **Twitch / Kick** don't have posts: the **first line** of the caption becomes the channel's stream title, and publishing updates the channel (at the scheduled time, if scheduled). Optional category: `{\"account_id\": \"<uuid>\", \"platform\": \"twitch\", \"category\": {\"id\": \"509658\", \"name\": \"Just Chatting\"}}` (numeric Twitch game id / Kick category id). No media on either.\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `status: \"expired\"` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting and never poll in a loop without sleeping (once a minute is plenty for status checks).\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `GET /api/posts/{id}` | ✅ |\n| `PATCH /api/posts/{id}` | ✅ |\n| `DELETE /api/posts/{id}` | ✅ |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install @abogitoff/fuxux-openclaw-skill\n```\n\n---\n\n## Version\n\n- **Skill:** `1.1.2` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.1.0 (8 tools)\n\nFile v1.1.3:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 14 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v1.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.3\",\n  \"publishedAt\": 1790796666850\n}\n\nFile v1.1.3:skill-card.md\n\n## Description:\n\nHelps OpenClaw agents draft, schedule, publish, and manage social posts across Fuxux-connected platforms using REST or MCP.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSocial media managers and creators use this skill to prepare drafts, schedule and publish posts, review publishing status and analytics, and manage content on Fuxux-connected accounts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An exposed Fuxux API key can allow access to connected social accounts and posting tools.\n\nMitigation: Keep FUXUX_API_KEY secret, do not commit it, and rotate it if exposed.\n\nRisk: Unreviewed or bulk publishing and deletion can cause unwanted public posts or lost Fuxux records.\n\nMitigation: Use drafts for review and confirm mass posting or deletion before execution.\n\nRisk: The MCP example runs the mcp-remote package through npx.\n\nMitigation: Vet or pin mcp-remote before using the MCP example.\n\n## Reference(s):\n\n- [Fuxux OpenClaw integration](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux OpenAPI specification](https://www.fuxux.com/openapi.json)\n- [Fuxux MCP setup](https://www.fuxux.com/mcp/docs)\n- [ClawHub skill listing](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration instructions]\n\n**Output Format:** [Markdown with API examples and JSON configuration]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Guidance for drafts, publishing, scheduling, account management, and analytics.]\n\n## Skill Version(s):\n\n1.1.3 (source: skill frontmatter and ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.3:examples/openclaw-mcp.json\n\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}\n\nArchive v1.1.2: 5 files, 9588 bytes\n\nFiles: examples/openclaw-mcp.json (241b), README.md (1273b), skill-card.md (2124b), SKILL.md (16974b), _meta.json (139b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 14 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, publishing analytics, and AI caption generation.\nversion: 1.1.2\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, publishing analytics, and AI caption generation (`POST /api/ai/generate`).\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `all`) |\n| `create_post` | Create, schedule, or publish — same body as `POST /api/posts` |\n| `get_post` | One post with its per-platform variants (variant ids for `update_post`); also finds drafts |\n| `update_post` | Reschedule, edit captions (`variant_updates`), or replace media on a draft/scheduled post |\n| `delete_post` | Delete a post from Fuxux (published posts stay on the platform — only Fuxux's record goes) |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), `scopes`, and `via_reminder` (this isn't a real OAuth connection — it's a manual \"notify me\" entry for a platform Fuxux can't auto-publish to; Fuxux will remind the user to post it themselves rather than publishing on their behalf).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected** and that are not **expired** — `status: \"expired\"` means the account must be reconnected in the Fuxux dashboard (**Settings → Accounts**) before it can publish again; publishing to it will fail otherwise.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Fuxux itself allows up to **50 MB**, but the underlying hosting platform hard-caps any single request body at **~4.5 MB** — files above that will fail here regardless of the 50 MB limit. For anything larger, use Option B.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended, and required for files over ~4 MB):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again after **at least 60 seconds** instead (never in a tight loop).\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limits:** ~30 creates per 5 minutes per user; 120 requests/min per API key and 300/min per account across all keys. Over the limit returns `429` with `Retry-After` (seconds): wait that long before retrying. Don't poll: post status settles on the order of minutes, so check at most once a minute.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\nWorks with your `fx_live_` API key. A draft or scheduled post is removed and will never publish. For an already-published post this deletes only Fuxux's record — it does **not** remove the post from the social platform. Returns `409` while the post is mid-publish; wait a moment and retry.\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published to a platform with native insights support, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n| Google Business Profile | `google-business` | 1500 |\n| Reddit | `reddit` | 40000 |\n| Discord | `discord` | 2000 |\n| Kick | `kick` | 140 (stream title) |\n| Twitch | `twitch` | 140 (stream title) |\n\n**Platforms that need more than a caption** (send them through `targets` on `POST /api/posts`, which the plain `captions` map / MCP `create_post` can't carry):\n\n- **Reddit** requires a subreddit: `{\"account_id\": \"<uuid>\", \"platform\": \"reddit\", \"subreddit\": \"smallbusiness\"}` (optional `flairId`). Without it the Reddit variant fails with \"Choose a subreddit…\".\n- **Twitch / Kick** don't have posts: the **first line** of the caption becomes the channel's stream title, and publishing updates the channel (at the scheduled time, if scheduled). Optional category: `{\"account_id\": \"<uuid>\", \"platform\": \"twitch\", \"category\": {\"id\": \"509658\", \"name\": \"Just Chatting\"}}` (numeric Twitch game id / Kick category id). No media on either.\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `status: \"expired\"` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting and never poll in a loop without sleeping (once a minute is plenty for status checks).\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `GET /api/posts/{id}` | ✅ |\n| `PATCH /api/posts/{id}` | ✅ |\n| `DELETE /api/posts/{id}` | ✅ |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install @abogitoff/fuxux-openclaw-skill\n```\n\n---\n\n## Version\n\n- **Skill:** `1.1.2` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.1.0 (8 tools)\n\nFile v1.1.2:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 14 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1790784700857\n}\n\nFile v1.1.2:skill-card.md\n\n## Description:\n\nHelps OpenClaw agents draft, schedule, publish, and manage social media posts through Fuxux across connected platforms.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSocial media managers and creators use this skill to prepare platform-specific content, review connected accounts, manage drafts and schedules, publish posts, and inspect publishing results through Fuxux.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The Fuxux API key grants access to connected social accounts if exposed.\n\nMitigation: Keep FUXUX_API_KEY private, avoid committing it, and rotate it if leaked.\n\nRisk: An agent can publish or change posts on connected accounts.\n\nMitigation: Review connected accounts and use drafts or explicit confirmation before important or mass posting.\n\nRisk: The MCP bridge installs and runs a third-party dependency.\n\nMitigation: Pin or otherwise control the mcp-remote dependency when using the bridge.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n- [Fuxux OpenClaw guide](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux OpenAPI specification](https://www.fuxux.com/openapi.json)\n- [Fuxux MCP setup guide](https://www.fuxux.com/mcp/docs)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, API calls, Configuration instructions]\n\n**Output Format:** [Natural-language guidance, platform-specific captions, and structured post requests]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Posts can be saved as drafts, scheduled, or published to connected accounts.]\n\n## Skill Version(s):\n\n1.1.2 (source: release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.2:examples/openclaw-mcp.json\n\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}\n\nArchive v1.1.1: 5 files, 9413 bytes\n\nFiles: examples/openclaw-mcp.json (241b), README.md (1273b), skill-card.md (2051b), SKILL.md (16641b), _meta.json (139b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 14 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, publishing analytics, and AI caption generation.\nversion: 1.1.1\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, publishing analytics, and AI caption generation (`POST /api/ai/generate`).\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `all`) |\n| `create_post` | Create, schedule, or publish — same body as `POST /api/posts` |\n| `get_post` | One post with its per-platform variants (variant ids for `update_post`); also finds drafts |\n| `update_post` | Reschedule, edit captions (`variant_updates`), or replace media on a draft/scheduled post |\n| `delete_post` | Delete a post from Fuxux (published posts stay on the platform — only Fuxux's record goes) |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), `scopes`, and `via_reminder` (this isn't a real OAuth connection — it's a manual \"notify me\" entry for a platform Fuxux can't auto-publish to; Fuxux will remind the user to post it themselves rather than publishing on their behalf).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected** and that are not **expired** — `status: \"expired\"` means the account must be reconnected in the Fuxux dashboard (**Settings → Accounts**) before it can publish again; publishing to it will fail otherwise.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Fuxux itself allows up to **50 MB**, but the underlying hosting platform hard-caps any single request body at **~4.5 MB** — files above that will fail here regardless of the 50 MB limit. For anything larger, use Option B.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended, and required for files over ~4 MB):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again in a bit instead.\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limit:** ~30 creates per 5 minutes per user → `429` with `Retry-After`. Back off and retry.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\nWorks with your `fx_live_` API key. A draft or scheduled post is removed and will never publish. For an already-published post this deletes only Fuxux's record — it does **not** remove the post from the social platform. Returns `409` while the post is mid-publish; wait a moment and retry.\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published to a platform with native insights support, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n| Google Business Profile | `google-business` | 1500 |\n| Reddit | `reddit` | 40000 |\n| Discord | `discord` | 2000 |\n| Kick | `kick` | 140 (stream title) |\n| Twitch | `twitch` | 140 (stream title) |\n\n**Platforms that need more than a caption** (send them through `targets` on `POST /api/posts`, which the plain `captions` map / MCP `create_post` can't carry):\n\n- **Reddit** requires a subreddit: `{\"account_id\": \"<uuid>\", \"platform\": \"reddit\", \"subreddit\": \"smallbusiness\"}` (optional `flairId`). Without it the Reddit variant fails with \"Choose a subreddit…\".\n- **Twitch / Kick** don't have posts: the **first line** of the caption becomes the channel's stream title, and publishing updates the channel (at the scheduled time, if scheduled). Optional category: `{\"account_id\": \"<uuid>\", \"platform\": \"twitch\", \"category\": {\"id\": \"509658\", \"name\": \"Just Chatting\"}}` (numeric Twitch game id / Kick category id). No media on either.\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `status: \"expired\"` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting.\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `GET /api/posts/{id}` | ✅ |\n| `PATCH /api/posts/{id}` | ✅ |\n| `DELETE /api/posts/{id}` | ✅ |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install @abogitoff/fuxux-openclaw-skill\n```\n\n---\n\n## Version\n\n- **Skill:** `1.1.1` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.1.0 (8 tools)\n\nFile v1.1.1:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 14 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1790705607946\n}\n\nFile v1.1.1:skill-card.md\n\n## Description:\n\nGuides an OpenClaw agent in managing Fuxux social posts across connected platforms, including drafts, scheduling, publishing, analytics, and AI caption generation.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSocial media managers and teams use this skill to direct an agent to draft, schedule, publish, edit, and review posts across their connected Fuxux accounts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An agent with the Fuxux API key can manage connected social accounts and publish unintended content.\n\nMitigation: Keep the key private and use drafts or scheduled posts for review before publishing.\n\nRisk: Bulk posting or deletion can have unintended or irreversible effects.\n\nMitigation: Confirm bulk and irreversible actions with the user before executing them.\n\nRisk: Installing mcp-remote without a pinned version may not meet strict dependency-control requirements.\n\nMitigation: Pin or preinstall mcp-remote where dependency control is required.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n- [Fuxux OpenClaw guide](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux MCP setup](https://www.fuxux.com/mcp/docs)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Shell commands, Configuration]\n\n**Output Format:** [Markdown with JSON and shell examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May guide authenticated Fuxux actions that create, schedule, edit, or delete posts.]\n\n## Skill Version(s):\n\n1.1.1 (source: release metadata and skill frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.1:examples/openclaw-mcp.json\n\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}\n\nArchive v1.1.0: 5 files, 9444 bytes\n\nFiles: examples/openclaw-mcp.json (241b), README.md (1273b), skill-card.md (2222b), SKILL.md (16569b), _meta.json (139b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 14 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, and publishing analytics.\nversion: 1.1.0\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, and publishing analytics.\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `all`) |\n| `create_post` | Create, schedule, or publish — same body as `POST /api/posts` |\n| `get_post` | One post with its per-platform variants (variant ids for `update_post`); also finds drafts |\n| `update_post` | Reschedule, edit captions (`variant_updates`), or replace media on a draft/scheduled post |\n| `delete_post` | Delete a post from Fuxux (published posts stay on the platform — only Fuxux's record goes) |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), `scopes`, and `via_reminder` (this isn't a real OAuth connection — it's a manual \"notify me\" entry for a platform Fuxux can't auto-publish to; Fuxux will remind the user to post it themselves rather than publishing on their behalf).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected** and that are not **expired** — `status: \"expired\"` means the account must be reconnected in the Fuxux dashboard (**Settings → Accounts**) before it can publish again; publishing to it will fail otherwise.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Fuxux itself allows up to **50 MB**, but the underlying hosting platform hard-caps any single request body at **~4.5 MB** — files above that will fail here regardless of the 50 MB limit. For anything larger, use Option B.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended, and required for files over ~4 MB):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again in a bit instead.\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limit:** ~30 creates per 5 minutes per user → `429` with `Retry-After`. Back off and retry.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\nWorks with your `fx_live_` API key. A draft or scheduled post is removed and will never publish. For an already-published post this deletes only Fuxux's record — it does **not** remove the post from the social platform. Returns `409` while the post is mid-publish; wait a moment and retry.\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published to a platform with native insights support, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n| Google Business Profile | `google-business` | 1500 |\n| Reddit | `reddit` | 40000 |\n| Discord | `discord` | 2000 |\n| Kick | `kick` | 140 (stream title) |\n| Twitch | `twitch` | 140 (stream title) |\n\n**Platforms that need more than a caption** (send them through `targets` on `POST /api/posts`, which the plain `captions` map / MCP `create_post` can't carry):\n\n- **Reddit** requires a subreddit: `{\"account_id\": \"<uuid>\", \"platform\": \"reddit\", \"subreddit\": \"smallbusiness\"}` (optional `flairId`). Without it the Reddit variant fails with \"Choose a subreddit…\".\n- **Twitch / Kick** don't have posts: the **first line** of the caption becomes the channel's stream title, and publishing updates the channel (at the scheduled time, if scheduled). Optional category: `{\"account_id\": \"<uuid>\", \"platform\": \"twitch\", \"category\": {\"id\": \"509658\", \"name\": \"Just Chatting\"}}` (numeric Twitch game id / Kick category id). No media on either.\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, Twitch — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `status: \"expired\"` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting.\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `GET /api/posts/{id}` | ✅ |\n| `PATCH /api/posts/{id}` | ✅ |\n| `DELETE /api/posts/{id}` | ✅ |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install @abogitoff/fuxux-openclaw-skill\n```\n\n---\n\n## Version\n\n- **Skill:** `1.1.0` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.1.0 (8 tools)\n\nFile v1.1.0:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 14 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Google Business Profile, Reddit, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1790704881208\n}\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nHelps OpenClaw agents draft, schedule, publish, edit, and review social media content across Fuxux-connected accounts using its API or MCP tools.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nCreators and social media teams use this skill to prepare platform-specific content, manage drafts and scheduled posts, publish to connected accounts, and review publishing results.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An agent with the Fuxux API key can publish, schedule, edit, or delete content on connected social accounts.\n\nMitigation: Review connected accounts and require explicit confirmation before immediate publishing, batch scheduling, editing, or deleting posts.\n\nRisk: Exposure of the Fuxux API key could grant access to account management actions.\n\nMitigation: Store FUXUX_API_KEY as a secret, never commit it, and rotate it if exposed.\n\nRisk: The MCP bridge introduces an external dependency into the agent workflow.\n\nMitigation: Pin or otherwise control the mcp-remote dependency in sensitive environments.\n\n## Reference(s):\n\n- [ClawHub skill release](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n- [Fuxux OpenClaw guide](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux OpenAPI specification](https://www.fuxux.com/openapi.json)\n- [Fuxux MCP setup](https://www.fuxux.com/mcp/docs)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, API calls, Configuration instructions, Shell commands]\n\n**Output Format:** [Markdown, JSON, and shell commands]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can create drafts, schedule posts, publish immediately, edit posts, and inspect publishing results.]\n\n## Skill Version(s):\n\n1.1.0 (source: skill frontmatter and ClawHub release)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.1.0:examples/openclaw-mcp.json\n\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}\n\nArchive v0.1.2: 6 files, 8921 bytes\n\nFiles: examples (0b), examples/openclaw-mcp.json (241b), README.md (1185b), skill-card.md (2516b), SKILL.md (14738b), _meta.json (139b)\n\nFile v0.1.2:SKILL.md\n\n---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, and\n  Pinterest via REST API and MCP — media, drafts, queue, and publishing analytics.\nversion: 1.0.0\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, or Pinterest**. Covers media upload, post creation, scheduling, draft mode, queue inspection, and publishing analytics.\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on every MCP request.\n\n| Endpoint | Notes |\n|----------|--------|\n| `https://www.fuxux.com/api/mcp` | Primary public MCP endpoint |\n\n**OpenClaw / Claude Desktop (stdio bridge):**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}\n```\n\n**Cursor / HTTP clients:**\n\n```json\n{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n### MCP tools\n\n| Tool | Purpose |\n|------|---------|\n| `whoami` | Validate token; return profile (id, email, plan) |\n| `list_connected_accounts` | Connected social accounts + `connected` / `expired` status, `via_bridge`, `needs_reconnect` |\n| `get_dashboard` | Stats, upcoming scheduled posts, platform snapshot |\n| `list_posts` | Queue / calendar — optional `month` (`YYYY-MM`), `status` (`scheduled` \\| `published` \\| `draft` \\| `all`) |\n| `create_post` | Create, schedule, or publish — same body as `POST /api/posts` |\n\nPrefer MCP when the host supports it; fall back to REST when you need raw control.\n\n---\n\n## Core workflow (REST)\n\n### 1. Validate auth / profile\n\n```http\nGET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns user id, email, `full_name`, `plan` (`free` \\| `creator` \\| `growth` \\| `pro`).\n\n### 2. List connected social accounts\n\n```http\nGET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nReturns `accounts[]` with `id`, `platform`, `platform_username`, `status` (`connected` \\| `expired`), and two extra flags: `via_bridge` (connected through Fuxux's managed publishing bridge rather than a direct OAuth token — informational, no action needed) and `needs_reconnect` (this account was connected before the bridge was enabled for its platform and **must be reconnected in the Fuxux dashboard before it can publish again** — publishing to it will fail otherwise).\n\n**Important:** Fuxux posts by **platform id** in the `captions` map (e.g. `twitter`, `instagram`), not by account UUID. Only include platforms the user has **connected**, that are not **expired**, and that don't have `needs_reconnect: true`. If `needs_reconnect` is true for an account you want to use, tell the user to reconnect it in **Settings → Accounts** first.\n\n### 3. Dashboard summary\n\n```http\nGET /api/dashboard\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\nHigh-level stats (`postsThisMonth`, `totalPublished`, `upcomingThisWeek`), next scheduled posts, and per-platform connection info.\n\n### 4. Upload media\n\n**Option A — Fuxux upload (works with `fx_live_` API keys too, not just browser sessions):**\n\n```http\nPOST /api/media/upload\nContent-Type: multipart/form-data\n```\n\nForm field **`file`**. Allowed: JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Max **50 MB**.\n\nResponse includes public **`url`** — pass it in `media_urls` on post create.\n\n**Option B — API-only / agent workspace (recommended):**\n\nUpload video or image to your own CDN or object storage, then pass public HTTPS URLs in `media_urls` (up to **4** URLs).\n\n### 5. Create post — publish now, schedule, or save draft\n\n```http\nPOST /api/posts\nAuthorization: Bearer $FUXUX_API_KEY\nContent-Type: application/json\n```\n\n**Body:**\n\n| Field | Required | Description |\n|-------|----------|-------------|\n| `captions` | Yes* | Object: platform id → caption string. Unknown keys are ignored. |\n| `prompt` | No | Short idea stored on the post (max 500 chars). |\n| `scheduled_at` | No | ISO 8601 **future** datetime. Omit to **publish immediately**. |\n| `media_urls` | No | Up to 4 public URLs (images/video). |\n| `draft` | No | If `true`, saves as draft — does not publish or schedule. Cannot combine with `scheduled_at`. |\n\n\\* Not required when `draft: true` if `prompt` is set.\n\n**Publish now — X + LinkedIn:**\n\n```json\n{\n  \"prompt\": \"Shipped analytics timeframe picker\",\n  \"captions\": {\n    \"twitter\": \"You can now pick 7/14/30/90 days in Fuxux Analytics 📊\",\n    \"linkedin\": \"We shipped a clearer analytics experience — pick your chart window and keep monthly summaries separate.\"\n  }\n}\n```\n\n**Schedule for later:**\n\n```json\n{\n  \"captions\": { \"instagram\": \"Tomorrow: AMA at 3pm ET\" },\n  \"scheduled_at\": \"2026-05-20T19:00:00.000Z\",\n  \"media_urls\": [\"https://cdn.example.com/promo.jpg\"]\n}\n```\n\n**Save draft (publish later from Fuxux UI or a follow-up API call):**\n\n```json\n{\n  \"prompt\": \"Thread idea: 5 lessons from our first 100 customers\",\n  \"captions\": {\n    \"twitter\": \"Draft hook — refine before posting\",\n    \"linkedin\": \"Long-form draft for LinkedIn\"\n  },\n  \"draft\": true\n}\n```\n\n**Immediate publish response** includes per-platform `results[]` with `success`, `platform_post_id`, and `error` when applicable — plus two fields worth checking before treating a result as a hard failure:\n\n- `still_processing`: true means `success` is `false` but the post was **accepted** and may still go live shortly (some networks confirm status asynchronously). Don't retry or tell the user it failed — check `GET /api/posts?status=published` again in a bit instead.\n- `inbox_pending`: true means the platform accepted the media into an inbox/draft flow (e.g. TikTok's upload inbox) rather than publishing directly — counts as success, but the user may need to finish posting from within that platform's own app.\n\n**Rate limit:** ~30 creates per 5 minutes per user → `429` with `Retry-After`. Back off and retry.\n\n### 6. List posts (queue / calendar)\n\n```http\nGET /api/posts?month=2026-05&status=scheduled\nAuthorization: Bearer $FUXUX_API_KEY\n```\n\n| Query | Meaning |\n|-------|---------|\n| `month` | `YYYY-MM` — filter scheduled posts in that calendar month |\n| `status` | `scheduled` \\| `published` \\| `draft` \\| `all` |\n| `limit` | Optional, 1–50 |\n\nResponse: `posts[]` with `post_variants` (per-platform content + status) and `counts` (`scheduled`, `published`, `drafts`).\n\n### 7. Check publish status\n\nThere is no separate `/post-results` endpoint. Inspect status via:\n\n```http\nGET /api/posts?status=published\nGET /api/posts?status=scheduled\n```\n\nEach post / variant has `status`: `draft`, `scheduled`, `publishing`, `published`, or `failed`. Failed variants include `error_message`.\n\nFor **immediate** publishes, the `POST /api/posts` response already returns `results[]`.\n\n### 8. Delete a scheduled post\n\n```http\nDELETE /api/posts/{post_id}\n```\n\n**Note:** Personal API keys may not work on this route yet — if `401`, ask the user to delete from the Fuxux web app (**Posts** or **Schedule**).\n\n### 9. Publishing analytics\n\n```http\nGET /api/analytics?days=30\n```\n\n`days` ∈ `7` | `14` | `30` | `90` (default `30`).\n\nReturns publishing stats: totals, success rate, daily post counts, platform breakdown (published vs failed), recent posts.\n\nAlso includes real third-party **engagement** where available — likes, comments, shares, views, impressions, reach:\n- `engagement`: totals across the selected window, plus `postsWithInsights` (how many posts have synced data).\n- `platformBreakdown[].engagement` / `.postsWithInsights`: the same, broken down per platform.\n- `recentPosts[].post_variants[].insights`: per-post detail, including `engagement_rate` (not summed at the aggregate level since it's a percentage).\n\nEngagement is only populated for posts published through a supported bridge-connected platform, and syncs in on a delay (a few hours after publish, refreshed periodically) — expect `postsWithInsights: 0` / missing `insights` for brand-new posts or platforms without engagement support yet.\n\nWorks fine with `fx_live_` API keys — `get_dashboard` via MCP is also a good lighter-weight option for quick summaries.\n\n---\n\n## Platform IDs (`captions` keys)\n\nUse these string ids (must match connected accounts):\n\n| Platform | Id | Typical char limit |\n|----------|-----|-------------------|\n| Twitter / X | `twitter` | 280 |\n| Instagram | `instagram` | 2200 |\n| LinkedIn | `linkedin` | 3000 |\n| Facebook | `facebook` | 63206 |\n| TikTok | `tiktok` | 2200 |\n| YouTube | `youtube` | 5000 |\n| Bluesky | `bluesky` | 300 |\n| Threads | `threads` | 500 |\n| Pinterest | `pinterest` | 500 |\n\n### Per-platform captions (Fuxux model)\n\nUnlike APIs that take one caption + platform config objects, Fuxux expects **one caption per platform** in the `captions` map. Tailor tone and length per network:\n\n```json\n{\n  \"captions\": {\n    \"twitter\": \"Short hook + link 🚀\",\n    \"linkedin\": \"Three-paragraph story with a clear takeaway for professionals.\",\n    \"instagram\": \"Visual-first caption with 3–5 hashtags #buildinpublic\"\n  },\n  \"media_urls\": [\"https://cdn.example.com/launch.mp4\"]\n}\n```\n\nOnly include keys for platforms that are **connected** (`GET /api/accounts`).\n\n---\n\n## Connecting new accounts (human-in-the-loop)\n\nThe agent should **not** handle OAuth secrets alone. Instruct the user to connect in the Fuxux UI:\n\n- **OAuth:** Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Threads, Pinterest — **Settings → Accounts**\n- **Bluesky:** app password in Fuxux UI (**not** in chat)\n\n---\n\n## Recommended workflow for video content\n\n1. Keep source videos in a workspace folder (e.g. `content/inbox/`).\n2. Optional: extract a frame for caption context:\n\n   ```bash\n   ffmpeg -i video.mp4 -ss 00:00:04 -frames:v 1 frame.jpg -y\n   ```\n\n3. Write per-platform captions (short for X/Bluesky, longer for LinkedIn).\n4. Upload media to public storage **or** use Fuxux upload from the web app → copy `url`.\n5. `POST /api/posts` with `captions` + `media_urls` — publish now or set `scheduled_at`.\n6. Move posted assets to `content/posted/` to avoid duplicates.\n7. After scheduled time, `GET /api/posts?status=published` or `get_dashboard` to confirm delivery.\n8. Review `GET /api/analytics?days=30` for volume and success rate trends.\n\n---\n\n## Tips\n\n- **List accounts first** — intersect `captions` keys with connected platforms, and skip any account with `needs_reconnect: true` (tell the user to reconnect it in Settings → Accounts instead of trying to publish to it).\n- **Stagger schedules** across the day (e.g. 9:00 and 15:00 UTC) for better reach.\n- **Batch schedule** with future `scheduled_at` values; Fuxux publishes automatically at the scheduled time.\n- **Draft mode** (`draft: true`) for human review before going live.\n- **MCP `create_post`** mirrors REST — use it from OpenClaw for fewer raw HTTP calls.\n- **429 / rate limits:** respect `Retry-After`; avoid burst posting.\n- **AI captions:** `POST /api/ai/generate` works with `fx_live_` API keys and enforces a monthly quota by plan — for unauthenticated one-off copy ideas outside a Fuxux account, the public tools (`/api/tools/tiktok-caption`, `/api/tools/youtube-tags`) are also an option.\n\n---\n\n## API key coverage (today)\n\n| Route | `fx_live_` API key |\n|-------|-------------------|\n| `GET /api/settings/profile` | ✅ |\n| `GET /api/accounts` | ✅ |\n| `GET /api/dashboard` | ✅ |\n| `GET /api/posts` | ✅ |\n| `POST /api/posts` | ✅ |\n| `GET /api/analytics` | ✅ |\n| `POST /api/media/upload` | ✅ |\n| `DELETE /api/posts/{id}` | ⚠️ Session-first |\n| `POST /api/ai/generate` | ✅ |\n\nWhen a route returns `401` with an API key, tell the user to complete the action in the Fuxux web app or use MCP tools that wrap supported routes.\n\n---\n\n## Safety\n\n1. Treat **`FUXUX_API_KEY` like a password** — rotate from Settings if leaked.\n2. **Confirm before** mass posting or irreversible actions; dry-run with `list_posts` + `list_connected_accounts` first.\n3. Warn users that agents may read workspace files (including `.env`) when following these instructions.\n\n---\n\n## Install (ClawHub)\n\n```bash\nopenclaw skills install fuxux-social-manager\n```\n\n---\n\n## Version\n\n- **Skill:** `1.0.0` (see frontmatter)\n- **Compatible with:** Fuxux production — `https://www.fuxux.com`\n- **MCP server:** `fuxux` v1.0.0\n\nFile v0.1.2:README.md\n\n# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, and Pinterest via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install fuxux-social-manager\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)\n\nFile v0.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"0.1.2\",\n  \"publishedAt\": 1786716570326\n}\n\nFile v0.1.2:skill-card.md\n\n## Description:\n\nTurn OpenClaw into an autonomous social media manager for Fuxux, with scheduling, publishing, media, drafts, queue inspection, and publishing analytics across major social platforms via REST API and MCP.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to help an OpenClaw agent manage Fuxux social posting workflows, including account checks, draft creation, scheduling, publishing, media handling, queue review, and publishin\n\nArchive v0.1.1: 6 files, 9020 bytes\n\nFiles: examples (0b), examples/openclaw-mcp.json (241b), README.md (1185b), skill-card.md (2562b), SKILL.md (14957b), _meta.json (139b)\n\nArchive v0.1.0: 6 files, 9208 bytes\n\nFiles: examples (0b), examples/openclaw-mcp.json (241b), README.md (1185b), skill-card.md (2648b), SKILL.md (15234b), _meta.json (139b)","readmeExcerpt":"Skill: Fuxux Social Manager Owner: abogitoff Summary: Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish to 12 platforms via REST API and MCP: media, drafts, queue, editing, publishing analytics and AI captions. Tags: latest:1.1.5 Version history: v1.1.5 | 2026-10-03T13:26:05.714Z | auto fuxux-openclaw-skill v1.1.5 - Updated platform support to 12 platforms (dropped Google Business ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"FUXUX_API_KEY=fx_live_your_secret_here"},{"language":"http","snippet":"Authorization: Bearer <FUXUX_API_KEY>"},{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer YOUR_FUXUX_API_KEY\"\n      ]\n    }\n  }\n}"},{"language":"json","snippet":"{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"url\": \"https://www.fuxux.com/api/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${env:FUXUX_API_KEY}\"\n      }\n    }\n  }\n}"},{"language":"http","snippet":"GET /api/settings/profile\nAuthorization: Bearer $FUXUX_API_KEY"},{"language":"http","snippet":"GET /api/accounts\nAuthorization: Bearer $FUXUX_API_KEY"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: fuxux-social-manager\ndescription: >-\n  Turn OpenClaw into an autonomous social media manager for Fuxux. Schedule and publish\n  to 12 platforms (Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky,\n  Threads, Pinterest, Discord, Kick, Twitch) via REST API\n  and MCP — media, drafts, queue, editing, publishing analytics, and AI caption generation.\nversion: 1.1.5\nmetadata:\n  openclaw:\n    emoji: \"📡\"\n    homepage: https://www.fuxux.com/openclaw\n    primaryEnv: FUXUX_API_KEY\n    requires:\n      env:\n        - FUXUX_API_KEY\n      anyBins:\n        - curl\n        - npx\n    envVars:\n      - name: FUXUX_API_KEY\n        required: true\n        description: >-\n          Fuxux personal API key from Settings → API keys (fx_live_ + 40 hex chars).\n          Used as Authorization Bearer token for REST and MCP.\n      - name: FUXUX_BASE_URL\n        required: false\n        description: >-\n          API origin override (default https://www.fuxux.com).\n    install:\n      - kind: node\n        package: mcp-remote\n    mcp:\n      url: https://www.fuxux.com/api/mcp\n      tools:\n        - whoami\n        - list_connected_accounts\n        - get_dashboard\n        - list_posts\n        - create_post\n        - get_post\n        - update_post\n        - delete_post\n---\n\n# Social Media Assistant (via fuxux.com)\n\nTurn your OpenClaw agent into an autonomous social media manager using the **Fuxux** API and MCP server. Use when scheduling, posting, or managing content across **Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Discord, Kick, or Twitch**. Covers media upload, post creation, scheduling, draft mode, queue inspection, editing and deleting posts, publishing analytics, and AI caption generation (`POST /api/ai/generate`).\n\n---\n\n## Setup\n\n1. Create a Fuxux account at **[fuxux.com](https://www.fuxux.com)** and connect at least one social account (**Settings → Accounts** or onboarding).\n2. Create an **API key**: **Settings → API keys** → **Create key**. Keys look like `fx_live_` + 40 hex characters (48 chars total). The full secret is shown **once** — store it safely.\n3. Store the key in the agent workspace `.env` (never commit real keys):\n\n   ```bash\n   FUXUX_API_KEY=fx_live_your_secret_here\n   ```\n\n4. Download API docs for offline reference:\n   - **OpenAPI JSON:** `https://www.fuxux.com/openapi.json`\n   - **Interactive reference:** `https://www.fuxux.com/reference`\n   - **MCP setup guide:** `https://www.fuxux.com/mcp/docs`\n\n5. **(Recommended for OpenClaw)** Connect MCP so the agent can call Fuxux tools directly (see *MCP* below).\n\n---\n\n## Auth\n\nAll authenticated HTTP requests use a Bearer token:\n\n```http\nAuthorization: Bearer <FUXUX_API_KEY>\n```\n\n**Primary env var:** `FUXUX_API_KEY`\n\n---\n\n## Base URL\n\nRoutes below are rooted at `https://www.fuxux.com` (e.g. `GET https://www.fuxux.com/api/accounts`).\n\n---\n\n## MCP (recommended for OpenClaw)\n\nFuxux exposes a **Streamable HTTP** MCP server. Send the same Bearer header on e"},{"path":"README.md","content":"# Fuxux OpenClaw / ClawHub skill\n\nAgent skill for [Fuxux](https://www.fuxux.com) — schedule and publish to 12 platforms — Twitter/X, Instagram, LinkedIn, Facebook, TikTok, YouTube, Bluesky, Threads, Pinterest, Discord, Kick, and Twitch — via REST API and MCP.\n\n## Contents\n\n| File | Purpose |\n|------|---------|\n| **[SKILL.md](./SKILL.md)** | Agent instructions + ClawHub YAML frontmatter (`metadata.openclaw`) — the only file ClawHub requires |\n| **[examples/openclaw-mcp.json](./examples/openclaw-mcp.json)** | Copy-paste MCP config (`mcp-remote` + Bearer token) |\n\n## Quick start (users)\n\n1. Create a Fuxux.com account and connect social accounts.\n2. Create an API key (**Settings → API keys**).\n3. Set `FUXUX_API_KEY=fx_live_…` in the agent workspace `.env`.\n4. Wire MCP using [examples/openclaw-mcp.json](./examples/openclaw-mcp.json) or [MCP docs](https://www.fuxux.com/mcp/docs).\n5. Install the skill (ClawHub or local):\n\n   ```bash\n   openclaw skills install @abogitoff/fuxux-openclaw-skill\n   ```\n\n## Related docs\n\n- [API reference](https://www.fuxux.com/reference)\n- [OpenAPI JSON](https://www.fuxux.com/openapi.json)\n- [MCP setup](https://www.fuxux.com/mcp/docs)\n- [OpenClaw on Fuxux](https://www.fuxux.com/openclaw)"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7828zycv55044pas9sr7zc2186zmjw\",\n  \"slug\": \"fuxux-openclaw-skill\",\n  \"version\": \"1.1.5\",\n  \"publishedAt\": 1791033965714\n}"},{"path":"skill-card.md","content":"## Description:\n\nHelps OpenClaw agents draft, schedule, publish, and manage social content across 12 platforms through Fuxux.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[abogitoff](https://clawhub.ai/user/abogitoff)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nSocial media managers and teams use this skill with OpenClaw to prepare platform-specific captions, manage drafts and schedules, publish content, and review publishing analytics for Fuxux-connected accounts.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: An agent with the Fuxux API key can publish, schedule, edit, or delete managed posts.\n\nMitigation: Review generated content and connected accounts before broad posting, and confirm destructive actions.\n\nRisk: Exposure of the FUXUX_API_KEY could grant access to connected social accounts.\n\nMitigation: Keep the key private and rotate it if exposed.\n\nRisk: The example MCP bridge installs an unpinned Node package.\n\nMitigation: Review and pin the bridge package version before using the example configuration.\n\n## Reference(s):\n\n- [ClawHub skill listing](https://clawhub.ai/abogitoff/skills/fuxux-openclaw-skill)\n- [Fuxux OpenClaw guide](https://www.fuxux.com/openclaw)\n- [Fuxux API reference](https://www.fuxux.com/reference)\n- [Fuxux OpenAPI specification](https://www.fuxux.com/openapi.json)\n- [Fuxux MCP setup guide](https://www.fuxux.com/mcp/docs)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration guidance]\n\n**Output Format:** [Markdown with HTTP and JSON examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [None]\n\n## Skill Version(s):\n\n1.1.5 (source: frontmatter and ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"examples/openclaw-mcp.json","content":"{\n  \"mcpServers\": {\n    \"fuxux\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-remote\",\n        \"https://www.fuxux.com/api/mcp\",\n        \"--header\",\n        \"Authorization: Bearer ${FUXUX_API_KEY}\"\n      ]\n    }\n  }\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1491,"uniquenessScore":42,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:33:19.979Z","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-10-10T00:33:19.979Z","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-10T06:44:21.956Z","emptyReason":null},"items":[{"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-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"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":"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"}]}}}