{
  "schemaVersion": "1.0",
  "item": {
    "slug": "x-apify",
    "name": "X Apify",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/robbyczgw-cla/x-apify",
    "canonicalUrl": "https://clawhub.ai/robbyczgw-cla/x-apify",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/x-apify",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=x-apify",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "README.md",
      "SKILL.md",
      "package.json",
      "scripts/cache.py",
      "scripts/config.py"
    ],
    "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-apify"
    },
    "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-apify",
    "agentPageUrl": "https://openagent3.xyz/skills/x-apify/agent",
    "manifestUrl": "https://openagent3.xyz/skills/x-apify/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/x-apify/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-apify",
        "body": "Fetch X/Twitter data via Apify API (search tweets, user profiles, specific tweets)."
      },
      {
        "title": "Why Apify?",
        "body": "X/Twitter's official API is expensive and restrictive. Apify provides reliable access to public tweet data through its actor ecosystem, with residential proxy support."
      },
      {
        "title": "Free Tier",
        "body": "$5/month free credits (no credit card required)\nCost varies by actor usage\nPerfect for personal use"
      },
      {
        "title": "Links",
        "body": "Apify Pricing\nGet API Key\nTwitter Scraper Actor"
      },
      {
        "title": "Setup",
        "body": "Create free Apify account: https://apify.com/\nGet your API token: https://console.apify.com/account/integrations\nSet environment variable:\n\n# Add to ~/.bashrc or ~/.zshrc\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN_HERE\"\n\n# Or use .env file (never commit this!)\necho 'APIFY_API_TOKEN=apify_api_YOUR_TOKEN_HERE' >> .env"
      },
      {
        "title": "Search Tweets",
        "body": "# Search for tweets containing keywords\npython3 scripts/fetch_tweets.py --search \"artificial intelligence\"\n\n# Search with hashtags\npython3 scripts/fetch_tweets.py --search \"#AI #MachineLearning\"\n\n# Limit results\npython3 scripts/fetch_tweets.py --search \"OpenAI\" --max-results 10"
      },
      {
        "title": "User Profiles",
        "body": "# Get tweets from a specific user\npython3 scripts/fetch_tweets.py --user \"elonmusk\"\n\n# Multiple users (comma-separated)\npython3 scripts/fetch_tweets.py --user \"OpenAI,AnthropicAI\""
      },
      {
        "title": "Specific Tweet",
        "body": "# Get a specific tweet and its replies\npython3 scripts/fetch_tweets.py --url \"https://x.com/user/status/123456789\"\n\n# Also works with twitter.com URLs\npython3 scripts/fetch_tweets.py --url \"https://twitter.com/user/status/123456789\""
      },
      {
        "title": "Output Formats",
        "body": "# JSON output (default)\npython3 scripts/fetch_tweets.py --search \"query\" --format json\n\n# Summary format (human-readable)\npython3 scripts/fetch_tweets.py --search \"query\" --format summary\n\n# Save to file\npython3 scripts/fetch_tweets.py --search \"query\" --output results.json"
      },
      {
        "title": "Caching",
        "body": "Tweets are cached locally by default to save API costs.\n\n# First request: fetches from Apify (costs credits)\npython3 scripts/fetch_tweets.py --search \"query\"\n\n# Second request: uses cache (FREE!)\npython3 scripts/fetch_tweets.py --search \"query\"\n# Output: [cached] Results for: query\n\n# Bypass cache (force fresh fetch)\npython3 scripts/fetch_tweets.py --search \"query\" --no-cache\n\n# View cache stats\npython3 scripts/fetch_tweets.py --cache-stats\n\n# Clear all cached results\npython3 scripts/fetch_tweets.py --clear-cache\n\nCache TTL:\n\nSearch results: 1 hour\nUser profiles: 24 hours\nSpecific tweets: 24 hours\n\nCache location: .cache/ in skill directory (override with X_APIFY_CACHE_DIR env var)"
      },
      {
        "title": "JSON Format",
        "body": "{\n  \"query\": \"OpenAI\",\n  \"mode\": \"search\",\n  \"fetched_at\": \"2026-02-11T10:30:00Z\",\n  \"count\": 20,\n  \"tweets\": [\n    {\n      \"id\": \"1234567890\",\n      \"text\": \"OpenAI just announced...\",\n      \"author\": \"techreporter\",\n      \"author_name\": \"Tech Reporter\",\n      \"created_at\": \"2026-02-11T09:00:00Z\",\n      \"likes\": 1500,\n      \"retweets\": 300,\n      \"replies\": 50,\n      \"url\": \"https://x.com/techreporter/status/1234567890\"\n    }\n  ]\n}"
      },
      {
        "title": "Summary Format",
        "body": "=== X/Twitter Search Results ===\nQuery: OpenAI\nFetched: 2026-02-11 10:30:00 UTC\nResults: 20 tweets\n\n---\n@techreporter (Tech Reporter)\n2026-02-11 09:00\nOpenAI just announced...\n[Likes: 1500 | RTs: 300 | Replies: 50]\nhttps://x.com/techreporter/status/1234567890\n\n---\n..."
      },
      {
        "title": "Error Handling",
        "body": "The script handles common errors:\n\nInvalid search query\nUser not found\nTweet not found\nAPI quota exceeded\nNetwork errors"
      },
      {
        "title": "Metadata",
        "body": "metadata:\n  openclaw:\n    emoji: \"X\"\n    requires:\n      env:\n        APIFY_API_TOKEN: required\n        APIFY_ACTOR_ID: optional\n        X_APIFY_CACHE_DIR: optional\n      bins:\n        - python3"
      }
    ],
    "body": "x-apify\n\nFetch X/Twitter data via Apify API (search tweets, user profiles, specific tweets).\n\nWhy Apify?\n\nX/Twitter's official API is expensive and restrictive. Apify provides reliable access to public tweet data through its actor ecosystem, with residential proxy support.\n\nFree Tier\n$5/month free credits (no credit card required)\nCost varies by actor usage\nPerfect for personal use\nLinks\nApify Pricing\nGet API Key\nTwitter Scraper Actor\nSetup\nCreate free Apify account: https://apify.com/\nGet your API token: https://console.apify.com/account/integrations\nSet environment variable:\n# Add to ~/.bashrc or ~/.zshrc\nexport APIFY_API_TOKEN=\"apify_api_YOUR_TOKEN_HERE\"\n\n# Or use .env file (never commit this!)\necho 'APIFY_API_TOKEN=apify_api_YOUR_TOKEN_HERE' >> .env\n\nUsage\nSearch Tweets\n# Search for tweets containing keywords\npython3 scripts/fetch_tweets.py --search \"artificial intelligence\"\n\n# Search with hashtags\npython3 scripts/fetch_tweets.py --search \"#AI #MachineLearning\"\n\n# Limit results\npython3 scripts/fetch_tweets.py --search \"OpenAI\" --max-results 10\n\nUser Profiles\n# Get tweets from a specific user\npython3 scripts/fetch_tweets.py --user \"elonmusk\"\n\n# Multiple users (comma-separated)\npython3 scripts/fetch_tweets.py --user \"OpenAI,AnthropicAI\"\n\nSpecific Tweet\n# Get a specific tweet and its replies\npython3 scripts/fetch_tweets.py --url \"https://x.com/user/status/123456789\"\n\n# Also works with twitter.com URLs\npython3 scripts/fetch_tweets.py --url \"https://twitter.com/user/status/123456789\"\n\nOutput Formats\n# JSON output (default)\npython3 scripts/fetch_tweets.py --search \"query\" --format json\n\n# Summary format (human-readable)\npython3 scripts/fetch_tweets.py --search \"query\" --format summary\n\n# Save to file\npython3 scripts/fetch_tweets.py --search \"query\" --output results.json\n\nCaching\n\nTweets are cached locally by default to save API costs.\n\n# First request: fetches from Apify (costs credits)\npython3 scripts/fetch_tweets.py --search \"query\"\n\n# Second request: uses cache (FREE!)\npython3 scripts/fetch_tweets.py --search \"query\"\n# Output: [cached] Results for: query\n\n# Bypass cache (force fresh fetch)\npython3 scripts/fetch_tweets.py --search \"query\" --no-cache\n\n# View cache stats\npython3 scripts/fetch_tweets.py --cache-stats\n\n# Clear all cached results\npython3 scripts/fetch_tweets.py --clear-cache\n\n\nCache TTL:\n\nSearch results: 1 hour\nUser profiles: 24 hours\nSpecific tweets: 24 hours\n\nCache location: .cache/ in skill directory (override with X_APIFY_CACHE_DIR env var)\n\nOutput Examples\nJSON Format\n{\n  \"query\": \"OpenAI\",\n  \"mode\": \"search\",\n  \"fetched_at\": \"2026-02-11T10:30:00Z\",\n  \"count\": 20,\n  \"tweets\": [\n    {\n      \"id\": \"1234567890\",\n      \"text\": \"OpenAI just announced...\",\n      \"author\": \"techreporter\",\n      \"author_name\": \"Tech Reporter\",\n      \"created_at\": \"2026-02-11T09:00:00Z\",\n      \"likes\": 1500,\n      \"retweets\": 300,\n      \"replies\": 50,\n      \"url\": \"https://x.com/techreporter/status/1234567890\"\n    }\n  ]\n}\n\nSummary Format\n=== X/Twitter Search Results ===\nQuery: OpenAI\nFetched: 2026-02-11 10:30:00 UTC\nResults: 20 tweets\n\n---\n@techreporter (Tech Reporter)\n2026-02-11 09:00\nOpenAI just announced...\n[Likes: 1500 | RTs: 300 | Replies: 50]\nhttps://x.com/techreporter/status/1234567890\n\n---\n...\n\nError Handling\n\nThe script handles common errors:\n\nInvalid search query\nUser not found\nTweet not found\nAPI quota exceeded\nNetwork errors\nMetadata\nmetadata:\n  openclaw:\n    emoji: \"X\"\n    requires:\n      env:\n        APIFY_API_TOKEN: required\n        APIFY_ACTOR_ID: optional\n        X_APIFY_CACHE_DIR: optional\n      bins:\n        - python3"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/robbyczgw-cla/x-apify",
    "publisherUrl": "https://clawhub.ai/robbyczgw-cla/x-apify",
    "owner": "robbyczgw-cla",
    "version": "1.0.8",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/x-apify",
    "downloadUrl": "https://openagent3.xyz/downloads/x-apify",
    "agentUrl": "https://openagent3.xyz/skills/x-apify/agent",
    "manifestUrl": "https://openagent3.xyz/skills/x-apify/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/x-apify/agent.md"
  }
}