ProductClank — Community-Powered Growth for Builders
Turn 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.
Capability 1: Boost
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.
Supported Platforms
| Platform | Replies | Likes | Reposts |
|---|---|---|---|
| Twitter/X | Yes | Yes | Yes |
| Yes | Yes | — | |
| TikTok | Yes | Yes | — |
| Yes | Yes | — | |
| Yes | Yes | — | |
| Farcaster | Yes | Yes | Yes |
How It Works
- Provide a post URL from any supported platform
- Platform is auto-detected from the URL
- Choose action: replies, likes, or reposts (availability varies by platform)
- Community members execute from their personal accounts
- You get authentic, third-party engagement
Pricing
| Action | What You Get | Credits |
|---|---|---|
| Replies | 10 AI-generated reply threads | 200 |
| Likes | 30 community likes | 300 |
| Reposts | 10 community reposts | 300 |
API
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).
When to Use Boost
- "Boost this post" / "get engagement on my announcement"
- "Get community replies on my LinkedIn post"
- "Get likes on my tweet" / "get reposts on my cast"
- User shares a post URL from any platform and wants community engagement
- Launch announcements, product updates, partnership posts — any post you want your community to rally behind
How to Run a Boost (Agent Interaction Guide)
- Get the post URL — ask the user for their post URL (the post they want community to engage with). Any supported platform works.
- Choose action type — ask: "How should the community engage? Replies (support, questions, congrats), likes, or reposts?" Default to replies if unclear. Note: reposts only available on Twitter and Farcaster.
- Find the product — search
GET /agents/products/search?q=<name>and confirm with user (see Confirm Product Selection) - Get reply guidelines (for replies) — ask what kind of engagement they want: "Should community replies congratulate the team? Ask about features? Show excitement?" Use this to set
reply_guidelines - Confirm cost — "This will use 200 credits for 10 community replies. Proceed?"
- Execute —
POST /agents/campaigns/boost - Share results — show campaign URL and credits remaining
Complete Boost Example
// 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
}),
});
CLI
# 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
Post Text Resolution
For replies, post text is required for AI generation. Resolution order:
- Client-provided
post_text(skips fetch — recommended for non-Twitter platforms) - Server-side fetch via platform API (Twitter oEmbed, TikTok oEmbed, Reddit JSON, etc.)
- If text unavailable, returns
503for replies. Likes/reposts work without text.
Capability 2: Discover
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.
How It Works
- Define keywords and target audience
- AI discovers relevant conversations on Twitter
- AI generates contextual replies for each opportunity
- Community members claim replies and post from personal accounts
- Track results in real-time
Pricing
| Operation | Credits |
|---|---|
| Campaign creation | 10 |
| Post discovery + reply generation | 12 per post |
| Reply regeneration | 5 per reply |
| Research analysis | Free |
API Flow
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
When to Use Discover
- "Create a Twitter campaign" / "find relevant conversations"
- "Monitor competitor mentions" / "intercept competitor conversations"
- "Scale word-of-mouth" / "community-driven growth"
- "Launch day amplification" — find conversations about the product category
- User wants ongoing, proactive engagement (not one-off amplification)
Use Cases
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
How to Run a Discover Campaign (Agent Interaction Guide)
Step 1: Gather requirements from the user. Ask for:
- Product: What product are you promoting? (Get
product_idfrom ProductClank) - Campaign goal: What do you want to achieve? (e.g., "Launch week buzz", "Competitor intercept")
- Target keywords: What topics should we monitor? (e.g.,
["AI tools", "productivity apps"]) - Search context: Describe the conversations to target (e.g., "People discussing AI productivity tools and automation")
Optional refinements to ask about:
- Who posts replies: Brand (first-person: "We built this") or community (third-party: "Check out @brand")? Default: community
- Mention accounts: Twitter handles to reference naturally (e.g.,
["@productclank"]) - Reply style: Tone tags (e.g.,
["friendly", "technical", "casual"]) - Reply length: "very-short" | "short" | "medium" | "long" | "mixed"
- Custom guidelines: Specific instructions for AI reply generation (brand voice, do's and don'ts)
- Filters:
min_follower_count(default 100),max_post_age_days,require_verified
Step 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:
- Campaign dashboard URL
- Number of posts discovered and replies generated
- Credits used and remaining
- Next steps: community members will claim and execute replies
Custom Reply Guidelines
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."
}
Complete Discover Example
// 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());
Required Fields
| 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 |
Optional Fields
| 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 |
Choosing Between Boost and Discover
| 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.
Agent Setup
1. Autonomous Agent (self-funded)
// 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
2. Owner-Linked Agent (user-funded)
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.
3. Trusted Agent (multi-tenant) — Coming Soon
For platform agents serving multiple users. Each user authenticates, agent bills per-user via caller_user_id. Contact ProductClank for trusted agent status.
Confirm Product Selection (REQUIRED)
Before creating any campaign (Boost or Discover), you MUST confirm the product with the user:
- Search:
GET /api/v1/agents/products/search?q=<name>&limit=5 - Present results: "I found [Product Name] (product_id:
...). Is this correct?" - Wait for confirmation before proceeding.
Do NOT skip this step.
Campaign Delegates
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.
Additional Endpoints
| 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.
Best Practices
For Boost
- Use
reply_guidelinesto control the tone and focus of generated replies - Boost works best on posts less than 48 hours old
- You can boost the same post multiple times with different action types
- For non-Twitter platforms, pass
post_textto ensure reliable reply generation - AI replies are automatically tuned to each platform's character limits and tone conventions
For Discover
- Be specific with keywords:
["AI productivity tools"]>["AI"] - Use 3-7 keywords for the best discovery quality
- Run research first (free) — it significantly improves targeting
- Set
max_post_age_daysto 3-7 for timely engagement - Provide reply guidelines with brand voice, key value props, and boundaries
General
- Direct users to the dashboard after campaign creation:
https://app.productclank.com/communiply/{id} - Add users as delegators so they can manage campaigns in the webapp
- New accounts get 300 free credits (~$30 value)
Error Handling
| 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) |
Coming Soon
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.
Support
- Dashboard: app.productclank.com/communiply/
- Website: productclank.com
- Twitter: @productclank
- Warpcast: warpcast.com/productclank
- CLI: github.com/covariance-network/communiply-cli