Install
openclaw skills install productclank-community-growthCommunity-powered growth for builders. Boost amplifies your social posts with authentic community engagement (replies, likes, reposts). Discover finds relevant conversations and generates AI-powered replies at scale. Use Boost when the user has a post URL. Use Discover when the user wants to find and engage in conversations about their product.
openclaw skills install productclank-community-growthTurn your community into a growth engine. Launch campaigns where real people amplify your product across social platforms — authentic engagement, not bots.
Supports Twitter/X, Instagram, TikTok, LinkedIn, Reddit, and Farcaster.
Amplify a specific social post with community-powered engagement.
Use Boost when the user has a post URL they want to amplify. One API call, instant results. Works across platforms — just pass the URL.
| Platform | Replies | Likes | Reposts |
|---|---|---|---|
| Twitter/X | Yes | Yes | Yes |
| Yes | Yes | — | |
| TikTok | Yes | Yes | — |
| Yes | Yes | — | |
| Yes | Yes | — | |
| Farcaster | Yes | Yes | Yes |
| Action | What You Get | Credits |
|---|---|---|
| Replies | 10 AI-generated reply threads | 200 |
| Likes | 30 community likes | 300 |
| Reposts | 10 community reposts | 300 |
POST /api/v1/agents/campaigns/boost
{
"post_url": "https://x.com/user/status/123456",
"product_id": "product-uuid",
"action_type": "replies",
"reply_guidelines": "optional custom instructions",
"post_text": "optional — pass post text to skip server-side fetch",
"post_author": "optional — post author username (used with post_text)"
}
tweet_url,tweet_text, andtweet_authorare still accepted for backward compatibility.
Response:
{
"success": true,
"campaign": {
"id": "uuid",
"campaign_number": "CP-042",
"platform": "twitter",
"url": "https://app.productclank.com/communiply/uuid"
},
"post": {
"id": "123456789",
"url": "https://x.com/user/status/123456789",
"text": "Post content...",
"author": "username",
"platform": "twitter"
},
"items_generated": 10,
"credits": {
"credits_used": 200,
"credits_remaining": 100
}
}
Consolidation: All boost actions for the same product share one campaign. Boosting again adds to the existing campaign (is_reboost: true).
GET /agents/products/search?q=<name> and confirm with user (see Confirm Product Selection)reply_guidelinesPOST /agents/campaigns/boost// User says: "Get my community to engage with my latest announcement"
const API = "https://app.productclank.com/api/v1/agents";
const headers = {
"Authorization": `Bearer ${process.env.PRODUCTCLANK_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Search for the product
const search = await fetch(`${API}/products/search?q=MyProduct&limit=5`, { headers });
const { products } = await search.json();
// → Confirm with user: "I found MyProduct. Is this correct?"
// 2. Boost a Twitter post
const res = await fetch(`${API}/campaigns/boost`, {
method: "POST",
headers,
body: JSON.stringify({
post_url: "https://x.com/myproduct/status/123456789",
product_id: products[0].id,
action_type: "replies",
reply_guidelines: "Show genuine excitement about the launch. Ask thoughtful questions about the new features or congratulate the team. Keep it authentic — no sales pitch.",
post_text: "We just shipped v2.0! New API with 10x faster response times, batch endpoints, and webhook support. Try it out →", // optional, skips server fetch
post_author: "myproduct", // optional, used with post_text
}),
});
const result = await res.json();
if (result.success) {
console.log(`✅ Boosted on ${result.campaign.platform}! ${result.items_generated} community replies generated`);
console.log(`📊 Dashboard: ${result.campaign.url}`);
console.log(`💰 Credits remaining: ${result.credits.credits_remaining}`);
}
// 3. Works with any platform — just change the URL
await fetch(`${API}/campaigns/boost`, {
method: "POST",
headers,
body: JSON.stringify({
post_url: "https://www.linkedin.com/posts/myproduct-launch-update-123",
product_id: products[0].id,
action_type: "replies",
post_text: "Excited to announce our Series A! ...", // recommended for non-Twitter platforms
}),
});
# Boost a Twitter post
communiply boost https://x.com/myproduct/status/123 --action replies \
--guidelines "Congratulate the team, ask about new features, show excitement"
# Boost a LinkedIn post
communiply boost https://linkedin.com/posts/myproduct-update-123 --action likes
# Boost a TikTok video
communiply boost https://tiktok.com/@myproduct/video/123 --action replies
# Boost a Farcaster cast
communiply boost https://warpcast.com/myproduct/0xabc123 --action reposts
For replies, post text is required for AI generation. Resolution order:
post_text (skips fetch — recommended for non-Twitter platforms)503 for replies. Likes/reposts work without text.Find relevant Twitter conversations and generate AI-powered replies at scale.
Use Discover when the user wants to proactively find and engage in conversations about their product's topic. This is a multi-step flow — more powerful than Boost, but requires more setup.
| Operation | Credits |
|---|---|
| Campaign creation | 10 |
| Post discovery + reply generation | 12 per post |
| Reply regeneration | 5 per reply |
| Research analysis | Free |
Step 1: Create campaign (10 credits)
POST /api/v1/agents/campaigns
{
"product_id": "product-uuid",
"title": "Launch Week Buzz",
"keywords": ["AI tools", "productivity apps", "workflow automation"],
"search_context": "People discussing AI productivity tools and looking for better solutions",
"mention_accounts": ["@myproduct"],
"reply_style_tags": ["friendly", "helpful"],
"reply_length": "short",
"reply_posted_by": "community",
"min_follower_count": 500,
"max_post_age_days": 7
}
Step 2 (optional): Run research (free)
POST /api/v1/agents/campaigns/{id}/research
Expands keywords, discovers influencers, finds Twitter lists. Results are automatically used in Step 3.
Step 3: Generate posts (12 credits/post)
POST /api/v1/agents/campaigns/{id}/generate-posts
Discovers relevant tweets and generates AI replies for each.
Step 4 (optional): Review and refine
GET /api/v1/agents/campaigns/{id}/posts?include_replies=true
POST /api/v1/agents/campaigns/{id}/regenerate-replies
1. Launch Day Amplification
Create a campaign targeting conversations about new tools, launches, and your product category. Community claims AI-generated replies and posts from personal accounts — turning your launch into coordinated authentic buzz.
Keywords: ["Product Hunt launch", "new AI tools", "Show HN", "just launched"]
Credits: ~250 for a 20-post campaign
2. Competitor Intercept
Target keywords like "[Competitor] alternative" or "switching from [Competitor]". Community members naturally recommend your product in those threads with authentic, experience-based replies.
Keywords: ["Salesforce alternative", "switching from HubSpot", "better than Notion"]
3. Growth Campaign with Rewards Create a Communiply campaign + fund it with credits. Community members browse available posts, claim reply opportunities, post from their accounts, and earn rewards for verified engagement. 60-80% lower CAC than traditional ads.
4. Problem-Based Targeting
Find people expressing pain points your product solves. AI generates helpful, contextual replies that naturally mention your solution.
Keywords: ["struggling with email marketing", "need a better CRM", "project management nightmare"]
5. Autonomous Growth Agent
Your agent monitors trending topics via external APIs, detects relevant conversations, and automatically creates Communiply campaigns. Users earn credits by participating, creating a self-sustaining growth flywheel.
Architecture: Cron job → Trend detection → POST /campaigns → POST /generate-posts → Community executes
Step 1: Gather requirements from the user. Ask for:
product_id from ProductClank)["AI tools", "productivity apps"])Optional refinements to ask about:
["@productclank"])["friendly", "technical", "casual"])min_follower_count (default 100), max_post_age_days, require_verifiedStep 2: Confirm product selection (see Confirm Product Selection)
Step 3: Create the campaign — POST /agents/campaigns
Step 4: Run research (recommended, free) — POST /agents/campaigns/{id}/research
This expands keywords and finds influencers. Results are automatically used during post generation.
Step 5: Generate posts — POST /agents/campaigns/{id}/generate-posts
Step 6: Share results with user:
Instead of auto-generated guidelines, provide custom instructions for more control:
{
"reply_guidelines": "Reply as a developer who has used our product for 6+ months.\nFocus on: ease of integration, excellent documentation, responsive support.\nAvoid: marketing speak, over-promising, comparing to competitors directly.\nMention @productclank naturally when relevant.\nInclude our website (https://productclank.com) if it adds value."
}
// User says: "I want to create a Twitter campaign for my DeFi app launch"
const API = "https://app.productclank.com/api/v1/agents";
const headers = {
"Authorization": `Bearer ${process.env.PRODUCTCLANK_API_KEY}`,
"Content-Type": "application/json",
};
// 1. Search for the product
const search = await fetch(`${API}/products/search?q=MyDeFiApp&limit=5`, { headers });
const { products } = await search.json();
// → Confirm with user: "I found MyDeFiApp. Is this correct?"
// 2. Create campaign (10 credits)
const campaign = await fetch(`${API}/campaigns`, {
method: "POST",
headers,
body: JSON.stringify({
product_id: products[0].id,
title: "DeFi App Launch Week",
keywords: ["DeFi platforms", "yield farming", "decentralized finance", "crypto staking"],
search_context: "People discussing DeFi platforms, yield farming strategies, and crypto staking opportunities",
mention_accounts: ["@mydefiapp"],
reply_style_tags: ["professional", "technical", "helpful"],
reply_length: "short",
min_follower_count: 1000,
max_post_age_days: 3,
}),
}).then(r => r.json());
console.log(`✅ Campaign created: ${campaign.campaign.campaign_number}`);
console.log(`📊 Dashboard: ${campaign.campaign.url}`);
// 3. Run research (free — improves targeting)
await fetch(`${API}/campaigns/${campaign.campaign.id}/research`, {
method: "POST",
headers,
body: JSON.stringify({ force: false }),
}).then(r => r.json());
// 4. Generate posts (12 credits/post)
const posts = await fetch(`${API}/campaigns/${campaign.campaign.id}/generate-posts`, {
method: "POST",
headers,
body: JSON.stringify({}),
}).then(r => r.json());
console.log(`✅ Generated ${posts.posts_created} posts`);
console.log(`💰 Credits used: ${campaign.credits.credits_used + posts.credits_used}`);
console.log(`💰 Credits remaining: ${posts.credits_remaining}`);
// 5. Optional: review and regenerate
const postsData = await fetch(
`${API}/campaigns/${campaign.campaign.id}/posts?include_replies=true`,
{ headers }
).then(r => r.json());
// Regenerate specific replies with new instructions
await fetch(`${API}/campaigns/${campaign.campaign.id}/regenerate-replies`, {
method: "POST",
headers,
body: JSON.stringify({
post_ids: [postsData.posts[0].id],
edit_request: "Make the replies shorter and more casual. Don't mention the product name directly.",
}),
}).then(r => r.json());
| Field | Type | Description |
|---|---|---|
product_id | UUID | Product on ProductClank |
title | string | Campaign title |
keywords | string[] | Non-empty array of target keywords |
search_context | string | Description of target conversations |
| Field | Type | Default | Description |
|---|---|---|---|
mention_accounts | string[] | [] | Handles to mention naturally |
reply_style_tags | string[] | [] | Tone tags (friendly, technical, etc.) |
reply_style_account | string | — | Handle to mimic style |
reply_length | enum | — | very-short, short, medium, long, mixed |
reply_posted_by | enum | community | community or brand |
reply_guidelines | string | auto | Custom AI generation instructions |
min_follower_count | number | 100 | Min followers filter |
min_engagement_count | number | — | Min engagement filter |
max_post_age_days | number | — | Max post age filter |
require_verified | boolean | false | Verified accounts only |
| Question | Boost | Discover |
|---|---|---|
| Do you have a post URL? | Yes — your own post you want community to engage with | No |
| Platforms? | Twitter, Instagram, TikTok, LinkedIn, Reddit, Farcaster | Twitter only |
| Time to value? | ~30 seconds | ~5 minutes |
| Setup complexity? | 1 API call | 2-3 API calls |
| Best for? | Rally community around your post (replies, likes, reposts) | Finding & joining new conversations about your topic |
| Ongoing? | One-time per post | Can generate multiple batches |
| Credits? | Fixed (200-300) | Variable (10 + 12/post) |
Rule of thumb: If the user has a specific post they want community to rally behind → Boost. If the user wants to find and join conversations about their product's topic → Discover.
// Self-register — no auth required
const res = await fetch("https://app.productclank.com/api/v1/agents/register", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ name: "MyAgent" }),
});
const { api_key, credits } = await res.json();
// → API key returned once (store securely)
// → 300 free credits to start
Top up credits via USDC on Base:
POST /api/v1/agents/credits/topup
After registering, link to a ProductClank account:
// Generate a linking URL
const linkRes = await fetch("https://app.productclank.com/api/v1/agents/create-link", {
method: "POST",
headers: { "Authorization": `Bearer ${api_key}` },
});
const { link_url } = await linkRes.json();
// Show link_url to user — they click it, log in, agent is linked
The agent then uses the user's credit balance for all operations.
For platform agents serving multiple users. Each user authenticates, agent bills per-user via caller_user_id. Contact ProductClank for trusted agent status.
Before creating any campaign (Boost or Discover), you MUST confirm the product with the user:
GET /api/v1/agents/products/search?q=<name>&limit=5...). Is this correct?"Do NOT skip this step.
Add users as delegators so they can manage campaigns in the webapp:
POST /api/v1/agents/campaigns/{id}/delegates
{ "user_id": "user-uuid" }
When using caller_user_id (trusted agents), the billing user is auto-added as a delegator.
| Endpoint | Method | Cost | Description |
|---|---|---|---|
/agents/register | POST | Free | Register agent, get API key |
/agents/me | GET | Free | Agent profile + credit balance |
/agents/create-link | POST | Free | Generate account linking URL |
/agents/rotate-key | POST | Free | Rotate API key |
/agents/campaigns | GET | Free | List campaigns |
/agents/campaigns/{id} | GET | Free | Campaign details + stats |
/agents/campaigns/{id}/posts | GET | Free | Read posts + replies |
/agents/campaigns/{id}/research | GET | Free | Read cached research |
/agents/credits/balance | GET | Free | Credit balance |
/agents/credits/history | GET | Free | Transaction history |
/agents/products/search | GET | Free | Search products |
For complete API reference, see references/API_REFERENCE.md.
reply_guidelines to control the tone and focus of generated repliespost_text to ensure reliable reply generation["AI productivity tools"] > ["AI"]max_post_age_days to 3-7 for timely engagementhttps://app.productclank.com/communiply/{id}| Status | Error | Fix |
|---|---|---|
| 400 | validation_error | Check required fields |
| 401 | unauthorized | Verify API key starts with pck_live_ |
| 402 | insufficient_credits | Top up via webapp or /credits/topup |
| 403 | forbidden | Check campaign ownership or trusted agent status |
| 404 | not_found | Verify product/campaign ID |
| 429 | rate_limit_exceeded | Wait until next day (10 campaigns/day default) |
Growth Boost — Community members create original content based on your campaign brief. Define your goals, target audience, and messaging — your community produces authentic posts, threads, and videos across any platform. API coming soon.