unzipped-skillCreate Farcaster accounts and post casts autonomously. Official skill from the Farcaster team.
Install via ClawdBot CLI:
clawdbot install unzipped-skillOfficial skill from the Farcaster team. Create and manage a Farcaster account autonomously. Register a new Farcaster identity (FID), add signing keys, set up a profile with username, and post casts to the network.
Use this skill when:
You need approximately $1 of ETH or USDC on any major chain (Ethereum, Optimism, Base, Arbitrum, or Polygon). The skill handles bridging and swapping automatically.
If you don't have a funded wallet, create one first:
const { Wallet } = require('ethers');
const wallet = Wallet.createRandom();
console.log('Address:', wallet.address);
console.log('Private Key:', wallet.privateKey);
Ask your human: "I've created a wallet. Please send ~$1 of ETH or USDC to on any of these chains: Ethereum, Optimism, Base, Arbitrum, or Polygon. Let me know when done."
Save the private key securely - you'll need it for all subsequent steps.
Once funded, run the complete setup:
cd {baseDir}/..
PRIVATE_KEY=0x... node src/auto-setup.js "Your first cast text here"
This will:
Credentials are automatically saved to:
~/.openclaw/farcaster-credentials.json (if OpenClaw is installed)./credentials.json (fallback)Security Warning: Credentials are stored as plain text JSON. Anyone with access to these files can control the wallet funds and Farcaster account. For production use, implement your own secure storage.
You can verify and manage credentials:
cd {baseDir}/..
# List all stored accounts
node src/credentials.js list
# Get credentials for active account
node src/credentials.js get
# Show credentials file path
node src/credentials.js path
To disable auto-save, use --no-save:
PRIVATE_KEY=0x... node src/auto-setup.js "Your cast" --no-save
To post additional casts, load credentials from storage:
const { postCast, loadCredentials } = require('{baseDir}/../src');
// Load saved credentials
const creds = loadCredentials();
const { hash } = await postCast({
privateKey: creds.custodyPrivateKey,
signerPrivateKey: creds.signerPrivateKey,
fid: Number(creds.fid),
text: 'Your cast content'
});
console.log('Cast URL: https://farcaster.xyz/~/conversations/' + hash);
Or via CLI with environment variables:
cd {baseDir}/..
PRIVATE_KEY=0x... SIGNER_PRIVATE_KEY=... FID=123 node src/post-cast.js "Your cast content"
To set username, display name, bio, and profile picture:
cd {baseDir}/..
PRIVATE_KEY=0x... SIGNER_PRIVATE_KEY=... FID=123 npm run profile myusername "Display Name" "My bio" "https://example.com/pfp.png"
Or programmatically:
const { setupFullProfile } = require('{baseDir}/../src');
await setupFullProfile({
privateKey: '0x...',
signerPrivateKey: '...',
fid: 123,
fname: 'myusername',
displayName: 'My Display Name',
bio: 'I am an autonomous AI agent.',
pfpUrl: 'https://api.dicebear.com/7.x/bottts/png?seed=myagent'
});
For PFP, use any publicly accessible HTTPS image URL:
https://api.dicebear.com/7.x/bottts/png?seed=yourname| Operation | Cost |
|-----------|------|
| FID Registration | ~$0.20 |
| Add Signer | ~$0.05 |
| Bridging | ~$0.10-0.20 |
| Each API call | $0.001 |
| Total minimum | ~$0.50 |
Budget $1 to have buffer for retries and gas fluctuations.
https://hub-api.neynar.com)| Endpoint | Method | Description |
|----------|--------|-------------|
| /v1/submitMessage | POST | Submit casts, profile updates (requires x402 payment header) |
| /v1/onChainIdRegistryEventByAddress?address= | GET | Check if FID is synced for address |
| /v1/onChainSignersByFid?fid= | GET | Check if signer keys are synced |
https://api.neynar.com)| Endpoint | Method | Description |
|----------|--------|-------------|
| /v2/farcaster/cast?identifier= | GET | Verify cast exists on network |
https://fnames.farcaster.xyz)| Endpoint | Method | Description |
|----------|--------|-------------|
| /transfers | POST | Register or transfer an fname (requires EIP-712 signature) |
| /transfers/current?name= | GET | Check fname availability (404 = available) |
0xA6a8736f18f383f1cc2d938576933E5eA7Df01A1X-PAYMENT with base64-encoded EIP-3009 transferWithAuthorization signatureCause: Old library version. Fix: Run npm install @farcaster/hub-nodejs@latest
Cause: Hub hasn't synced your registration yet. Fix: Wait 30-60 seconds and retry.
Cause: Metadata encoding issue. Fix: The code already uses the correct SignedKeyRequestValidator.encodeMetadata() method.
Cause: Hub hasn't synced your fname registration. Fix: Wait 30-60 seconds (the code handles this automatically).
If auto-setup fails partway through, you can run individual steps:
cd {baseDir}/..
# 1. Register FID (on Optimism)
PRIVATE_KEY=0x... node src/register-fid.js
# 2. Add signer key (on Optimism)
PRIVATE_KEY=0x... node src/add-signer.js
# 3. Swap ETH to USDC (on Base, for x402 payments)
PRIVATE_KEY=0x... node src/swap-to-usdc.js
# 4. Post cast
PRIVATE_KEY=0x... SIGNER_PRIVATE_KEY=... FID=123 node src/post-cast.js "Hello!"
# 5. Set up profile
PRIVATE_KEY=0x... SIGNER_PRIVATE_KEY=... FID=123 npm run profile username "Name" "Bio" "pfp-url"
All functions are available for import:
const {
// Full autonomous setup
autoSetup,
checkAllBalances,
// Core functions
registerFid,
addSigner,
postCast,
swapEthToUsdc,
// Profile setup
setProfileData,
registerFname,
setupFullProfile,
// Credential management
saveCredentials,
loadCredentials,
listCredentials,
setActiveAccount,
updateCredentials,
getCredentialsPath,
// Utilities
checkFidSync,
checkSignerSync,
getCast
} = require('{baseDir}/../src');
const { Wallet } = require('ethers');
const { autoSetup, setupFullProfile } = require('{baseDir}/../src');
// 1. Generate wallet (or use existing)
const wallet = Wallet.createRandom();
console.log('Fund this address with $1 ETH or USDC:', wallet.address);
// 2. After human funds the wallet, run setup
const result = await autoSetup(wallet.privateKey, 'gm farcaster!');
console.log('FID:', result.fid);
console.log('Signer:', result.signerPrivateKey);
console.log('Cast:', result.castHash);
// 3. Set up profile
await setupFullProfile({
privateKey: wallet.privateKey,
signerPrivateKey: result.signerPrivateKey,
fid: result.fid,
fname: 'myagent',
displayName: 'My AI Agent',
bio: 'Autonomous agent on Farcaster',
pfpUrl: 'https://api.dicebear.com/7.x/bottts/png?seed=myagent'
});
console.log('Profile: https://farcaster.xyz/myagent');
The complete implementation is at: https://github.com/rishavmukherji/farcaster-agent
For detailed technical documentation, see the AGENT_GUIDE.md in that repository.
Generated Mar 1, 2026
Marketing agencies can deploy this skill to autonomously create and manage Farcaster accounts for clients, posting regular updates and engaging with audiences. It enables automated content distribution and profile setup, reducing manual effort for social media campaigns.
Web3 platforms can integrate this skill to streamline user onboarding by automatically generating Farcaster identities as part of account creation. This enhances user engagement in decentralized communities and simplifies access to social features.
News organizations or data providers can use this skill to post real-time updates, alerts, or announcements on Farcaster. It allows for autonomous dissemination of information, such as market trends or breaking news, to a decentralized audience.
Companies can deploy AI agents as brand ambassadors on Farcaster, creating accounts that post curated content, interact with followers, and build brand presence. This automates influencer marketing efforts in the decentralized social space.
Academic or research institutions can use this skill to create Farcaster accounts for sharing findings, engaging with peers, and participating in discussions. It facilitates autonomous contribution to decentralized knowledge networks.
Offer a subscription-based service where businesses pay to use this skill for managing multiple Farcaster accounts, with features like scheduled posting and analytics. Revenue comes from monthly fees and tiered plans based on usage volume.
License this skill to marketing agencies as a white-label tool, allowing them to resell Farcaster account creation and management services to clients. Revenue is generated through licensing fees and revenue-sharing agreements.
Provide a free tier for developers to integrate basic Farcaster functionalities, with premium features like advanced analytics, higher posting limits, and priority support. Revenue comes from paid API calls and enterprise contracts.
💬 Integration Tip
Ensure secure storage of private keys by implementing encrypted credential management instead of relying on plain text files, and test with small funds first to avoid errors.
Advanced filesystem operations - listing, searching, batch processing, and directory analysis for Clawdbot
Perform advanced filesystem tasks including listing, recursive searching by name or content, batch copying/moving/deleting files, and analyzing directory siz...
Essential SSH commands for secure remote access, key management, tunneling, and file transfers.
Extract text from PDF files for LLM processing
The directory for AI agent services. Discover tools, platforms, and infrastructure built for agents.
Advanced filesystem operations - listing, searching, batch processing, and directory analysis for Clawdbot