Browser

Claw Post

Try it

Post or comment on X, Reddit, LinkedIn, Facebook, TikTok, or Instagram from the user's logged-in desktop Chrome via Claw Post (API or MCP). Use when an agent needs to publish social content, reply on Reddit, replace a broken bird/X CLI skill, or post without platform API keys. Install @daydreamnationtechlabs/clawpost — not clawpost.dev.

What it does

Social posting infrastructure for AI agents. A paired browser extension publishes from the user's real browser session — no API keys to the social platforms needed.

The skill document

Claw Post

Social posting infrastructure for AI agents. A paired browser extension publishes from the user's real browser session — no API keys to the social platforms needed.

Why Claw Post

  • Zero credential exposure for social platforms. No OAuth tokens or social-platform passwords are sent to the agent or to Claw Post for posting. You use one Claw Post API key for API calls only; social sessions stay in the paired Chrome browser.
  • Lower ban risk. Posts are published through the real browser UI with human-like timing — not via automation-flagged API endpoints or headless browsers.
  • Multi-platform, one API. X, LinkedIn, Facebook (feed and groups), and TikTok — all through a single POST /v1/jobs/tweet endpoint.
  • Facebook Groups automation. Search by keyword, filter by size and activity, join groups, and post — full discover-to-post workflows that traditional OAuth tools cannot do.
  • Simple setup. Sign up → install extension → pair with 6-digit code → provide one API key. No OAuth app registration, no token refresh logic, no per-platform credentials.
  • Low cost per post. Free tier included; paid plans scale affordably. See clawpost.net for pricing.

Capabilities

CapabilityEndpointPlatforms
Post to feed or groupPOST /v1/jobs/tweetX, LinkedIn, Facebook, TikTok
Upload media for postsPOST /v1/media/uploadX, LinkedIn, Facebook, TikTok
Search for groupsPOST /v1/groups/searchFacebook
Join a groupPOST /v1/facebook/groups/joinFacebook
Check group membershipPOST /v1/facebook/groups/statusFacebook
Poll any job resultGET /v1/jobs/:idAll

All endpoints require the clawpost-api-key header.

Prerequisites (instruct the human)

Before any action works, the human must:

  1. Sign up at clawpost.net
  2. Install the Claw Post Chrome extension from the Chrome Web Store
  3. Pair the extension in the Dashboard (6-digit code from the extension popup)
  4. Set the CLAWPOST_API_KEY environment variable in the agent (copy the key from the Dashboard — it is not embedded in this skill file)
  5. Log in to the target platform once in their browser (x.com, linkedin.com, facebook.com, or tiktok.com)

Extension scope. The Chrome extension is designed to activate on supported social sites and when communicating with the Claw Post API. Verify permissions on the Chrome Web Store listing and review the Terms of Service before installing.

If the agent gets EXTENSION_NOT_PAIRED or not_logged_in, direct the human to complete these steps.

Authentication

All requests use the clawpost-api-key header:

clawpost-api-key: YOUR_CLAWPOST_API_KEY

The value above is a placeholder. Set the real secret via the CLAWPOST_API_KEY environment variable (or your agent’s secret store); do not paste live keys into this file or commit them to version control.

API Base URL

https://api.clawpost.net

This is the stable, official Claw Post API endpoint. Full documentation: https://clawpost.net/api-docs


1. Posting

Create a post job, then poll for completion.

Create post

POST https://api.clawpost.net/v1/jobs/tweet
Content-Type: application/json
clawpost-api-key: YOUR_CLAWPOST_API_KEY

X (Twitter):

{ "text": "Hello world!", "platform": "x" }

LinkedIn:

{ "text": "Hello LinkedIn!", "platform": "linkedin" }

Facebook feed:

{ "text": "Hello Facebook!", "platform": "facebook" }

Facebook group (use groupUrl from search results, or a known groupId):

{
  "text": "Hello group!",
  "platform": "facebook",
  "platformPayload": { "groupUrl": "https://www.facebook.com/groups/123456789/" }
}

TikTok (video + caption):

{ "text": "Caption text", "platform": "tiktok", "mediaPaths": [""] }

Optional fields:

  • platform"x" (default), "linkedin", "facebook", or "tiktok"
  • mediaPaths – array of media URLs (upload first via media endpoint below)
  • idempotencyKey – unique string to prevent duplicate posts
  • platformPayload – Facebook group targeting: { "groupId": "..." } or { "groupUrl": "..." }

Poll job status

GET https://api.clawpost.net/v1/jobs/:id

Status progresses: queuedprocessingsucceeded | failed.

  • On success: response may include postUrl.
  • On failure: response includes error and errorCode.
  • Timing: posts execute through a real browser session. Allow 10–30 seconds before the job completes. Poll every 5–10 seconds.

2. Media upload

Upload media before posting. The returned URL goes into the mediaPaths array.

POST https://api.clawpost.net/v1/media/upload
clawpost-api-key: YOUR_CLAWPOST_API_KEY
Content-Type: multipart/form-data
Body: file=

Response:

{ "url": "https://storage.googleapis.com/..." }

Then include in a post:

{ "text": "Check this out!", "platform": "x", "mediaPaths": [""] }

