{
  "schemaVersion": "1.0",
  "item": {
    "slug": "twitter-reader",
    "name": "Twitter/X Reader",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/iheardulkBTC/twitter-reader",
    "canonicalUrl": "https://clawhub.ai/iheardulkBTC/twitter-reader",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/twitter-reader",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=twitter-reader",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "INSTALLATION.md",
      "README.md",
      "SKILL.md",
      "scripts/read_thread.sh",
      "scripts/read_tweet.sh",
      "scripts/read_tweet_nitter.sh"
    ],
    "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",
      "slug": "twitter-reader",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T07:52:25.634Z",
      "expiresAt": "2026-05-17T07:52:25.634Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=twitter-reader",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=twitter-reader",
        "contentDisposition": "attachment; filename=\"twitter-reader-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "twitter-reader"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/twitter-reader"
    },
    "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/twitter-reader",
    "agentPageUrl": "https://openagent3.xyz/skills/twitter-reader/agent",
    "manifestUrl": "https://openagent3.xyz/skills/twitter-reader/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/twitter-reader/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": "Twitter/X Reader Skill",
        "body": "A comprehensive skill for reading and extracting data from X (formerly Twitter) tweets using multiple reliable data sources."
      },
      {
        "title": "Overview",
        "body": "This skill extracts complete tweet information including text content, author details, engagement statistics, media attachments, and quoted tweets from X/Twitter URLs. It uses a multi-tier approach for maximum reliability and data completeness."
      },
      {
        "title": "When to Use",
        "body": "Primary Triggers:\n\nUser shares a tweet URL (x.com//status/ or twitter.com//status/)\nUser asks to \"read this tweet\" with a URL\nUser requests tweet analysis, summary, or data extraction\nUser mentions getting information from a specific tweet\n\nExample User Requests:\n\n\"What does this tweet say? https://x.com/elonmusk/status/123456789\"\n\"Can you read this tweet for me?\"\n\"Summarize this Twitter thread\"\n\"What are the engagement stats on this tweet?\"\n\"Extract the media from this tweet\""
      },
      {
        "title": "Data Extracted",
        "body": "Tweet Content: Full text with proper formatting\nAuthor Information: Display name and handle (@username)\nTimestamps: Both human-readable and original format\nEngagement Stats: Likes, retweets, replies, quote tweets\nMedia Attachments: Photos and videos with direct URLs\nQuote Tweets: Full quoted tweet content and author info\nThread Context: When available"
      },
      {
        "title": "Supported URL Formats",
        "body": "https://x.com/username/status/1234567890\nhttps://twitter.com/username/status/1234567890\nURLs with query parameters (e.g., ?s=20, ?t=abc123)\nMobile URLs (m.twitter.com automatically handled)"
      },
      {
        "title": "Basic Usage",
        "body": "# Read a single tweet\n./scripts/read_tweet.sh \"https://x.com/username/status/1234567890\"\n\n# Read a full thread (follows reply chain from the same author)\n./scripts/read_thread.sh \"https://x.com/username/status/1234567890\"\n\n# Fallback method using Nitter\n./scripts/read_tweet_nitter.sh \"https://x.com/username/status/1234567890\""
      },
      {
        "title": "Agent Instructions",
        "body": "When a user provides a tweet URL:\n\nValidate the URL format - ensure it's a valid X/Twitter status URL\nUse the primary script - scripts/read_tweet.sh first\nHandle failures gracefully - if primary fails, try scripts/read_tweet_nitter.sh\nPresent data clearly - format the output for human consumption\nPreserve context - include engagement stats and media references"
      },
      {
        "title": "Sample Response Format",
        "body": "The scripts return structured JSON with this format:\n\n{\n  \"success\": true,\n  \"tweet\": {\n    \"text\": \"Tweet content here...\",\n    \"author\": {\n      \"name\": \"Display Name\",\n      \"handle\": \"username\"\n    },\n    \"timestamp\": {\n      \"formatted\": \"2024-01-15 14:30:25 UTC\",\n      \"original\": \"Mon Jan 15 14:30:25 +0000 2024\"\n    },\n    \"url\": \"https://x.com/username/status/1234567890\",\n    \"engagement\": {\n      \"likes\": 1250,\n      \"retweets\": 340,\n      \"replies\": 89,\n      \"quotes\": 45\n    },\n    \"media\": {\n      \"photos\": [\"https://pbs.twimg.com/media/...\"],\n      \"video\": \"https://video.twimg.com/...\"\n    },\n    \"quoted_tweet\": {\n      \"text\": \"Quoted tweet text...\",\n      \"author\": {\n        \"name\": \"Quoted Author\",\n        \"handle\": \"quoted_user\"\n      },\n      \"url\": \"https://x.com/quoted_user/status/987654321\"\n    }\n  },\n  \"source\": \"fxtwitter\",\n  \"fetched_at\": 1705327825\n}"
      },
      {
        "title": "Agent Response Example",
        "body": "**Tweet from @elonmusk:**\n> \"Just had a great meeting about sustainable transport. The future is electric! ⚡🚗\"\n\n**Posted:** January 15, 2024 at 2:30 PM UTC\n**Engagement:** 1,250 likes • 340 retweets • 89 replies • 45 quotes\n\n**Media:** 1 photo attached\n- Photo: https://pbs.twimg.com/media/example.jpg\n\n**Quote Tweet from @teslaofficial:**\n> \"Our latest Model S update includes new charging optimizations...\""
      },
      {
        "title": "Primary Method: FxTwitter API",
        "body": "Endpoint: https://api.fxtwitter.com/{username}/status/{tweet_id}\nAdvantages: No authentication, comprehensive data, reliable\nRate Limits: Generous for personal use\nResponse: Complete JSON with all tweet metadata"
      },
      {
        "title": "Fallback Method: Nitter Scraping (Best-Effort)",
        "body": "Instances: Multiple public Nitter instances as backup\nAdvantages: Works when FxTwitter is unavailable\nLimitations: Basic data extraction, no engagement stats\nUsage: Automatic fallback when primary method fails\n⚠️ Note: Most public Nitter instances have shut down or become unreliable since 2024. This fallback is best-effort and may not return results. The FxTwitter API should be considered the only reliable method."
      },
      {
        "title": "Error Handling",
        "body": "Invalid URL format detection\nNetwork timeout handling\nAPI error response parsing\nGraceful fallback between methods\nClear error messages for users"
      },
      {
        "title": "Dependencies",
        "body": "Required System Tools:\n\ncurl - HTTP requests to APIs\njq - JSON parsing and formatting\nbash - Script execution environment\ngrep/sed - Text processing (Nitter fallback only)\n\nOptional Enhancements:\n\ngdate (GNU date via Homebrew on macOS) - Better timestamp formatting"
      },
      {
        "title": "Security Features",
        "body": "✅ No external data collection - Data stays on your system\n✅ No analytics or telemetry - No tracking or usage reporting\n✅ Fully auditable code - Open source, readable shell scripts\n✅ Minimal network calls - Only to FxTwitter API and Nitter instances\n✅ No sensitive data exposure - Scripts don't store or log personal info\n✅ Safe URL handling - Proper URL validation and sanitization"
      },
      {
        "title": "Network Connections",
        "body": "Approved External Hosts:\n\napi.fxtwitter.com - Primary data source (FxTwitter API)\nnitter.net and other Nitter instances - Fallback scraping\nNo other external connections made\n\nData Flow:\n\nUser provides tweet URL\nScript extracts username/ID from URL\nMakes API request to FxTwitter or Nitter\nParses response locally\nReturns formatted JSON (never stored permanently)"
      },
      {
        "title": "Audit Trail",
        "body": "All network requests include:\n\nClear user-agent identification\nMinimal necessary headers only\nNo authentication tokens or personal identifiers\nRequests only to extract public tweet data"
      },
      {
        "title": "Common Errors",
        "body": "Invalid URL Format:\n\n{\n  \"error\": \"Invalid Twitter/X URL format\",\n  \"expected\": \"x.com/user/status/123456789 or twitter.com/user/status/123456789\"\n}\n\nTweet Not Found:\n\n{\n  \"error\": \"API Error\",\n  \"code\": 404,\n  \"message\": \"NOT_FOUND\"\n}\n\nNetwork Failure:\n\n{\n  \"error\": \"Failed to fetch tweet data\",\n  \"details\": \"Network request failed\"\n}\n\nFallback Needed:\n\n{\n  \"error\": \"All Nitter instances failed\",\n  \"suggestion\": \"Try the main script with FxTwitter API, or wait for Nitter instances to recover\"\n}"
      },
      {
        "title": "Agent Error Handling",
        "body": "When errors occur:\n\nParse the error JSON to understand the issue\nTry the fallback method if primary fails\nExplain to the user what went wrong in plain language\nSuggest alternatives (try again later, check URL format, etc.)"
      },
      {
        "title": "Thread Reading",
        "body": "Full thread unrolling is supported via read_thread.sh:\n\nGiven any tweet URL in a thread, walks UP the reply chain via replying_to fields\nOnly collects tweets from the same author (self-reply threads)\nReturns tweets in chronological order as a JSON array\nSafety limit of 50 tweets per thread (configurable via second argument)\nUsage: ./scripts/read_thread.sh \"https://x.com/user/status/123\" [max_depth]"
      },
      {
        "title": "Media Handling",
        "body": "Photos: Direct URLs via media.photos array (full-resolution)\nVideos: Links to MP4 files via media.videos with thumbnails and duration\nAll media: Combined media.all array with type annotations for complete coverage\nArticle covers: Long-form X posts (\"articles\") have media.article_cover extracted\nGIFs: Handled as video content\nExternal Links: Preserved in tweet text"
      },
      {
        "title": "Quote Tweet Recursion",
        "body": "The skill can extract nested quote tweets up to reasonable depth to avoid infinite loops."
      },
      {
        "title": "Response Times",
        "body": "FxTwitter API: Typically 200-500ms\nNitter Scraping: 1-3 seconds per instance\nNetwork Dependent: May vary based on connection quality"
      },
      {
        "title": "Caching Considerations",
        "body": "No persistent caching implemented by default\nConsider temporary caching for repeated requests\nRespect rate limits of external services"
      },
      {
        "title": "Common Issues",
        "body": "\"No tweet data in API response\"\n\nTweet may be deleted or protected\nCheck URL format and tweet ID\nTry fallback method\n\n\"Network request failed\"\n\nCheck internet connection\nFxTwitter API may be temporarily down\nFallback to Nitter method\n\n\"All Nitter instances failed\"\n\nNitter instances may be blocked or down\nWait and retry with FxTwitter API\nCheck firewall/proxy settings"
      },
      {
        "title": "Debug Mode",
        "body": "For debugging, run with verbose output:\n\nbash -x scripts/read_tweet.sh \"https://x.com/username/status/123\""
      },
      {
        "title": "Adding New Data Sources",
        "body": "To add additional fallback methods:\n\nCreate new script in scripts/ directory\nFollow same JSON output format\nUpdate main skill logic to include new method\nTest thoroughly and update documentation"
      },
      {
        "title": "Modifying Output Format",
        "body": "The JSON structure can be customized by modifying the final jq command in each script. Maintain consistency across all methods."
      },
      {
        "title": "Adding Features",
        "body": "Consider these enhancement areas:\n\nSentiment analysis of tweet content\nHashtag and mention extraction\nLink expansion and preview\nImage OCR for text in media\nTranslation support for non-English tweets"
      },
      {
        "title": "Version History",
        "body": "v1.1 - Thread following (read_thread.sh), comprehensive media extraction (photos, videos, all media, article covers)\nv1.0 - Initial release with FxTwitter API and Nitter fallback\nMulti-source reliability with comprehensive data extraction\nFull security audit compliance\nProduction-ready for ClawHub distribution"
      }
    ],
    "body": "Twitter/X Reader Skill\n\nA comprehensive skill for reading and extracting data from X (formerly Twitter) tweets using multiple reliable data sources.\n\nOverview\n\nThis skill extracts complete tweet information including text content, author details, engagement statistics, media attachments, and quoted tweets from X/Twitter URLs. It uses a multi-tier approach for maximum reliability and data completeness.\n\nWhen to Use\n\nPrimary Triggers:\n\nUser shares a tweet URL (x.com//status/ or twitter.com//status/)\nUser asks to \"read this tweet\" with a URL\nUser requests tweet analysis, summary, or data extraction\nUser mentions getting information from a specific tweet\n\nExample User Requests:\n\n\"What does this tweet say? https://x.com/elonmusk/status/123456789\"\n\"Can you read this tweet for me?\"\n\"Summarize this Twitter thread\"\n\"What are the engagement stats on this tweet?\"\n\"Extract the media from this tweet\"\nCapabilities\nData Extracted\nTweet Content: Full text with proper formatting\nAuthor Information: Display name and handle (@username)\nTimestamps: Both human-readable and original format\nEngagement Stats: Likes, retweets, replies, quote tweets\nMedia Attachments: Photos and videos with direct URLs\nQuote Tweets: Full quoted tweet content and author info\nThread Context: When available\nSupported URL Formats\nhttps://x.com/username/status/1234567890\nhttps://twitter.com/username/status/1234567890\nURLs with query parameters (e.g., ?s=20, ?t=abc123)\nMobile URLs (m.twitter.com automatically handled)\nUsage Examples\nBasic Usage\n# Read a single tweet\n./scripts/read_tweet.sh \"https://x.com/username/status/1234567890\"\n\n# Read a full thread (follows reply chain from the same author)\n./scripts/read_thread.sh \"https://x.com/username/status/1234567890\"\n\n# Fallback method using Nitter\n./scripts/read_tweet_nitter.sh \"https://x.com/username/status/1234567890\"\n\nAgent Instructions\n\nWhen a user provides a tweet URL:\n\nValidate the URL format - ensure it's a valid X/Twitter status URL\nUse the primary script - scripts/read_tweet.sh first\nHandle failures gracefully - if primary fails, try scripts/read_tweet_nitter.sh\nPresent data clearly - format the output for human consumption\nPreserve context - include engagement stats and media references\nSample Response Format\n\nThe scripts return structured JSON with this format:\n\n{\n  \"success\": true,\n  \"tweet\": {\n    \"text\": \"Tweet content here...\",\n    \"author\": {\n      \"name\": \"Display Name\",\n      \"handle\": \"username\"\n    },\n    \"timestamp\": {\n      \"formatted\": \"2024-01-15 14:30:25 UTC\",\n      \"original\": \"Mon Jan 15 14:30:25 +0000 2024\"\n    },\n    \"url\": \"https://x.com/username/status/1234567890\",\n    \"engagement\": {\n      \"likes\": 1250,\n      \"retweets\": 340,\n      \"replies\": 89,\n      \"quotes\": 45\n    },\n    \"media\": {\n      \"photos\": [\"https://pbs.twimg.com/media/...\"],\n      \"video\": \"https://video.twimg.com/...\"\n    },\n    \"quoted_tweet\": {\n      \"text\": \"Quoted tweet text...\",\n      \"author\": {\n        \"name\": \"Quoted Author\",\n        \"handle\": \"quoted_user\"\n      },\n      \"url\": \"https://x.com/quoted_user/status/987654321\"\n    }\n  },\n  \"source\": \"fxtwitter\",\n  \"fetched_at\": 1705327825\n}\n\nAgent Response Example\n**Tweet from @elonmusk:**\n> \"Just had a great meeting about sustainable transport. The future is electric! ⚡🚗\"\n\n**Posted:** January 15, 2024 at 2:30 PM UTC\n**Engagement:** 1,250 likes • 340 retweets • 89 replies • 45 quotes\n\n**Media:** 1 photo attached\n- Photo: https://pbs.twimg.com/media/example.jpg\n\n**Quote Tweet from @teslaofficial:**\n> \"Our latest Model S update includes new charging optimizations...\"\n\nTechnical Implementation\nPrimary Method: FxTwitter API\nEndpoint: https://api.fxtwitter.com/{username}/status/{tweet_id}\nAdvantages: No authentication, comprehensive data, reliable\nRate Limits: Generous for personal use\nResponse: Complete JSON with all tweet metadata\nFallback Method: Nitter Scraping (Best-Effort)\nInstances: Multiple public Nitter instances as backup\nAdvantages: Works when FxTwitter is unavailable\nLimitations: Basic data extraction, no engagement stats\nUsage: Automatic fallback when primary method fails\n⚠️ Note: Most public Nitter instances have shut down or become unreliable since 2024. This fallback is best-effort and may not return results. The FxTwitter API should be considered the only reliable method.\nError Handling\nInvalid URL format detection\nNetwork timeout handling\nAPI error response parsing\nGraceful fallback between methods\nClear error messages for users\nDependencies\n\nRequired System Tools:\n\ncurl - HTTP requests to APIs\njq - JSON parsing and formatting\nbash - Script execution environment\ngrep/sed - Text processing (Nitter fallback only)\n\nOptional Enhancements:\n\ngdate (GNU date via Homebrew on macOS) - Better timestamp formatting\nSecurity & Privacy\nSecurity Features\n✅ No external data collection - Data stays on your system\n✅ No analytics or telemetry - No tracking or usage reporting\n✅ Fully auditable code - Open source, readable shell scripts\n✅ Minimal network calls - Only to FxTwitter API and Nitter instances\n✅ No sensitive data exposure - Scripts don't store or log personal info\n✅ Safe URL handling - Proper URL validation and sanitization\nNetwork Connections\n\nApproved External Hosts:\n\napi.fxtwitter.com - Primary data source (FxTwitter API)\nnitter.net and other Nitter instances - Fallback scraping\nNo other external connections made\n\nData Flow:\n\nUser provides tweet URL\nScript extracts username/ID from URL\nMakes API request to FxTwitter or Nitter\nParses response locally\nReturns formatted JSON (never stored permanently)\nAudit Trail\n\nAll network requests include:\n\nClear user-agent identification\nMinimal necessary headers only\nNo authentication tokens or personal identifiers\nRequests only to extract public tweet data\nError Scenarios & Handling\nCommon Errors\n\nInvalid URL Format:\n\n{\n  \"error\": \"Invalid Twitter/X URL format\",\n  \"expected\": \"x.com/user/status/123456789 or twitter.com/user/status/123456789\"\n}\n\n\nTweet Not Found:\n\n{\n  \"error\": \"API Error\",\n  \"code\": 404,\n  \"message\": \"NOT_FOUND\"\n}\n\n\nNetwork Failure:\n\n{\n  \"error\": \"Failed to fetch tweet data\",\n  \"details\": \"Network request failed\"\n}\n\n\nFallback Needed:\n\n{\n  \"error\": \"All Nitter instances failed\",\n  \"suggestion\": \"Try the main script with FxTwitter API, or wait for Nitter instances to recover\"\n}\n\nAgent Error Handling\n\nWhen errors occur:\n\nParse the error JSON to understand the issue\nTry the fallback method if primary fails\nExplain to the user what went wrong in plain language\nSuggest alternatives (try again later, check URL format, etc.)\nAdvanced Features\nThread Reading\n\nFull thread unrolling is supported via read_thread.sh:\n\nGiven any tweet URL in a thread, walks UP the reply chain via replying_to fields\nOnly collects tweets from the same author (self-reply threads)\nReturns tweets in chronological order as a JSON array\nSafety limit of 50 tweets per thread (configurable via second argument)\nUsage: ./scripts/read_thread.sh \"https://x.com/user/status/123\" [max_depth]\nMedia Handling\nPhotos: Direct URLs via media.photos array (full-resolution)\nVideos: Links to MP4 files via media.videos with thumbnails and duration\nAll media: Combined media.all array with type annotations for complete coverage\nArticle covers: Long-form X posts (\"articles\") have media.article_cover extracted\nGIFs: Handled as video content\nExternal Links: Preserved in tweet text\nQuote Tweet Recursion\n\nThe skill can extract nested quote tweets up to reasonable depth to avoid infinite loops.\n\nPerformance Notes\nResponse Times\nFxTwitter API: Typically 200-500ms\nNitter Scraping: 1-3 seconds per instance\nNetwork Dependent: May vary based on connection quality\nCaching Considerations\nNo persistent caching implemented by default\nConsider temporary caching for repeated requests\nRespect rate limits of external services\nTroubleshooting\nCommon Issues\n\n\"No tweet data in API response\"\n\nTweet may be deleted or protected\nCheck URL format and tweet ID\nTry fallback method\n\n\"Network request failed\"\n\nCheck internet connection\nFxTwitter API may be temporarily down\nFallback to Nitter method\n\n\"All Nitter instances failed\"\n\nNitter instances may be blocked or down\nWait and retry with FxTwitter API\nCheck firewall/proxy settings\nDebug Mode\n\nFor debugging, run with verbose output:\n\nbash -x scripts/read_tweet.sh \"https://x.com/username/status/123\"\n\nDevelopment & Customization\nAdding New Data Sources\n\nTo add additional fallback methods:\n\nCreate new script in scripts/ directory\nFollow same JSON output format\nUpdate main skill logic to include new method\nTest thoroughly and update documentation\nModifying Output Format\n\nThe JSON structure can be customized by modifying the final jq command in each script. Maintain consistency across all methods.\n\nAdding Features\n\nConsider these enhancement areas:\n\nSentiment analysis of tweet content\nHashtag and mention extraction\nLink expansion and preview\nImage OCR for text in media\nTranslation support for non-English tweets\nVersion History\nv1.1 - Thread following (read_thread.sh), comprehensive media extraction (photos, videos, all media, article covers)\nv1.0 - Initial release with FxTwitter API and Nitter fallback\nMulti-source reliability with comprehensive data extraction\nFull security audit compliance\nProduction-ready for ClawHub distribution"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/iheardulkBTC/twitter-reader",
    "publisherUrl": "https://clawhub.ai/iheardulkBTC/twitter-reader",
    "owner": "iheardulkBTC",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/twitter-reader",
    "downloadUrl": "https://openagent3.xyz/downloads/twitter-reader",
    "agentUrl": "https://openagent3.xyz/skills/twitter-reader/agent",
    "manifestUrl": "https://openagent3.xyz/skills/twitter-reader/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/twitter-reader/agent.md"
  }
}