Create Farcaster accounts and post casts autonomously. Official skill from the Farcaster team.
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install unzipped-skill或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install unzipped-skill⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/unzipped-skill/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: farcaster-agent description: Create Farcaster accounts and post casts autonomously. Official skill from the Farcaster team. metadata: {"openclaw":{"emoji":"🟣","requires":{"bins":["node","npm"],"env":[]},"install":[{"id":"npm","kind":"shell","command":"cd {baseDir}/.. && npm install","label":"Install dependencies"}]}} ---
Official 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!');
...安装 Unzipped Skill 后,可以对 AI 说这些话来触发它
Help me get started with Unzipped Skill
Explains what Unzipped Skill does, walks through the setup, and runs a quick demo based on your current project
Use Unzipped Skill to create Farcaster accounts and post casts autonomously
Invokes Unzipped Skill with the right parameters and returns the result directly in the conversation
What can I do with Unzipped Skill in my product manager workflow?
Lists the top use cases for Unzipped Skill, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/unzipped-skill/ 目录(个人级,所有项目可用),或 .claude/skills/unzipped-skill/(项目级)。重启 AI 客户端后,用 /unzipped-skill 主动调用,或让 AI 根据上下文自动发现并使用。
Unzipped Skill 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
Unzipped Skill 可免费安装使用。请查阅仓库了解许可证信息。
Create Farcaster accounts and post casts autonomously. Official skill from the Farcaster team.
Unzipped Skill 属于「Product Manager」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my product manager tasks using Unzipped Skill
Identifies repetitive steps in your workflow and sets up Unzipped Skill to handle them automatically