{
  "schemaVersion": "1.0",
  "item": {
    "slug": "x-cli",
    "name": "X-CLI Toolkit",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ignsoftwarellc/x-cli",
    "canonicalUrl": "https://clawhub.ai/ignsoftwarellc/x-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/x-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=x-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "config.example.json",
      "SKILL.md",
      "scripts/x_read.py",
      "scripts/x_utils.py",
      "scripts/requirements.txt"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/x-cli"
    },
    "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/x-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/x-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/x-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/x-cli/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "x-cli",
        "body": "Full-featured X/Twitter toolkit for OpenClaw agents. Powered by twikit — no API keys required, cookie-based auth."
      },
      {
        "title": "Setup",
        "body": "pip install -r scripts/requirements.txt\ncp config.example.json config.json\n# Set cookies_file path or credentials in config.json"
      },
      {
        "title": "Read (x_read.py)",
        "body": "python scripts/x_read.py tweet <url-or-id>              # Read a tweet\npython scripts/x_read.py user <username> --count 5       # User's tweets\npython scripts/x_read.py timeline --count 20             # Home timeline (Following)\npython scripts/x_read.py foryou --count 20               # For You timeline\npython scripts/x_read.py thread <url-or-id>              # Read thread\npython scripts/x_read.py replies <url-or-id> --count 20  # Replies to a tweet\npython scripts/x_read.py mentions --count 10             # Your mentions\npython scripts/x_read.py highlights <username>           # User's highlights\npython scripts/x_read.py search-user \"query\" --count 10  # Search users"
      },
      {
        "title": "Search (x_search.py)",
        "body": "python scripts/x_search.py \"query\" --count 10\npython scripts/x_search.py \"from:zerohedge gold\" --count 5"
      },
      {
        "title": "Post (x_post.py) — confirm with user first!",
        "body": "python scripts/x_post.py tweet \"text\"                    # Post tweet\npython scripts/x_post.py tweet \"text\" --media ID1 ID2    # With media\npython scripts/x_post.py tweet \"text\" --dry-run           # Preview only\npython scripts/x_post.py reply <id> \"text\"                # Reply\npython scripts/x_post.py quote <id> \"text\"                # Quote tweet"
      },
      {
        "title": "Interact (x_interact.py)",
        "body": "python scripts/x_interact.py like <tweet>        # Like\npython scripts/x_interact.py unlike <tweet>      # Unlike\npython scripts/x_interact.py retweet <tweet>     # Retweet\npython scripts/x_interact.py unretweet <tweet>   # Undo retweet\npython scripts/x_interact.py bookmark <tweet>    # Bookmark\npython scripts/x_interact.py unbookmark <tweet>  # Remove bookmark\npython scripts/x_interact.py follow <username>   # Follow\npython scripts/x_interact.py unfollow <username> # Unfollow\npython scripts/x_interact.py delete <tweet>      # Delete tweet\npython scripts/x_interact.py mute <username>     # Mute\npython scripts/x_interact.py unmute <username>   # Unmute\npython scripts/x_interact.py block <username>    # Block\npython scripts/x_interact.py unblock <username>  # Unblock"
      },
      {
        "title": "DMs (x_dm.py)",
        "body": "python scripts/x_dm.py send <username> \"message\"  # Send DM\npython scripts/x_dm.py inbox --count 10            # Read inbox"
      },
      {
        "title": "Extra (x_extra.py)",
        "body": "python scripts/x_extra.py trends                              # Trending\npython scripts/x_extra.py trends --category news               # Category trends\npython scripts/x_extra.py bookmarks --count 10                 # List bookmarks\npython scripts/x_extra.py notifications --count 10             # Notifications\npython scripts/x_extra.py user-info <username>                 # User profile\npython scripts/x_extra.py followers <username> --count 20      # Followers\npython scripts/x_extra.py following <username> --count 20      # Following\npython scripts/x_extra.py upload <filepath>                    # Upload media\npython scripts/x_extra.py schedule <timestamp> \"text\"          # Schedule tweet\npython scripts/x_extra.py poll \"A\" \"B\" \"C\" --duration 1440    # Create poll\npython scripts/x_extra.py list-create \"name\" --private         # Create list\npython scripts/x_extra.py list-add <list-id> <username>        # Add to list\npython scripts/x_extra.py list-remove <list-id> <username>     # Remove from list\npython scripts/x_extra.py list-tweets <list-id> --count 20     # List tweets"
      },
      {
        "title": "Auth (x_auth.py)",
        "body": "python scripts/x_auth.py check    # Check auth status\npython scripts/x_auth.py whoami   # Current user\npython scripts/x_auth.py login    # Login (uses config.json)"
      },
      {
        "title": "Output",
        "body": "All commands: plain text by default, --json for structured JSON."
      },
      {
        "title": "Media & Reply Context",
        "body": "Tweets with images/videos include media URLs in output (🖼️ / 🎥)\nReplies include ↩️ Reply to: link to the original tweet\nAgent can fetch media URLs with web_fetch and analyze with vision"
      },
      {
        "title": "Proxy (optional)",
        "body": "Set \"proxy\": \"http://user:pass@host:port\" in config.json."
      }
    ],
    "body": "x-cli\n\nFull-featured X/Twitter toolkit for OpenClaw agents. Powered by twikit — no API keys required, cookie-based auth.\n\nSetup\npip install -r scripts/requirements.txt\ncp config.example.json config.json\n# Set cookies_file path or credentials in config.json\n\nCommands\nRead (x_read.py)\npython scripts/x_read.py tweet <url-or-id>              # Read a tweet\npython scripts/x_read.py user <username> --count 5       # User's tweets\npython scripts/x_read.py timeline --count 20             # Home timeline (Following)\npython scripts/x_read.py foryou --count 20               # For You timeline\npython scripts/x_read.py thread <url-or-id>              # Read thread\npython scripts/x_read.py replies <url-or-id> --count 20  # Replies to a tweet\npython scripts/x_read.py mentions --count 10             # Your mentions\npython scripts/x_read.py highlights <username>           # User's highlights\npython scripts/x_read.py search-user \"query\" --count 10  # Search users\n\nSearch (x_search.py)\npython scripts/x_search.py \"query\" --count 10\npython scripts/x_search.py \"from:zerohedge gold\" --count 5\n\nPost (x_post.py) — confirm with user first!\npython scripts/x_post.py tweet \"text\"                    # Post tweet\npython scripts/x_post.py tweet \"text\" --media ID1 ID2    # With media\npython scripts/x_post.py tweet \"text\" --dry-run           # Preview only\npython scripts/x_post.py reply <id> \"text\"                # Reply\npython scripts/x_post.py quote <id> \"text\"                # Quote tweet\n\nInteract (x_interact.py)\npython scripts/x_interact.py like <tweet>        # Like\npython scripts/x_interact.py unlike <tweet>      # Unlike\npython scripts/x_interact.py retweet <tweet>     # Retweet\npython scripts/x_interact.py unretweet <tweet>   # Undo retweet\npython scripts/x_interact.py bookmark <tweet>    # Bookmark\npython scripts/x_interact.py unbookmark <tweet>  # Remove bookmark\npython scripts/x_interact.py follow <username>   # Follow\npython scripts/x_interact.py unfollow <username> # Unfollow\npython scripts/x_interact.py delete <tweet>      # Delete tweet\npython scripts/x_interact.py mute <username>     # Mute\npython scripts/x_interact.py unmute <username>   # Unmute\npython scripts/x_interact.py block <username>    # Block\npython scripts/x_interact.py unblock <username>  # Unblock\n\nDMs (x_dm.py)\npython scripts/x_dm.py send <username> \"message\"  # Send DM\npython scripts/x_dm.py inbox --count 10            # Read inbox\n\nExtra (x_extra.py)\npython scripts/x_extra.py trends                              # Trending\npython scripts/x_extra.py trends --category news               # Category trends\npython scripts/x_extra.py bookmarks --count 10                 # List bookmarks\npython scripts/x_extra.py notifications --count 10             # Notifications\npython scripts/x_extra.py user-info <username>                 # User profile\npython scripts/x_extra.py followers <username> --count 20      # Followers\npython scripts/x_extra.py following <username> --count 20      # Following\npython scripts/x_extra.py upload <filepath>                    # Upload media\npython scripts/x_extra.py schedule <timestamp> \"text\"          # Schedule tweet\npython scripts/x_extra.py poll \"A\" \"B\" \"C\" --duration 1440    # Create poll\npython scripts/x_extra.py list-create \"name\" --private         # Create list\npython scripts/x_extra.py list-add <list-id> <username>        # Add to list\npython scripts/x_extra.py list-remove <list-id> <username>     # Remove from list\npython scripts/x_extra.py list-tweets <list-id> --count 20     # List tweets\n\nAuth (x_auth.py)\npython scripts/x_auth.py check    # Check auth status\npython scripts/x_auth.py whoami   # Current user\npython scripts/x_auth.py login    # Login (uses config.json)\n\nOutput\n\nAll commands: plain text by default, --json for structured JSON.\n\nMedia & Reply Context\nTweets with images/videos include media URLs in output (🖼️ / 🎥)\nReplies include ↩️ Reply to: link to the original tweet\nAgent can fetch media URLs with web_fetch and analyze with vision\nProxy (optional)\n\nSet \"proxy\": \"http://user:pass@host:port\" in config.json."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ignsoftwarellc/x-cli",
    "publisherUrl": "https://clawhub.ai/ignsoftwarellc/x-cli",
    "owner": "ignsoftwarellc",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/x-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/x-cli",
    "agentUrl": "https://openagent3.xyz/skills/x-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/x-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/x-cli/agent.md"
  }
}