{
  "schemaVersion": "1.0",
  "item": {
    "slug": "desearch-x-search",
    "name": "X (Twitter) Search by Desearch",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/okradze/desearch-x-search",
    "canonicalUrl": "https://clawhub.ai/okradze/desearch-x-search",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/desearch-x-search",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=desearch-x-search",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scripts/desearch.py",
      "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/desearch-x-search"
    },
    "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/desearch-x-search",
    "agentPageUrl": "https://openagent3.xyz/skills/desearch-x-search/agent",
    "manifestUrl": "https://openagent3.xyz/skills/desearch-x-search/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/desearch-x-search/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": "X (Twitter) Search By Desearch",
        "body": "Real-time X/Twitter search and monitoring. Search posts, track users, get timelines, replies, and retweeters with powerful filtering."
      },
      {
        "title": "Setup",
        "body": "Get an API key from https://console.desearch.ai\nSet environment variable: export DESEARCH_API_KEY='your-key-here'"
      },
      {
        "title": "Common Fields",
        "body": "All tweet-returning endpoints share these shapes. Fields marked * are always present."
      },
      {
        "title": "Tweet",
        "body": "FieldTypeDescriptionid*stringPost IDtext*stringPost contentcreated_at*stringISO 8601 timestampurlstring|nullDirect link: https://x.com/{username}/status/{id}like_count*intLikesretweet_count*intRetweetsreply_count*intRepliesquote_count*intQuotesbookmark_count*intBookmarksview_countint|nullViewslangstring|nullLanguage code (e.g. en)is_retweetbool|nullIs a retweetis_quote_tweetbool|nullIs a quote tweetconversation_idstring|nullThread IDin_reply_to_screen_namestring|nullUsername of post being replied toin_reply_to_status_idstring|nullID of post being replied tomediaarray|null[{media_url, type}] — type: photo, video, animated_gifentitiesobject|null{hashtags, symbols, urls, user_mentions}quoteTweet|nullNested quoted tweetretweetTweet|nullOriginal tweet (timeline endpoint only)userUser|nullPost author — see User below"
      },
      {
        "title": "User",
        "body": "FieldTypeDescriptionid*stringUser IDusername*string@handle (without @)namestring|nullDisplay nameurlstring|nullProfile URLdescriptionstring|nullBiofollowers_countint|nullFollowersfollowings_countint|nullFollowingstatuses_countint|nullTotal tweets postedverifiedbool|nullLegacy verified badgeis_blue_verifiedbool|nullTwitter Blue subscriberlocationstring|nullSelf-reported locationcreated_atstring|nullAccount creation dateprofile_image_urlstring|nullAvatar URL"
      },
      {
        "title": "x — Search Posts",
        "body": "Search X posts by keyword, hashtag, or user with engagement filters.\n\nscripts/desearch.py x \"Bittensor TAO\" --sort Latest --count 10\nscripts/desearch.py x \"AI news\" --user elonmusk --start-date 2025-01-01\nscripts/desearch.py x \"crypto\" --min-likes 100 --verified --lang en\n\nOptions:\n\nOptionDescription--sortTop (default) or Latest--user, -uFilter to posts by username--start-dateStart date UTC (YYYY-MM-DD)--end-dateEnd date UTC (YYYY-MM-DD)--langLanguage code (e.g. en, es)--verifiedOnly verified users--blue-verifiedOnly Twitter Blue users--is-quoteOnly quote tweets--is-videoOnly posts with video--is-imageOnly posts with images--min-retweetsMinimum retweet count--min-repliesMinimum reply count--min-likesMinimum like count--count, -nResults count (default: 20, max: 100)\n\nResponse: Tweet[]"
      },
      {
        "title": "x_post — Retrieve Post by ID",
        "body": "Fetch a single post by its numeric ID.\n\nscripts/desearch.py x_post 1892527552029499853\n\nResponse: Tweet"
      },
      {
        "title": "x_urls — Fetch Posts by URLs",
        "body": "Retrieve one or more posts by their X URLs.\n\nscripts/desearch.py x_urls \"https://x.com/user/status/123\" \"https://x.com/user/status/456\"\n\nResponse: Tweet[]"
      },
      {
        "title": "x_user — Search Posts by User",
        "body": "Search within a specific user's posts for a keyword.\n\nscripts/desearch.py x_user elonmusk --query \"AI\" --count 10\n\nOptions:\n\nOptionDescription--query, -qKeyword to filter the user's posts--count, -nResults count (default: 10, max: 100)\n\nResponse: Tweet[]"
      },
      {
        "title": "x_timeline — Get User Timeline",
        "body": "Fetch the most recent posts from a user's timeline. Retweets include a retweet field with the original post.\n\nscripts/desearch.py x_timeline elonmusk --count 20\n\nOptions:\n\nOptionDescription--count, -nNumber of posts (default: 20, max: 100)\n\nResponse: { user: User, tweets: Tweet[] }"
      },
      {
        "title": "x_retweeters — Get Retweeters of a Post",
        "body": "List users who retweeted a specific post. Supports cursor-based pagination.\n\nscripts/desearch.py x_retweeters 1982770537081532854\nscripts/desearch.py x_retweeters 1982770537081532854 --cursor \"AAAAANextCursorValue==\"\n\nOptions:\n\nOptionDescription--cursorPagination cursor from a previous response\n\nResponse: { users: User[], next_cursor: string|null } — next_cursor is null when no more pages remain."
      },
      {
        "title": "x_replies — Get User's Replies",
        "body": "Fetch a user's tweets-and-replies timeline. Replies have in_reply_to_screen_name and in_reply_to_status_id set.\n\nscripts/desearch.py x_replies elonmusk --count 10\nscripts/desearch.py x_replies elonmusk --query \"AI\" --count 10\n\nOptions:\n\nOptionDescription--count, -nResults count (default: 10, max: 100)--query, -qFilter keyword\n\nResponse: Tweet[]"
      },
      {
        "title": "x_post_replies — Get Replies to a Post",
        "body": "Fetch replies to a specific post by ID.\n\nscripts/desearch.py x_post_replies 1234567890 --count 10\nscripts/desearch.py x_post_replies 1234567890 --query \"thanks\" --count 5\n\nOptions:\n\nOptionDescription--count, -nResults count (default: 10, max: 100)--query, -qFilter keyword within replies\n\nResponse: Tweet[]"
      },
      {
        "title": "Errors",
        "body": "Status 401, Unauthorized (e.g., missing/invalid API key)\n\n{\n  \"detail\": \"Invalid or missing API key\"\n}\n\nStatus 402, Payment Required (e.g., balance depleted)\n\n{\n  \"detail\": \"Insufficient balance, please add funds to your account to continue using the service.\"\n}"
      },
      {
        "title": "Resources",
        "body": "API Reference\nDesearch Console"
      }
    ],
    "body": "X (Twitter) Search By Desearch\n\nReal-time X/Twitter search and monitoring. Search posts, track users, get timelines, replies, and retweeters with powerful filtering.\n\nSetup\nGet an API key from https://console.desearch.ai\nSet environment variable: export DESEARCH_API_KEY='your-key-here'\nCommon Fields\n\nAll tweet-returning endpoints share these shapes. Fields marked * are always present.\n\nTweet\nField\tType\tDescription\nid*\tstring\tPost ID\ntext*\tstring\tPost content\ncreated_at*\tstring\tISO 8601 timestamp\nurl\tstring|null\tDirect link: https://x.com/{username}/status/{id}\nlike_count*\tint\tLikes\nretweet_count*\tint\tRetweets\nreply_count*\tint\tReplies\nquote_count*\tint\tQuotes\nbookmark_count*\tint\tBookmarks\nview_count\tint|null\tViews\nlang\tstring|null\tLanguage code (e.g. en)\nis_retweet\tbool|null\tIs a retweet\nis_quote_tweet\tbool|null\tIs a quote tweet\nconversation_id\tstring|null\tThread ID\nin_reply_to_screen_name\tstring|null\tUsername of post being replied to\nin_reply_to_status_id\tstring|null\tID of post being replied to\nmedia\tarray|null\t[{media_url, type}] — type: photo, video, animated_gif\nentities\tobject|null\t{hashtags, symbols, urls, user_mentions}\nquote\tTweet|null\tNested quoted tweet\nretweet\tTweet|null\tOriginal tweet (timeline endpoint only)\nuser\tUser|null\tPost author — see User below\nUser\nField\tType\tDescription\nid*\tstring\tUser ID\nusername*\tstring\t@handle (without @)\nname\tstring|null\tDisplay name\nurl\tstring|null\tProfile URL\ndescription\tstring|null\tBio\nfollowers_count\tint|null\tFollowers\nfollowings_count\tint|null\tFollowing\nstatuses_count\tint|null\tTotal tweets posted\nverified\tbool|null\tLegacy verified badge\nis_blue_verified\tbool|null\tTwitter Blue subscriber\nlocation\tstring|null\tSelf-reported location\ncreated_at\tstring|null\tAccount creation date\nprofile_image_url\tstring|null\tAvatar URL\nEndpoints\nx — Search Posts\n\nSearch X posts by keyword, hashtag, or user with engagement filters.\n\nscripts/desearch.py x \"Bittensor TAO\" --sort Latest --count 10\nscripts/desearch.py x \"AI news\" --user elonmusk --start-date 2025-01-01\nscripts/desearch.py x \"crypto\" --min-likes 100 --verified --lang en\n\n\nOptions:\n\nOption\tDescription\n--sort\tTop (default) or Latest\n--user, -u\tFilter to posts by username\n--start-date\tStart date UTC (YYYY-MM-DD)\n--end-date\tEnd date UTC (YYYY-MM-DD)\n--lang\tLanguage code (e.g. en, es)\n--verified\tOnly verified users\n--blue-verified\tOnly Twitter Blue users\n--is-quote\tOnly quote tweets\n--is-video\tOnly posts with video\n--is-image\tOnly posts with images\n--min-retweets\tMinimum retweet count\n--min-replies\tMinimum reply count\n--min-likes\tMinimum like count\n--count, -n\tResults count (default: 20, max: 100)\n\nResponse: Tweet[]\n\nx_post — Retrieve Post by ID\n\nFetch a single post by its numeric ID.\n\nscripts/desearch.py x_post 1892527552029499853\n\n\nResponse: Tweet\n\nx_urls — Fetch Posts by URLs\n\nRetrieve one or more posts by their X URLs.\n\nscripts/desearch.py x_urls \"https://x.com/user/status/123\" \"https://x.com/user/status/456\"\n\n\nResponse: Tweet[]\n\nx_user — Search Posts by User\n\nSearch within a specific user's posts for a keyword.\n\nscripts/desearch.py x_user elonmusk --query \"AI\" --count 10\n\n\nOptions:\n\nOption\tDescription\n--query, -q\tKeyword to filter the user's posts\n--count, -n\tResults count (default: 10, max: 100)\n\nResponse: Tweet[]\n\nx_timeline — Get User Timeline\n\nFetch the most recent posts from a user's timeline. Retweets include a retweet field with the original post.\n\nscripts/desearch.py x_timeline elonmusk --count 20\n\n\nOptions:\n\nOption\tDescription\n--count, -n\tNumber of posts (default: 20, max: 100)\n\nResponse: { user: User, tweets: Tweet[] }\n\nx_retweeters — Get Retweeters of a Post\n\nList users who retweeted a specific post. Supports cursor-based pagination.\n\nscripts/desearch.py x_retweeters 1982770537081532854\nscripts/desearch.py x_retweeters 1982770537081532854 --cursor \"AAAAANextCursorValue==\"\n\n\nOptions:\n\nOption\tDescription\n--cursor\tPagination cursor from a previous response\n\nResponse: { users: User[], next_cursor: string|null } — next_cursor is null when no more pages remain.\n\nx_replies — Get User's Replies\n\nFetch a user's tweets-and-replies timeline. Replies have in_reply_to_screen_name and in_reply_to_status_id set.\n\nscripts/desearch.py x_replies elonmusk --count 10\nscripts/desearch.py x_replies elonmusk --query \"AI\" --count 10\n\n\nOptions:\n\nOption\tDescription\n--count, -n\tResults count (default: 10, max: 100)\n--query, -q\tFilter keyword\n\nResponse: Tweet[]\n\nx_post_replies — Get Replies to a Post\n\nFetch replies to a specific post by ID.\n\nscripts/desearch.py x_post_replies 1234567890 --count 10\nscripts/desearch.py x_post_replies 1234567890 --query \"thanks\" --count 5\n\n\nOptions:\n\nOption\tDescription\n--count, -n\tResults count (default: 10, max: 100)\n--query, -q\tFilter keyword within replies\n\nResponse: Tweet[]\n\nErrors\n\nStatus 401, Unauthorized (e.g., missing/invalid API key)\n\n{\n  \"detail\": \"Invalid or missing API key\"\n}\n\n\nStatus 402, Payment Required (e.g., balance depleted)\n\n{\n  \"detail\": \"Insufficient balance, please add funds to your account to continue using the service.\"\n}\n\nResources\nAPI Reference\nDesearch Console"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/okradze/desearch-x-search",
    "publisherUrl": "https://clawhub.ai/okradze/desearch-x-search",
    "owner": "okradze",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/desearch-x-search",
    "downloadUrl": "https://openagent3.xyz/downloads/desearch-x-search",
    "agentUrl": "https://openagent3.xyz/skills/desearch-x-search/agent",
    "manifestUrl": "https://openagent3.xyz/skills/desearch-x-search/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/desearch-x-search/agent.md"
  }
}