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.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/productclank-community-growth/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How productclank-campaigns Compares
| Feature / Agent | productclank-campaigns | Standard Approach |
|---|---|---|
| Platform Support | multi | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
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.
Which AI agents support this skill?
This skill is compatible with multi.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 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 |
| Instagram | Yes | Yes | — |
| TikTok | Yes | Yes | — |
| LinkedIn | Yes | Yes | — |
| Reddit | Yes | Yes | — |
| Farcaster | Yes | Yes | Yes |
### 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
| 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
```
```json
{
"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:**
```json
{
"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](#confirm-product-selection-required))
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
```typescript
// 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
```bash
# 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
| 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
```
```json
{
"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](#confirm-product-selection-required))
**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:
```json
{
"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
```typescript
// 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)
```typescript
// 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:
```typescript
// 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
| 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](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
| 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/](https://app.productclank.com/communiply/)
- **Website:** [productclank.com](https://www.productclank.com)
- **Twitter:** [@productclank](https://twitter.com/productclank)
- **Warpcast:** [warpcast.com/productclank](https://warpcast.com/productclank)
- **CLI:** [github.com/covariance-network/communiply-cli](https://github.com/covariance-network/communiply-cli)