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
| Capability | Endpoint | Platforms |
|---|
| Post to feed or group | INLINECODE1 | X, LinkedIn, Facebook, TikTok |
| Upload media for posts |
POST /v1/media/upload | X, LinkedIn, Facebook, TikTok |
| Search for groups |
POST /v1/groups/search | Facebook |
| Join a group |
POST /v1/facebook/groups/join | Facebook |
| Check group membership |
POST /v1/facebook/groups/status | Facebook |
| Poll any job result |
GET /v1/jobs/:id | All |
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
- Install the Claw Post Chrome extension from the Chrome Web Store
- Pair the extension in the Dashboard (6-digit code from the extension popup)
- Set the
CLAWPOST_API_KEY environment variable in the agent (copy the key from the Dashboard — it is not embedded in this skill file) - 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:
CODEBLOCK0
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
CODEBLOCK1
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
CODEBLOCK2
X (Twitter):
CODEBLOCK3
LinkedIn:
CODEBLOCK4
Facebook feed:
CODEBLOCK5
Facebook group (use groupUrl from search results, or a known groupId):
CODEBLOCK6
TikTok (video + caption):
CODEBLOCK7
Optional fields:
- -
platform – "x" (default), "linkedin", "facebook", or INLINECODE19 - INLINECODE20 – array of media URLs (upload first via media endpoint below)
- INLINECODE21 – unique string to prevent duplicate posts
- INLINECODE22 – Facebook group targeting:
{ "groupId": "..." } or INLINECODE24
Poll job status
CODEBLOCK8
Status progresses: queued → processing → succeeded | 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.
CODEBLOCK9
Response:
CODEBLOCK10
Then include in a post:
{ "text": "Check this out!", "platform": "x", "mediaPaths": ["<url from upload>"] }
3. Facebook Group Search
Discover relevant groups to join and post in. Returns ranked results with names, member counts, activity hints, and join status.
Create search job
CODEBLOCK12
CODEBLOCK13
- -
platform: must be "facebook" (only supported platform for now). - INLINECODE35 : search keywords (required).
- INLINECODE36 : minimum member count (optional).
- INLINECODE37 :
"public", "private", or "any" (optional). - INLINECODE41 : max results, up to 50 (optional, default 20).
Response:
CODEBLOCK14
Read search results
Poll GET https://api.clawpost.net/v1/jobs/:id until status is succeeded.
Results are in details.groupSearch.results[]. Each result:
| Field | Type | Description |
|---|
| INLINECODE46 | string | Group title (best-effort; may say "Group" if title not extractable) |
| INLINECODE47 |
string |
Canonical group URL — use this for joining or posting |
|
platformId | string? | Numeric Facebook group ID (when available) |
|
slug | string? | URL slug (when available, e.g.
"aiautomationagency") |
|
privacy | string? |
"public",
"private", or
"unknown" |
|
memberCount | number? | Approximate member count (when visible on search page) |
|
activityHint | string? | Raw activity text, e.g.
"10 posts a day" |
|
joinStatus | string? |
"joined",
"requested",
"not_member", or
"unknown" |
|
score | number | 0–1 relevance score (higher = better match) |
|
reasons | string[] | Why this group scored well (e.g.
"keyword match",
"large member base",
"active",
"public") |
|
signals | object? | Raw numeric signals:
keywordHit,
memberCount,
activityPerDay |
Reliability notes:
- -
url is always present and reliable. Use it as the primary identifier. - INLINECODE74 ,
memberCount, privacy, activityHint, and joinStatus are best-effort; they depend on what the search page exposes. - INLINECODE79 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
CODEBLOCK15
CODEBLOCK16
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. - INLINECODE85 – group requires approval; wait and check status later.
- INLINECODE86 – join may not have worked; retry or inspect.
Check group membership status
CODEBLOCK17
CODEBLOCK18
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. - Evaluate results: prefer groups with high
score, memberCount >= 1000, privacy: "public", and activityHint showing regular posts. - 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". - Post: call
POST /v1/jobs/tweet with platform: "facebook" and platformPayload: { "groupUrl": "<url from search>" }.
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 / errorCode | Cause | Action |
|---|
| 401 | Invalid or missing API key | Check clawpost-api-key header |
| 503 / INLINECODE110 |
No paired extension | User must install and pair the extension at clawpost.net/dashboard |
|
not_logged_in | User not logged in to the platform | User must log in to the platform in their browser |
|
no_x_tab /
no_platform_tab | No browser tab for the platform | Retry; extension will try to open one |
|
content_script_unavailable | Extension could not reach the tab | Ask user to refresh the platform tab, then retry |
|
selector_not_found | Platform UI changed or element not found | Retry after a short delay |
|
group_not_approved | User not approved to post in this group | Join the group first or wait for approval; do not retry immediately |
|
challenge_required | Platform 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
Claw Post
AI代理的社交发布基础设施。一个配对的浏览器扩展程序从用户的真实浏览器会话中发布内容——无需社交平台的API密钥。
为什么选择Claw Post
- - 零凭证暴露风险。 无需将OAuth令牌或社交平台密码发送给代理或Claw Post进行发布。您只需使用一个Claw Post API密钥进行API调用;社交会话保留在配对的Chrome浏览器中。
- 更低的封号风险。 帖子通过真实的浏览器UI以类人节奏发布——而非通过被标记为自动化的API端点或无头浏览器。
- 多平台,单一API。 X、LinkedIn、Facebook(信息流和群组)以及TikTok——全部通过一个POST /v1/jobs/tweet端点实现。
- Facebook群组自动化。 按关键词搜索、按规模和活跃度筛选、加入群组并发布——实现从发现到发布的完整工作流程,传统OAuth工具无法做到。
- 简单设置。 注册→安装扩展→使用6位数字码配对→提供一个API密钥。无需OAuth应用注册、无需令牌刷新逻辑、无需每个平台的凭证。
- 每次发布成本低。 包含免费套餐;付费计划价格实惠。详见clawpost.net定价页面。
功能
| 功能 | 端点 | 平台 |
|---|
| 发布到信息流或群组 | POST /v1/jobs/tweet | X、LinkedIn、Facebook、TikTok |
| 上传帖子媒体 |
POST /v1/media/upload | X、LinkedIn、Facebook、TikTok |
| 搜索群组 | POST /v1/groups/search | Facebook |
| 加入群组 | POST /v1/facebook/groups/join | Facebook |
| 检查群组成员资格 | POST /v1/facebook/groups/status | Facebook |
| 轮询任何任务结果 | GET /v1/jobs/:id | 全部 |
所有端点都需要clawpost-api-key请求头。
前提条件(指导用户)
在任何操作生效之前,用户必须:
- 1. 注册 访问clawpost.net
- 安装 从Chrome网上应用店安装Claw Post Chrome扩展
- 配对 在仪表盘中配对扩展(使用扩展弹窗中的6位数字码)
- 设置 在代理中设置CLAWPOSTAPIKEY环境变量(从仪表盘复制密钥——它未嵌入此技能文件中)
- 登录 在浏览器中登录目标平台一次(x.com、linkedin.com、facebook.com或tiktok.com)
扩展范围。 Chrome扩展设计为在支持的社交网站上以及与Claw Post API通信时激活。安装前请查看Chrome网上应用店列表中的权限,并查阅服务条款。
如果代理收到EXTENSIONNOTPAIRED或notloggedin错误,请指导用户完成这些步骤。
身份验证
所有请求使用clawpost-api-key请求头:
clawpost-api-key: YOURCLAWPOSTAPI_KEY
上述值为占位符。通过CLAWPOSTAPIKEY环境变量(或代理的密钥存储)设置真实密钥;请勿将实时密钥粘贴到此文件中或提交到版本控制。
API基础URL
https://api.clawpost.net
这是稳定、官方的Claw Post API端点。完整文档:https://clawpost.net/api-docs
1. 发布
创建发布任务,然后轮询完成状态。
创建发布
POST https://api.clawpost.net/v1/jobs/tweet
Content-Type: application/json
clawpost-api-key: YOURCLAWPOSTAPI_KEY
X(Twitter):
json
{ text: Hello world!, platform: x }
LinkedIn:
json
{ text: Hello LinkedIn!, platform: linkedin }
Facebook信息流:
json
{ text: Hello Facebook!, platform: facebook }
Facebook群组(使用搜索结果中的groupUrl,或已知的groupId):
json
{
text: Hello group!,
platform: facebook,
platformPayload: { groupUrl: https://www.facebook.com/groups/123456789/ }
}
TikTok(视频+标题):
json
{ text: Caption text, platform: tiktok, mediaPaths: [] }
可选字段:
- - platform – x(默认)、linkedin、facebook或tiktok
- mediaPaths – 媒体URL数组(先通过下方媒体端点上传)
- idempotencyKey – 唯一字符串,防止重复发布
- platformPayload – Facebook群组定位:{ groupId: ... }或{ groupUrl: ... }
轮询任务状态
GET https://api.clawpost.net/v1/jobs/:id
状态进度:queued → processing → succeeded | failed。
- - 成功时:响应可能包含postUrl。
- 失败时:响应包含error和errorCode。
- 时间安排:通过真实浏览器会话执行发布。任务完成前请等待10-30秒。每5-10秒轮询一次。
2. 媒体上传
在发布前上传媒体。返回的URL放入mediaPaths数组。
POST https://api.clawpost.net/v1/media/upload
clawpost-api-key: YOURCLAWPOSTAPI_KEY
Content-Type: multipart/form-data
Body: file=<媒体文件>
响应:
json
{ url: https://storage.googleapis.com/... }
然后在发布中包含:
json
{ text: Check this out!, platform: x, mediaPaths: [] }
3. Facebook群组搜索
发现相关群组以加入和发布。返回排名结果,包含名称、成员数、活跃度提示和加入状态。
创建搜索任务
POST https://api.clawpost.net/v1/groups/search
Content-Type: application/json
clawpost-api-key: YOURCLAWPOSTAPI_KEY
json
{
platform: facebook,
query: ai automation,
filters: { minMembers: 1000, privacy: any },
limit: 20
}
- - platform:必须为facebook(目前仅支持此平台)。
- query:搜索关键词(必填)。
- filters.minMembers:最小成员数(可选)。
- filters.privacy:public、private或any(可选)。
- limit:最大结果数,最多50(可选,默认20)。
响应:
json
{ jobId: }
读取搜索结果
轮询GET https://api.clawpost.net/v1/jobs/:id直到status为succeeded。
结果在details.groupSearch.results[]中。每个结果:
| 字段 | 类型 | 描述 |
|---|
| name | string | 群组标题(尽力而为;如果标题无法提取,可能显示Group) |
| url |
string |
规范群组URL — 用于加入或发布 |
| platformId | string? | 数字型Facebook群组ID(可用时) |
| slug | string? | URL别名(可用时,例如aiautomationagency) |
| privacy | string? | public、private或unknown |
| memberCount | number? | 近似成员数(在搜索页面上可见时) |
| activityHint | string? | 原始活跃度文本,例如10 posts a day |
| joinStatus | string? | joined、requested、not_member或unknown |
| score | number | 0-1相关性分数(越高匹配越好) |
| reasons | string[] | 该群组得分高的原因(例如keyword match、large member base、active、public) |
| signals | object? | 原始数字信号:keywordHit、memberCount、activityPerDay |
可靠性说明:
-