{
  "schemaVersion": "1.0",
  "item": {
    "slug": "xbird",
    "name": "xbird",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/checkra1neth/xbird",
    "canonicalUrl": "https://clawhub.ai/checkra1neth/xbird",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/xbird",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=xbird",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "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."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.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/xbird"
    },
    "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."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/xbird",
    "agentPageUrl": "https://openagent3.xyz/skills/xbird/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xbird/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xbird/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "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."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "xbird — Twitter/X for AI Agents",
        "body": "34 MCP tools for Twitter/X with x402 micropayments. Runs locally from residential IP."
      },
      {
        "title": "Setup",
        "body": "Add xbird MCP server to Claude Code:\n\nclaude mcp add xbird -- npx @checkra1n/xbird\n\nRequired environment variables (set in ~/.claude/settings.json or shell):\n\nXBIRD_AUTH_TOKEN — from x.com cookies (DevTools → Application → Cookies → auth_token)\nXBIRD_CT0 — from x.com cookies (DevTools → Application → Cookies → ct0)\nXBIRD_PRIVATE_KEY — wallet private key for x402 payments (optional, needed for paid tier)"
      },
      {
        "title": "Read — $0.001/call",
        "body": "ToolDescriptionget_tweetGet tweet by IDget_threadGet full thread/conversation chainget_repliesGet replies to a tweet (supports count, cursor)get_userGet user profile by handleget_user_aboutGet detailed user info (bio, stats, links)get_current_userGet authenticated user's profileget_home_timelineGet home feed (supports count, cursor)get_newsGet trending topics (tabs: trending, forYou, news, sports, entertainment)get_listsGet owned Twitter listsget_list_timelineGet tweets from a list by list ID"
      },
      {
        "title": "Search — $0.005/call",
        "body": "ToolDescriptionsearch_tweetsSearch tweets. Supports operators: from:user, to:user, since:2024-01-01, filter:media, -filter:retweetsget_mentionsGet mentions for a handle"
      },
      {
        "title": "Bulk — $0.01/call",
        "body": "ToolDescriptionget_user_tweetsGet user's tweets. Requires numeric userId — get it from get_user firstget_followersGet user's followers. Requires numeric userIdget_followingGet who user follows. Requires numeric userIdget_likesGet user's liked tweets. Requires numeric userIdget_bookmarksGet bookmarked tweetsget_list_membershipsGet lists user is a member of"
      },
      {
        "title": "Write — $0.01/call",
        "body": "ToolDescriptionpost_tweetPost a tweet. Pass mediaIds array to attach mediareply_to_tweetReply to a tweet by replyToIdpost_threadPost a thread — array of strings, minimum 2 tweetslike_tweet / unlike_tweetLike or unlike by tweet IDretweet / unretweetRetweet or undo by tweet IDbookmark_tweet / unbookmark_tweetBookmark or remove by tweet IDfollow_user / unfollow_userFollow or unfollow by handle"
      },
      {
        "title": "Profile — $0.01/call",
        "body": "ToolDescriptionupdate_profileUpdate bio/description textupdate_profile_imageUpdate avatar — absolute file path to imageupdate_profile_bannerUpdate banner — absolute file path to imageremove_profile_bannerRemove banner image"
      },
      {
        "title": "Media — $0.05/call",
        "body": "ToolDescriptionupload_mediaUpload image/video, returns mediaId. Pass it to post_tweet or reply_to_tweet via mediaIds"
      },
      {
        "title": "Post a tweet with an image",
        "body": "upload_media with file path → get mediaId\npost_tweet with text and mediaIds: [\"<mediaId>\"]"
      },
      {
        "title": "Get someone's recent tweets",
        "body": "get_user with handle → get numeric userId\nget_user_tweets with userId"
      },
      {
        "title": "Update profile with new avatar and bio",
        "body": "update_profile_image with file path\nupdate_profile with new description text"
      },
      {
        "title": "Search and engage",
        "body": "search_tweets with query (e.g. \"AI agents\" since:2024-01-01 -filter:retweets)\nlike_tweet or retweet interesting results"
      },
      {
        "title": "Important Notes",
        "body": "Handles: work with or without @ prefix\nuserId vs handle: Bulk tools require numeric userId. Always call get_user first to resolve handle → userId\nPagination: most list tools accept cursor from previous response for next page\nMedia flow: always upload first, then attach mediaId to tweet\nRate limits: if a tool returns an error about rate limiting, wait 1-2 minutes before retrying\nx402 payments: all calls are metered via micropayments on Base (USDC). Free tier available without wallet key"
      }
    ],
    "body": "xbird — Twitter/X for AI Agents\n\n34 MCP tools for Twitter/X with x402 micropayments. Runs locally from residential IP.\n\nSetup\n\nAdd xbird MCP server to Claude Code:\n\nclaude mcp add xbird -- npx @checkra1n/xbird\n\n\nRequired environment variables (set in ~/.claude/settings.json or shell):\n\nXBIRD_AUTH_TOKEN — from x.com cookies (DevTools → Application → Cookies → auth_token)\nXBIRD_CT0 — from x.com cookies (DevTools → Application → Cookies → ct0)\nXBIRD_PRIVATE_KEY — wallet private key for x402 payments (optional, needed for paid tier)\nTools Reference\nRead — $0.001/call\nTool\tDescription\nget_tweet\tGet tweet by ID\nget_thread\tGet full thread/conversation chain\nget_replies\tGet replies to a tweet (supports count, cursor)\nget_user\tGet user profile by handle\nget_user_about\tGet detailed user info (bio, stats, links)\nget_current_user\tGet authenticated user's profile\nget_home_timeline\tGet home feed (supports count, cursor)\nget_news\tGet trending topics (tabs: trending, forYou, news, sports, entertainment)\nget_lists\tGet owned Twitter lists\nget_list_timeline\tGet tweets from a list by list ID\nSearch — $0.005/call\nTool\tDescription\nsearch_tweets\tSearch tweets. Supports operators: from:user, to:user, since:2024-01-01, filter:media, -filter:retweets\nget_mentions\tGet mentions for a handle\nBulk — $0.01/call\nTool\tDescription\nget_user_tweets\tGet user's tweets. Requires numeric userId — get it from get_user first\nget_followers\tGet user's followers. Requires numeric userId\nget_following\tGet who user follows. Requires numeric userId\nget_likes\tGet user's liked tweets. Requires numeric userId\nget_bookmarks\tGet bookmarked tweets\nget_list_memberships\tGet lists user is a member of\nWrite — $0.01/call\nTool\tDescription\npost_tweet\tPost a tweet. Pass mediaIds array to attach media\nreply_to_tweet\tReply to a tweet by replyToId\npost_thread\tPost a thread — array of strings, minimum 2 tweets\nlike_tweet / unlike_tweet\tLike or unlike by tweet ID\nretweet / unretweet\tRetweet or undo by tweet ID\nbookmark_tweet / unbookmark_tweet\tBookmark or remove by tweet ID\nfollow_user / unfollow_user\tFollow or unfollow by handle\nProfile — $0.01/call\nTool\tDescription\nupdate_profile\tUpdate bio/description text\nupdate_profile_image\tUpdate avatar — absolute file path to image\nupdate_profile_banner\tUpdate banner — absolute file path to image\nremove_profile_banner\tRemove banner image\nMedia — $0.05/call\nTool\tDescription\nupload_media\tUpload image/video, returns mediaId. Pass it to post_tweet or reply_to_tweet via mediaIds\nCommon Workflows\nPost a tweet with an image\nupload_media with file path → get mediaId\npost_tweet with text and mediaIds: [\"<mediaId>\"]\nGet someone's recent tweets\nget_user with handle → get numeric userId\nget_user_tweets with userId\nUpdate profile with new avatar and bio\nupdate_profile_image with file path\nupdate_profile with new description text\nSearch and engage\nsearch_tweets with query (e.g. \"AI agents\" since:2024-01-01 -filter:retweets)\nlike_tweet or retweet interesting results\nImportant Notes\nHandles: work with or without @ prefix\nuserId vs handle: Bulk tools require numeric userId. Always call get_user first to resolve handle → userId\nPagination: most list tools accept cursor from previous response for next page\nMedia flow: always upload first, then attach mediaId to tweet\nRate limits: if a tool returns an error about rate limiting, wait 1-2 minutes before retrying\nx402 payments: all calls are metered via micropayments on Base (USDC). Free tier available without wallet key"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/checkra1neth/xbird",
    "publisherUrl": "https://clawhub.ai/checkra1neth/xbird",
    "owner": "checkra1neth",
    "version": "0.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/xbird",
    "downloadUrl": "https://openagent3.xyz/downloads/xbird",
    "agentUrl": "https://openagent3.xyz/skills/xbird/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xbird/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xbird/agent.md"
  }
}