Skills productclank-campaigns

Community-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.

install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/0xcovariance/productclank-community-growth" ~/.claude/skills/clawdbot-skills-productclank-campaigns && rm -rf "$T"
manifest: skills/0xcovariance/productclank-community-growth/SKILL.md
source content

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

PlatformRepliesLikesReposts
Twitter/XYesYesYes
InstagramYesYes
TikTokYesYes
LinkedInYesYes
RedditYesYes
FarcasterYesYesYes

How It Works

  1. Provide a post URL from any supported platform
  2. Platform is auto-detected from the URL
  3. Choose action: replies, likes, or reposts (availability varies by platform)
  4. Community members execute from their personal accounts
  5. You get authentic, third-party engagement

Pricing

ActionWhat You GetCredits
Replies10 AI-generated reply threads200
Likes30 community likes300
Reposts10 community reposts300

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
, and
tweet_author
are 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)

  1. Get the post URL — ask the user for their post URL (the post they want community to engage with). Any supported platform works.
  2. 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.
  3. Find the product — search
    GET /agents/products/search?q=<name>
    and confirm with user (see Confirm Product Selection)
  4. 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
  5. Confirm cost — "This will use 200 credits for 10 community replies. Proceed?"
  6. Execute
    POST /agents/campaigns/boost
  7. 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:

  1. Client-provided
    post_text
    (skips fetch — recommended for non-Twitter platforms)
  2. Server-side fetch via platform API (Twitter oEmbed, TikTok oEmbed, Reddit JSON, etc.)
  3. If text unavailable, returns
    503
    for 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

  1. Define keywords and target audience
  2. AI discovers relevant conversations on Twitter
  3. AI generates contextual replies for each opportunity
  4. Community members claim replies and post from personal accounts
  5. Track results in real-time

Pricing

OperationCredits
Campaign creation10
Post discovery + reply generation12 per post
Reply regeneration5 per reply
Research analysisFree

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_id
    from 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

FieldTypeDescription
product_id
UUIDProduct on ProductClank
title
stringCampaign title
keywords
string[]Non-empty array of target keywords
search_context
stringDescription of target conversations

Optional Fields

FieldTypeDefaultDescription
mention_accounts
string[]
[]
Handles to mention naturally
reply_style_tags
string[]
[]
Tone tags (friendly, technical, etc.)
reply_style_account
stringHandle to mimic style
reply_length
enumvery-short, short, medium, long, mixed
reply_posted_by
enumcommunitycommunity or brand
reply_guidelines
stringautoCustom AI generation instructions
min_follower_count
number100Min followers filter
min_engagement_count
numberMin engagement filter
max_post_age_days
numberMax post age filter
require_verified
booleanfalseVerified accounts only

Choosing Between Boost and Discover

QuestionBoostDiscover
Do you have a post URL?Yes — your own post you want community to engage withNo
Platforms?Twitter, Instagram, TikTok, LinkedIn, Reddit, FarcasterTwitter only
Time to value?~30 seconds~5 minutes
Setup complexity?1 API call2-3 API calls
Best for?Rally community around your post (replies, likes, reposts)Finding & joining new conversations about your topic
Ongoing?One-time per postCan 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:

  1. Search:
    GET /api/v1/agents/products/search?q=<name>&limit=5
  2. Present results: "I found [Product Name] (product_id:
    ...
    ). Is this correct?"
  3. 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

EndpointMethodCostDescription
/agents/register
POSTFreeRegister agent, get API key
/agents/me
GETFreeAgent profile + credit balance
/agents/create-link
POSTFreeGenerate account linking URL
/agents/rotate-key
POSTFreeRotate API key
/agents/campaigns
GETFreeList campaigns
/agents/campaigns/{id}
GETFreeCampaign details + stats
/agents/campaigns/{id}/posts
GETFreeRead posts + replies
/agents/campaigns/{id}/research
GETFreeRead cached research
/agents/credits/balance
GETFreeCredit balance
/agents/credits/history
GETFreeTransaction history
/agents/products/search
GETFreeSearch products

For complete API reference, see references/API_REFERENCE.md.


Best Practices

For Boost

  • Use
    reply_guidelines
    to 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_text
    to 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_days
    to 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

StatusErrorFix
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