Clawpost
AI 驱动的社交媒体发布,适用于 LinkedIn 和 X (Twitter),具有算法优化和计划安排。
技能说明
name: clawpost description: AI-powered social media publishing for LinkedIn and X (Twitter) with algorithm optimization and scheduling. version: 0.1.3 metadata: openclaw: emoji: "📱" homepage: https://clawpost.dev primaryEnv: CLAW_API_KEY requires: env: - CLAW_API_KEY bins: - curl
Social Media Publisher Skill
ClawPost helps you create, manage, and publish content to LinkedIn and X (Twitter) — with AI-assisted writing, drafts, scheduling, and direct publishing via API.
Getting Started
If the user doesn't have an account or API key yet, walk them through these steps:
- Sign up at clawpost.dev — sign in with LinkedIn.
- Connect platforms — In the Dashboard, connect LinkedIn and/or X (Twitter) accounts.
- Add credits — Go to Dashboard → Billing and top up credits (minimum $5). Credits are used for AI generation features.
- Generate an API key — Go to Dashboard → Settings → API Keys → Generate New Key. The key starts with
claw_. - Set the environment variable:
export CLAW_API_KEY="claw_your_key_here"
Setup
Required environment variable:
CLAW_API_KEY— your API key (starts withclaw_). Generate one following the steps above.
Optional:
CLAW_API_URL— defaults tohttps://clawpost.dev. Only set this if using a self-hosted instance.
All endpoints are under {{CLAW_API_URL}}/api/claw/v1/ (default: https://clawpost.dev/api/claw/v1/).
Authentication
Every request needs the header:
Authorization: Bearer {{CLAW_API_KEY}}
Important: Passing JSON in shell commands
When sending JSON data with curl, always use a heredoc to avoid shell escaping issues with quotes and special characters:
curl -s -X POST URL \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"key": "value"}
EOF
All examples below use this pattern. Do not use -d '{...}' with single quotes — it breaks when content contains quotes, newlines, or special characters.
Response Format
All responses follow this shape:
{
"success": true,
"message": "Human-readable summary",
"data": { ... },
"error": { "code": "ERROR_CODE", "details": "..." }
}
Always read the message field — it's designed to be relayed directly to the user.
Endpoints
Check Status
Verify your API key works and see what's connected.
curl -s {{CLAW_API_URL}}/api/claw/v1/status \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
List Connected Platforms
curl -s {{CLAW_API_URL}}/api/claw/v1/platforms \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
Check Credits
curl -s {{CLAW_API_URL}}/api/claw/v1/credits \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
List Posts
Filter by status (draft, published, scheduled, failed) and platform (linkedin, twitter).
curl -s "{{CLAW_API_URL}}/api/claw/v1/posts?status=draft&platform=linkedin&limit=10" \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
X Post History
Retrieve your X (Twitter) post history from the cached profile data. This is a read-only endpoint - no credits are used.
Query parameters:
type-posts,replies, orall(default:all)limit- max results, 1-100 (default:20)period-7d,30d,90d, orall(default:all)
curl -s "{{CLAW_API_URL}}/api/claw/v1/history/x?type=posts&period=30d&limit=10" \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
The response includes a summary object with aggregated metrics (totalPosts, totalReplies, totalLikes, totalRetweets, totalRepliesReceived, totalImpressions, topPost) and a posts array with individual tweet details, metrics, media, and reply context.
Get Single Post
curl -s {{CLAW_API_URL}}/api/claw/v1/posts/POST_ID \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
Each post includes an availableActions array (e.g., ["publish", "schedule", "update", "delete"]).
Post Object Fields
Every post includes a postType field:
"original"— a regular post composed by the user"quote"— a quote tweet of another post (X only)"reply"— a reply to another post (X only)"remix"— an original tweet inspired by another post (X only)
When postType is "quote", "reply", or "remix", the post also includes a reference object with the original tweet's context:
{
"postType": "quote",
"content": "User's commentary text",
"reference": {
"tweetId": "1234567890",
"text": "The original tweet text that was quoted",
"author": "originalAuthor"
}
}
This lets you see exactly what was quoted/replied to alongside the user's own text.
Create a Draft
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/drafts \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"content": "Your post text here", "platform": "linkedin"}
EOF
Platform: "linkedin" or "twitter". Twitter content must be ≤ 280 characters.
Update a Draft
curl -s -X PUT {{CLAW_API_URL}}/api/claw/v1/posts/POST_ID \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"content": "Updated post text"}
EOF
Delete a Draft
curl -s -X DELETE {{CLAW_API_URL}}/api/claw/v1/posts/POST_ID \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
Publish a Draft
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/posts/POST_ID/publish \
-H "Authorization: Bearer {{CLAW_API_KEY}}"
Direct Publish (No Draft Step)
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/publish \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"content": "Publishing this directly!", "platform": "linkedin"}
EOF
Schedule a Draft
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/posts/POST_ID/schedule \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"scheduledAt": "2026-06-15T10:00:00Z"}
EOF
Direct Schedule (No Draft Step)
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/schedule \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"content": "Scheduled post!", "platform": "linkedin", "scheduledAt": "2026-06-15T10:00:00Z"}
EOF
AI Generate Post
Let AI write a post based on your prompt. Optional: tone and platform.
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/ai/generate \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"prompt": "Write about the importance of code reviews", "platform": "linkedin"}
EOF
AI Refine Post
Improve existing content with instructions.
curl -s -X POST {{CLAW_API_URL}}/api/claw/v1/ai/refine \
-H "Authorization: Bearer {{CLAW_API_KEY}}" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{"content": "Original post text...", "instructions": "Make it shorter and punchier", "platform": "linkedin"}
EOF
Workflow Tips
- Quick publish: Use
/publishto post immediately without creating a draft. - Review flow: Create a draft with
/drafts, refine with/ai/refine, then publish with/posts/ID/publish. - Cross-post: Make separate calls for LinkedIn and Twitter — each is a separate post.
- Check before publishing: Call
/platformsto verify the target platform is connected. - Twitter limit: Tweets must be ≤ 280 characters. The API will reject longer content with a clear message.
Error Codes
| Code | Meaning |
|---|---|
UNAUTHORIZED | Invalid or revoked API key |
NOT_FOUND | Post or resource doesn't exist |
VALIDATION_ERROR | Bad input (missing content, too long, invalid date) |
CONFLICT | Can't perform action (e.g., already published) |
PLATFORM_NOT_CONNECTED | Target social platform isn't linked |
INSUFFICIENT_CREDITS | Not enough credits for AI operations |
NO_AI_KEY | No AI API key configured |
RATE_LIMITED | Too many requests (60/min general, 10/min publish) |
INTERNAL_ERROR | Something went wrong server-side |
如何使用「Clawpost」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「Clawpost」技能完成任务
- 结果即时呈现,支持继续对话优化