# Send Multi-Channel Engagement Agent to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "multi-channel-engagement-agent",
    "name": "Multi-Channel Engagement Agent",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/Story91/multi-channel-engagement-agent",
    "canonicalUrl": "https://clawhub.ai/Story91/multi-channel-engagement-agent",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/multi-channel-engagement-agent",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=multi-channel-engagement-agent",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "assets/sample-config.json",
      "references/persona-config.md",
      "references/platform-apis.md",
      "references/reply-strategies.md",
      "scripts/engage.mjs",
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/multi-channel-engagement-agent"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/multi-channel-engagement-agent",
    "downloadUrl": "https://openagent3.xyz/downloads/multi-channel-engagement-agent",
    "agentUrl": "https://openagent3.xyz/skills/multi-channel-engagement-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/multi-channel-engagement-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/multi-channel-engagement-agent/agent.md"
  }
}
```
## Documentation

### Multi-Channel Engagement Agent

Autonomous engagement bot for Twitter, Farcaster, and Moltbook. Fetches trending content, generates persona-driven contextual replies, tracks replied posts to prevent duplicates.

### 1. Create Config

Copy assets/sample-config.json to config.json and fill in your credentials (see Setup Guides section below).

### 2. Run Engagement

# Engage on specific platform
node scripts/engage.mjs --platform twitter
node scripts/engage.mjs --platform farcaster
node scripts/engage.mjs --platform moltbook

# Engage on all enabled platforms
node scripts/engage.mjs --all

### Dependencies & Setup Guides

This skill integrates multiple platforms. Setup each one:

### Farcaster Setup (required for Farcaster engagement)

Skill: farcaster-agent (https://clawhub.com/skills/farcaster-agent)

Prerequisites:

Minimum $1 ETH or USDC on any chain (Ethereum, Optimism, Base, Arbitrum, Polygon)
Minimum 0.0005 ETH on Optimism for FID registration

Auto-setup command:

clawhub install farcaster-agent
PRIVATE_KEY=0x... node src/auto-setup.js "Your first cast"

What you'll get:

{
  "fid": 123456,
  "neynarApiKey": "...",
  "signerPrivateKey": "...",
  "custodyPrivateKey": "0x..."
}

Cost breakdown:

FID registration: ~$0.20 (requires 0.0005 ETH + gas)
Signer key: ~$0.05
Bridging: ~$0.10-0.20
Total: ~$0.50 (budget $1 for safety)

Neynar API:

Free tier: 300 requests/minute
Get key: https://dev.neynar.com

### Twitter Setup (required for Twitter engagement)

Two options:

Option A: x-api (OAuth 1.0a, official)

Get credentials at https://developer.x.com/en/portal/dashboard
Create Project → App
Set permissions: Read and Write
Rate limits: Tweets 50/15min, Searches 450/15min

Option B: AISA API (alternative, good for trending)

AISA API endpoint: https://api.aisa.one/apis/v1/twitter/tweet/advanced_search
Get API key at https://aisa.one
Searches via AISA are fast and reliable for trending
Config: add aisaTwitterApiKey to twitter platform

Recommendation: Use AISA for trending discovery, x-api for posting (replies)

### Moltbook Setup (required for Moltbook engagement)

API Base: https://www.moltbook.com/api/v1 (note: use www)

Get API key:

Register at https://www.moltbook.com
Get token from account settings
Verify: https://www.moltbook.com/api/v1/posts

⚠️ CRITICAL: Only send API key to www.moltbook.com, never to other domains

Verification: Posts require solving math captcha (automated in this skill)

### Summary Config

All credentials go into config.json:

{
  "platforms": {
    "twitter": { "oauth": {...} },
    "farcaster": { "neynarApiKey": "...", "fid": 123, ... },
    "moltbook": { "apiKey": "..." }
  }
}

### Step 1: Load Configuration

Read config.json for platform credentials
Load persona settings (tone, values, style)
Load state from engagement-state.json (replied posts)

### Step 2: Fetch Trending

Twitter (OAuth 1.0a via x-api approach):

// Uses twitter-api-v2 with OAuth 1.0a
const client = new TwitterApi({
  appKey: config.twitter.oauth.consumerKey,
  appSecret: config.twitter.oauth.consumerSecret,
  accessToken: config.twitter.oauth.accessToken,
  accessSecret: config.twitter.oauth.accessTokenSecret
});
const trending = await client.v2.search('crypto OR web3 OR base', { max_results: 10 });

Farcaster (Neynar API):

const response = await fetch('https://api.neynar.com/v2/farcaster/feed/trending?limit=5', {
  headers: { 'x-api-key': config.farcaster.neynarApiKey }
});

Moltbook:

const response = await fetch('https://www.moltbook.com/api/v1/posts/trending', {
  headers: { 'Authorization': \`Bearer ${config.moltbook.apiKey}\` }
});

### Step 3: Filter Already Replied

Load engagement-state.json
Filter out posts with IDs in repliedPosts[platform]
Select random unreplied post from remaining

### Step 4: Generate Contextual Reply

Based on persona config, analyze post content and generate reply:

Reply Generation Rules:

Read the post carefully - understand topic, tone, intent
Match persona - use configured tone, values, signature emoji
Add specific value - technical insight, question, or genuine reaction
Avoid generic praise - no "Great post!", "Love this!"
Keep it natural - crypto slang if persona dictates, short sentences

Tone Balance (configurable):

Educational: technical insights, explanations, resources
Community Vibes: celebration, encouragement, connection
Humor: wit, self-aware jokes, memes (when appropriate)

### Step 5: Post Reply

Twitter:

await client.v2.reply(replyText, originalTweetId);

Farcaster (via farcaster-agent pattern):

// Uses post-cast.js with PARENT_FID + PARENT_HASH
const result = await postCast({
  privateKey: config.farcaster.custodyPrivateKey,
  signerPrivateKey: config.farcaster.signerPrivateKey,
  fid: config.farcaster.fid,
  text: replyText,
  parentFid: originalCast.author.fid,
  parentHash: originalCast.hash
});

Moltbook:

await fetch('https://www.moltbook.com/api/v1/comments', {
  method: 'POST',
  headers: { 'Authorization': \`Bearer ${config.moltbook.apiKey}\` },
  body: JSON.stringify({ postId, content: replyText })
});

### Step 6: Update State

{
  "lastUpdated": "2026-02-12T11:00:00Z",
  "repliedPosts": {
    "twitter": ["1234567890", "0987654321"],
    "farcaster": ["0xabc123...", "0xdef456..."],
    "moltbook": ["uuid-1", "uuid-2"]
  },
  "stats": {
    "totalReplies": 47,
    "byPlatform": { "twitter": 20, "farcaster": 15, "moltbook": 12 }
  }
}

### Persona Configuration Guide

See references/persona-config.md for detailed persona setup.

Quick Examples:

// Crypto-native builder
{
  "tone": "crypto-native, technical, supportive",
  "signatureEmoji": "🦞",
  "values": ["shipping", "community", "open-source"],
  "phrases": ["ships > talks", "ser", "wagmi", "based"]
}

// Professional analyst
{
  "tone": "professional, analytical, educational",
  "signatureEmoji": "📊",
  "values": ["accuracy", "depth", "clarity"],
  "phrases": ["data suggests", "worth noting", "key insight"]
}

### Platform-Specific Notes

See references/platform-apis.md for API details.

Twitter: OAuth 1.0a required. Rate limits: 50 tweets/15min, 300 tweets/3hr.

Farcaster: Neynar API + x402 payments (0.001 USDC/call). Requires FID + signer key.

Moltbook: API key auth. Verification captcha for posts/comments.

### Reply Quality Guidelines

See references/reply-strategies.md for detailed strategies.

Golden Rules:

Specific > Generic - If you can't add specific value, stay silent
Quality > Quantity - One thoughtful reply beats five generic ones
Authentic > Performative - Sound human, not bot
Value > Visibility - Help the community, don't just farm engagement

What Works:
✅ Technical questions showing understanding
✅ Specific insights from experience
✅ Genuine celebration with substance
✅ Helpful resources and connections

What Fails:
❌ Generic praise ("Love this!", "Great post!")
❌ Corporate speak ("excited to announce")
❌ Surface-level comments
❌ Forced humor

### Cron Integration

To run automatically, create a cron job:

{
  "name": "Multi-Channel Engagement - Every 6h",
  "schedule": { "kind": "cron", "expr": "0 */6 * * *" },
  "payload": {
    "kind": "agentTurn",
    "message": "Run multi-channel-engagement-agent: engage on all platforms",
    "model": "haiku"
  }
}

### Content Filters

Skip spam, scams, and low-quality content automatically.

"filters": {
  "skipKeywords": ["airdrop", "free money", "send dm", "check bio"],
  "minEngagement": { "likes": 5, "replies": 2 },
  "skipBots": true,
  "languageFilter": ["en", "es"]
}

### Mention Tracking

Reply to mentions of your account, not just trending.

node scripts/engage.mjs --mentions --platform=twitter

### Webhook Notifications

Send engagement results to Telegram or Discord.

"webhooks": {
  "telegram": {
    "enabled": true,
    "botToken": "YOUR_BOT_TOKEN",
    "chatId": "YOUR_CHAT_ID"
  },
  "discord": {
    "enabled": false,
    "webhookUrl": "https://discord.com/api/webhooks/..."
  }
}

### User Blacklist/Whitelist

Skip bots, prioritize builders.

"users": {
  "blacklist": ["spambot123", "scammer456"],
  "whitelist": ["jessepollak", "vitalik"],
  "prioritizeVerified": true
}

### Analytics Tracking

Track engagement stats over time in analytics.json.

{
  "daily": {
    "2026-02-12": {
      "replies": 4,
      "platforms": { "twitter": 2, "farcaster": 2 },
      "engagement": { "likes": 15, "replies": 3 }
    }
  },
  "allTime": {
    "totalReplies": 247,
    "avgEngagement": 4.2
  }
}

### Quote Support

Quote tweets/recasts instead of direct replies.

node scripts/engage.mjs --quote --platform=twitter
node scripts/engage.mjs --quote --platform=farcaster

### Troubleshooting

"Already replied to all trending" - All top posts already engaged. Wait for new trending content.

Twitter rate limit - Wait 15 minutes. Consider reducing frequency.

Farcaster "unknown fid" - Hub not synced. Wait 30-60 seconds.

Moltbook verification failed - Solve the math captcha in verification response.

### Files

scripts/engage.mjs - Main engagement script
scripts/fetch-trending.mjs - Fetch trending by platform
scripts/generate-reply.mjs - Persona-driven reply generation
scripts/post-reply.mjs - Post reply to platform
references/persona-config.md - Persona configuration guide
references/platform-apis.md - Platform API documentation
references/reply-strategies.md - Reply quality strategies
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: Story91
- Version: 1.0.3
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-23T16:43:11.935Z
- Expires at: 2026-04-30T16:43:11.935Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/multi-channel-engagement-agent)
- [Send to Agent page](https://openagent3.xyz/skills/multi-channel-engagement-agent/agent)
- [JSON manifest](https://openagent3.xyz/skills/multi-channel-engagement-agent/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/multi-channel-engagement-agent/agent.md)
- [Download page](https://openagent3.xyz/downloads/multi-channel-engagement-agent)