Discover relevant groups to join and post in. Returns ranked results with names, member counts, activity hints, and join status.

Create search job

POST https://api.clawpost.net/v1/groups/search
Content-Type: application/json
clawpost-api-key: YOUR_CLAWPOST_API_KEY
{
  "platform": "facebook",
  "query": "ai automation",
  "filters": { "minMembers": 1000, "privacy": "any" },
  "limit": 20
}
  • platform: must be "facebook" (only supported platform for now).
  • query: search keywords (required).
  • filters.minMembers: minimum member count (optional).
  • filters.privacy: "public", "private", or "any" (optional).
  • limit: max results, up to 50 (optional, default 20).

Response:

{ "jobId": "" }

Read search results

Poll GET https://api.clawpost.net/v1/jobs/:id until status is succeeded.

Results are in details.groupSearch.results[]. Each result:

FieldTypeDescription
namestringGroup title (best-effort; may say "Group" if title not extractable)
urlstringCanonical group URL — use this for joining or posting
platformIdstring?Numeric Facebook group ID (when available)
slugstring?URL slug (when available, e.g. "aiautomationagency")
privacystring?"public", "private", or "unknown"
memberCountnumber?Approximate member count (when visible on search page)
activityHintstring?Raw activity text, e.g. "10 posts a day"
joinStatusstring?"joined", "requested", "not_member", or "unknown"
scorenumber0–1 relevance score (higher = better match)
reasonsstring[]Why this group scored well (e.g. "keyword match", "large member base", "active", "public")
signalsobject?Raw numeric signals: keywordHit, memberCount, activityPerDay

Reliability notes:

  • url is always present and reliable. Use it as the primary identifier.
  • name, memberCount, privacy, activityHint, and joinStatus are best-effort; they depend on what the search page exposes.
  • score and reasons are computed by the extension from available signals.

4. Facebook Group Join

Join a group so you can post to it. Use the url from search results (extract the group ID or pass the full URL).

Join a group

POST https://api.clawpost.net/v1/facebook/groups/join
Content-Type: application/json
clawpost-api-key: YOUR_CLAWPOST_API_KEY
{ "groupId": "123456789" }

Response: a job object. Poll GET /v1/jobs/:id for completion.

On success, check details.buttonState:

  • "joined" – user is now a member; you can post.
  • "requested" – group requires approval; wait and check status later.
  • "not_member" – join may not have worked; retry or inspect.

Check group membership status

POST https://api.clawpost.net/v1/facebook/groups/status
Content-Type: application/json
clawpost-api-key: YOUR_CLAWPOST_API_KEY
{ "groupId": "123456789" }

Same polling pattern. details.buttonState tells you the current membership state.


Recommended agent workflow: discover → join → post

  1. Search for groups: POST /v1/groups/search with a relevant query.
  2. Evaluate results: prefer groups with high score, memberCount >= 1000, privacy: "public", and activityHint showing regular posts.
  3. Check membership: look at joinStatus in results:
    • "joined" → skip to step 5.
    • "not_member" or "unknown" → proceed to step 4.
  4. Join: call POST /v1/facebook/groups/join with the group ID (extract from url or use platformId). Poll until details.buttonState is "joined" or "requested".
  5. Post: call POST /v1/jobs/tweet with platform: "facebook" and platformPayload: { "groupUrl": "" }.

Important: Some groups require admin approval before you can post. If details.buttonState is "requested", wait and re-check status later before attempting to post.


Security and privacy

  • Social platform logins stay in the browser. Posting uses the user’s existing session in Chrome. Claw Post does not ask you to send OAuth tokens or social passwords through this API for posting.
  • Extension scope. The published extension declares host access for supported social domains and the Claw Post API. Inspect the Web Store listing and manifest permissions before installing.
  • API key is tenant-scoped. Each CLAWPOST_API_KEY is tied to a single account and can be rotated from the Dashboard at any time.
  • HTTPS only. All communication between the agent, the API, and the extension uses TLS.
  • No executable code. This skill is instruction-only. It contains no scripts, no disk writes, no packages, and no persistence mechanisms.
  • Terms of Service: clawpost.net/terms

Error handling

Code / errorCodeCauseAction
401Invalid or missing API keyCheck clawpost-api-key header
503 / EXTENSION_NOT_PAIREDNo paired extensionUser must install and pair the extension at clawpost.net/dashboard
not_logged_inUser not logged in to the platformUser must log in to the platform in their browser
no_x_tab / no_platform_tabNo browser tab for the platformRetry; extension will try to open one
content_script_unavailableExtension could not reach the tabAsk user to refresh the platform tab, then retry
selector_not_foundPlatform UI changed or element not foundRetry after a short delay
group_not_approvedUser not approved to post in this groupJoin the group first or wait for approval; do not retry immediately
challenge_requiredPlatform security check (captcha/checkpoint)Ask user to complete the challenge in their browser, then retry

On any failure, poll GET /v1/jobs/:id and read error and errorCode for details.


Reference

Full API docs: https://clawpost.net/api-docs

Related skills

Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.

by Iván555 installs18 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Read and write Excel workbooks, worksheets, ranges, tables, and charts in OneDrive through Microsoft Graph with managed OAuth.

by byungkyu800 installs42 stars

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars