{"id":"d2cb92b9-a068-4fd9-bf6f-8d60ca63dc1b","entityType":"agent","slug":"clawhub-jiangsier-xyz-x-hots","name":"X (Twitter) Hot Topics","canonicalUrl":"https://www.xpersona.co/agent/clawhub-jiangsier-xyz-x-hots","canonicalPath":"/agent/clawhub-jiangsier-xyz-x-hots","generatedAt":"2026-10-10T06:44:24.773Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T00:26:49.635Z","emptyReason":null},"description":"Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. Skill: X (Twitter) Hot Topics Owner: jiangsier-xyz Summary: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. Tags: latest:1.5.1 Version history: v1.5.1 | 2026-07-27T12:32:02.425Z | user Add an isolated per-skill virtualenv entrypoint (scripts/x_hots): provisions .venv on first run and au","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s173nsfjwe1yqehavmtjgmxnjs86xwmn:x-hots","sourceUrl":"https://clawhub.ai/jiangsier-xyz/x-hots","homepage":"https://clawhub.ai/jiangsier-xyz/skills/x-hots","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/jiangsier-xyz/x-hots","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/jiangsier-xyz/skills/x-hots","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:26:49.635Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:26:49.635Z","emptyReason":null},"stars":null,"forks":null,"downloads":1838,"packageName":null,"latestVersion":"1.5.1","tractionLabel":"1.8K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T00:26:49.634Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T00:26:49.635Z","lastCrawledAt":"2026-10-10T00:26:49.634Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T00:26:49.634Z","lastVerifiedAt":null,"highlights":[{"version":"1.5.1","createdAt":"2026-07-27T12:32:02.425Z","changelog":"Add an isolated per-skill virtualenv entrypoint (scripts/x_hots): provisions .venv on first run and auto-installs tweepy (now declared in requirements.txt). SKILL.md updated to invoke scripts/x_hots; no manual pip install needed.","fileCount":6,"zipByteSize":8412},{"version":"1.5.0","createdAt":"2026-07-27T12:10:58.038Z","changelog":"- Adds automated virtual environment setup and dependency installation via the scripts/x_hots entrypoint; manual pip installation is no longer required. - Updates documentation for the new one-step usage: simply run scripts/x_hots with JSON query input. - Now uses requirements.txt for dependency pinning. - Old documentation, licenses, and markdown guides (README, LICENSE, CHANGELOG, etc.) have been removed. - Introduces _meta.json for skill metadata.","fileCount":6,"zipByteSize":8355},{"version":"1.4.1","createdAt":"2026-07-20T04:09:42.693Z","changelog":"Add CHANGELOG.md tracking notable changes per release; attach release notes to the ClawHub publication.","fileCount":9,"zipByteSize":14474},{"version":"1.4.0","createdAt":"2026-07-20T04:03:54.341Z","changelog":"- Documentation updated from version 1.1.1 to 1.4.0 in SKILL.md. - No functional or code changes described; this release is documentation-only. - All core usage instructions, workflow, API details, and error handling remain the same.","fileCount":8,"zipByteSize":13724},{"version":"1.3.1","createdAt":"2026-07-20T04:01:50.132Z","changelog":"- Added documentation files: CLAUDE.md, LICENSE, README.md, and README.zh-CN.md - Removed skill-card.md to streamline documentation - No changes to SKILL.md functionality or description - Expanded documentation and licensing information for broader user support","fileCount":8,"zipByteSize":13649},{"version":"1.3.0","createdAt":"2026-07-16T09:08:32.412Z","changelog":"x-hots 1.3.0 changelog - Switched authentication method to use only X (Twitter) Bearer Token (OAuth 2.0) for broader and simpler API access - Updated documentation to remove need for API key, API secret, access token, and access token secret environment variables - Improved error messages and instructions for missing authentication - Removed \"skill-card.md\" from the repository","fileCount":4,"zipByteSize":5988},{"version":"1.2.0","createdAt":"2026-07-09T04:47:21.466Z","changelog":"Change name from x-hots to 'X Hot Topics'","fileCount":4,"zipByteSize":6015},{"version":"1.1.1","createdAt":"2026-07-09T04:40:51.698Z","changelog":"Add prerequisites: Python dependencies and X API environment variables","fileCount":4,"zipByteSize":6102}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173nsfjwe1yqehavmtjgmxnjs86xwmn:x-hots","setupComplexity":"medium","setupSteps":["Python environment detected. Create a strict virtual environment (`python -m venv .venv`) before installing dependencies to prevent system-level package conflicts.","Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T06:44:24.770Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jiangsier-xyz-x-hots/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T00:26:49.635Z","emptyReason":null},"readme":"Skill: X (Twitter) Hot Topics\n\nOwner: jiangsier-xyz\n\nSummary: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n\nTags: latest:1.5.1\n\nVersion history:\n\nv1.5.1 | 2026-07-27T12:32:02.425Z | user\n\nAdd an isolated per-skill virtualenv entrypoint (scripts/x_hots): provisions .venv on first run and auto-installs tweepy (now declared in requirements.txt). SKILL.md updated to invoke scripts/x_hots; no manual pip install needed.\n\nv1.5.0 | 2026-07-27T12:10:58.038Z | auto\n\n- Adds automated virtual environment setup and dependency installation via the scripts/x_hots entrypoint; manual pip installation is no longer required.\n- Updates documentation for the new one-step usage: simply run scripts/x_hots with JSON query input.\n- Now uses requirements.txt for dependency pinning.\n- Old documentation, licenses, and markdown guides (README, LICENSE, CHANGELOG, etc.) have been removed.\n- Introduces _meta.json for skill metadata.\n\nv1.4.1 | 2026-07-20T04:09:42.693Z | user\n\nAdd CHANGELOG.md tracking notable changes per release; attach release notes to the ClawHub publication.\n\nv1.4.0 | 2026-07-20T04:03:54.341Z | auto\n\n- Documentation updated from version 1.1.1 to 1.4.0 in SKILL.md.\n- No functional or code changes described; this release is documentation-only.\n- All core usage instructions, workflow, API details, and error handling remain the same.\n\nv1.3.1 | 2026-07-20T04:01:50.132Z | auto\n\n- Added documentation files: CLAUDE.md, LICENSE, README.md, and README.zh-CN.md\n- Removed skill-card.md to streamline documentation\n- No changes to SKILL.md functionality or description\n- Expanded documentation and licensing information for broader user support\n\nv1.3.0 | 2026-07-16T09:08:32.412Z | auto\n\nx-hots 1.3.0 changelog\n\n- Switched authentication method to use only X (Twitter) Bearer Token (OAuth 2.0) for broader and simpler API access\n- Updated documentation to remove need for API key, API secret, access token, and access token secret environment variables\n- Improved error messages and instructions for missing authentication\n- Removed \"skill-card.md\" from the repository\n\nv1.2.0 | 2026-07-09T04:47:21.466Z | user\n\nChange name from x-hots to 'X Hot Topics'\n\nv1.1.1 | 2026-07-09T04:40:51.698Z | user\n\nAdd prerequisites: Python dependencies and X API environment variables\n\nv1.1.0 | 2026-07-09T04:32:18.108Z | user\n\nInitial release\n\nv1.0.0 | 2026-07-09T04:26:05.833Z | auto\n\n**Summarizes trending topics and public opinion from X/Twitter by user interest domain.**\n\n- Added workflow to extract user interest domains or topics from natural language inputs.\n- Fetches top trending tweets per domain or topic using a Python script and presents up to 10 items per query.\n- Analyzes and summarizes the background, mainstream opinions, and controversies for each hot topic.\n- Provides generic trending topic handling when no specific domain is detected.\n- Details error handling for API issues and empty results.\n- Includes example queries and formatting for clear presentation.\n\nArchive index:\n\nArchive v1.5.1: 6 files, 8412 bytes\n\nFiles: _meta.json (125b), requirements.txt (13b), scripts/x_hots (4316b), scripts/x_hots.py (4116b), skill-card.md (2335b), SKILL.md (6880b)\n\nFile v1.5.1:SKILL.md\n\n---\nname: x-hots\nversion: 1.5.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nBoth are handled automatically: the `scripts/x_hots` entrypoint wrapper creates an isolated virtualenv at `<skill_dir>/.venv` on first run and installs `requirements.txt` (which pins `tweepy`) into it. No manual `pip install` is needed. Override the venv location with `SKILL_VENV_DIR=<path>`.\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\nscripts/x_hots '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\nscripts/x_hots '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\nscripts/x_hots '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\nscripts/x_hots '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   scripts/x_hots '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\nscripts/x_hots '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\nscripts/x_hots '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\nscripts/x_hots '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}\n```\n**Fix**: Ensure the Bearer Token environment variable is set in your shell profile (e.g. `~/.zshrc`):\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain the credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.5.1:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.5.1\",\n  \"publishedAt\": 1785155522425\n}\n\nFile v1.5.1:skill-card.md\n\n## Description:\n\nFetches trending topics from X (Twitter), derives search keywords from user interests, retrieves recent high-engagement posts by domain, and summarizes background, opinions, and controversies.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and analysts use this skill to inspect recent X/Twitter discussions for requested domains or topics and turn returned posts into concise summaries of background, public opinion, and controversy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The first-run setup may install changing Python packages and can execute a downloaded pip bootstrap script.\n\nMitigation: Review the skill before installing, run it only in an unprivileged environment, and prefer a release with pinned dependencies and safer setup logic.\n\nRisk: The skill requires an X bearer token and sends search terms derived from the user's prompt to X/Twitter.\n\nMitigation: Avoid sensitive prompts or private terms, store the bearer token securely, and rotate the token if it may have been exposed.\n\nRisk: Changing SKILL_VENV_DIR to an important directory can expose users to unsafe virtualenv cleanup behavior.\n\nMitigation: Use the default per-skill virtual environment or set SKILL_VENV_DIR only to a disposable directory created for this skill.\n\n## Reference(s):\n\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard)\n- [ClawHub skill page](https://clawhub.ai/jiangsier-xyz/skills/x-hots)\n\n## Skill Output:\n\n**Output Type(s):** [Shell commands, Text, Markdown, Guidance]\n\n**Output Format:** [JSON API results followed by Markdown analysis]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Search queries are derived from the user's requested topics; results are limited to recent English, non-retweet posts returned by the X API.]\n\n## Skill Version(s):\n\n1.5.1 (source: frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.5.1:requirements.txt\n\ntweepy>=4.14\n\nArchive v1.5.0: 6 files, 8355 bytes\n\nFiles: _meta.json (125b), requirements.txt (13b), scripts/x_hots (4316b), scripts/x_hots.py (4116b), skill-card.md (2235b), SKILL.md (6880b)\n\nFile v1.5.0:SKILL.md\n\n---\nname: x-hots\nversion: 1.5.0\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nBoth are handled automatically: the `scripts/x_hots` entrypoint wrapper creates an isolated virtualenv at `<skill_dir>/.venv` on first run and installs `requirements.txt` (which pins `tweepy`) into it. No manual `pip install` is needed. Override the venv location with `SKILL_VENV_DIR=<path>`.\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\nscripts/x_hots '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\nscripts/x_hots '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\nscripts/x_hots '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\nscripts/x_hots '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   scripts/x_hots '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\nscripts/x_hots '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\nscripts/x_hots '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\nscripts/x_hots '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}\n```\n**Fix**: Ensure the Bearer Token environment variable is set in your shell profile (e.g. `~/.zshrc`):\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain the credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.5.0:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.5.0\",\n  \"publishedAt\": 1785154258038\n}\n\nFile v1.5.0:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter), analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, analysts, and developers use this skill to query recent X/Twitter posts for interest-specific hot topics and produce concise summaries of background, public opinions, and controversies. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Automatic setup can download and run get-pip.py if pip is missing. <br>\nMitigation: Run the skill in an environment with pip or ensurepip already available, or inspect and disable the network bootstrap path before use. <br>\nRisk: The skill uses an X API bearer token and makes live X API calls. <br>\nMitigation: Use a least-privileged token, provide it only through the X_BEARER_TOKEN environment variable, and avoid exposing the token in logs or prompts. <br>\nRisk: Dependency pinning is loose because requirements.txt specifies tweepy>=4.14. <br>\nMitigation: Pin exact dependency versions or install from a reviewed lockfile in a controlled virtual environment. <br>\n\n\n## Reference(s): <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [JSON, Markdown, Shell commands, Guidance] <br>\n**Output Format:** [JSON from the helper script and Markdown summaries for the user] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires X_BEARER_TOKEN; queries are a JSON array of search terms and results are limited by X API access and rate limits.] <br>\n\n## Skill Version(s): <br>\n1.5.0 (source: frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.5.0:requirements.txt\n\ntweepy>=4.14\n\nArchive v1.4.1: 9 files, 14474 bytes\n\nFiles: CHANGELOG.md (1203b), CLAUDE.md (3256b), LICENSE (1070b), README.md (4474b), README.zh-CN.md (4451b), scripts/x_hots.py (4116b), skill-card.md (2389b), SKILL.md (6722b), _meta.json (125b)\n\nFile v1.4.1:SKILL.md\n\n---\nname: x-hots\nversion: 1.4.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nInstall tweepy:\n```bash\npip3 install tweepy\n```\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}\n```\n**Fix**: Ensure the Bearer Token environment variable is set in your shell profile (e.g. `~/.zshrc`):\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain the credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.4.1:README.md\n\n# x-hots\n\nAn [OpenClaw](https://github.com/openclaw/openclaw) skill that fetches real-time trending topics from **X (Twitter)** and supports interest-domain-based analysis — background, popular opinions, and key controversies for each topic.\n\nThe skill is driven by an OpenClaw agent: it analyzes your natural-language input to pick search keywords, runs the bundled Python script to fetch hot tweets via the X API v2, then synthesizes a structured summary of what's trending and why.\n\n[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n---\n\n## ✨ Features\n\n- **Interest-domain analysis** — describe what you care about in plain language (\"what's hot in tech?\"), and the skill maps it to relevant search keywords (politics, economy, technology, sports, entertainment, society, …).\n- **Real-time trending tweets** — pulls recent high-engagement tweets from X using the official API v2.\n- **Structured summaries** — for each topic: background, popular opinions (supporters / opponents / neutral), and key controversies.\n- **Engagement ranking** — popularity judged by combined likes, retweets, and replies.\n- **Clean signal** — filters out retweets and defaults to English tweets.\n\n## 📦 Project Structure\n\n```\nx-hots/\n├── SKILL.md            # Skill definition + the full agent workflow (the contract)\n├── scripts/\n│   └── x_hots.py       # Data-fetching implementation (Tweepy / X API v2)\n├── LICENSE             # MIT\n└── README.md\n```\n\n`SKILL.md` is the authoritative workflow specification — parameter contract, output schema, examples, and error handling. `scripts/x_hots.py` is the data-fetching step within that workflow.\n\n## ✅ Prerequisites\n\n- **Python 3.7+**\n- **[tweepy](https://docs.tweepy.org/)** library\n- An **X API Bearer Token** (app-only OAuth 2.0 — sufficient for `search_recent_tweets`)\n\nInstall tweepy:\n\n```bash\npip3 install tweepy\n```\n\nExport your bearer token (obtain it from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard)):\n\n```bash\nexport X_BEARER_TOKEN=\"your-token-here\"\n```\n\n> **Free-tier limits:** tweets are searchable only from the last 7 days, and search endpoints are rate-limited to 10 requests / 15 minutes.\n\n## 🚀 Usage\n\nRun the script with a JSON array of search keywords. Each keyword returns up to 10 related hot tweets.\n\n```bash\n# Tech + Economy\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (no specific domain)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n### Output Format\n\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": { \"like_count\": 100, \"retweet_count\": 50 },\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\nThe agent then turns this raw output into a per-topic summary:\n\n```markdown\n## 🔥 [Domain] Hot Topics\n\n### Topic 1: [Title]\n**📌 Background** — origin, timeline, key figures/organizations\n**💬 Popular Opinions** — supporters / opponents / neutral\n**⚔️ Key Controversies** — focal point of the debate\n```\n\n## ⚠️ Notes & Limitations\n\n1. **API limits** — free tier searches only the last 7 days of tweets.\n2. **Language filter** — defaults to English (`lang:en`); modify the script for other languages.\n3. **Deduplication** — retweets are filtered out (`-is:retweet`); only original tweets are returned.\n4. **Engagement ranking** — popularity is judged by likes, retweets, and replies combined.\n5. **Timeliness** — results are sorted by relevancy, prioritizing high-engagement tweets.\n\n## 🛠 Error Handling\n\n| Scenario | Symptom | Fix |\n|---|---|---|\n| Missing token | `{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}` | Export `X_BEARER_TOKEN` in your shell profile. |\n| No results | `{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}` | Try different keywords. |\n| Rate limited | `{\"success\": false, \"error\": \"429 Too Many Requests\"}` | Wait 15 minutes, or reduce the number of keywords. |\n\n## 📄 License\n\n[MIT](./LICENSE) © 2026 jiangsier-xyz\n\nFile v1.4.1:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.4.1\",\n  \"publishedAt\": 1784520582693\n}\n\nFile v1.4.1:CHANGELOG.md\n\n# Changelog\n\nAll notable changes to the **x-hots** skill are documented here.\nThis project follows [Semantic Versioning](https://semver.org/).\n\n## [1.4.1] — 2026-07-20\n\n### Added\n- `CHANGELOG.md` tracking notable changes per release.\n- Release notes attached to the ClawHub publication.\n\n## [1.4.0] — 2026-07-20\n\n### Added\n- Bilingual project README: `README.md` (English) and `README.zh-CN.md` (Chinese), cross-linked.\n- `CLAUDE.md` with architecture guidance for the OpenClaw skill / `scripts/x_hots.py` coupling.\n- `.gitignore` to keep Python bytecode out of the repo.\n\n### Changed\n- Framed the project as an **OpenClaw** skill (driven by an OpenClaw agent) across all docs.\n- Bumped skill version to `1.4.0`.\n\n### Removed\n- Accidentally committed `scripts/__pycache__/` from the tree.\n\n## [1.3.1] — 2026-07-20\n\n### Added\n- Initial ClawHub publication of the X (Twitter) Hot Topics skill.\n- Existing `SKILL.md` workflow spec (interest-domain analysis → keyword fetch → background/opinions/controversies) and the `scripts/x_hots.py` data-fetching implementation using Tweepy / X API v2.\n\n## [1.1.1] — 2026-07-16\n\n### Added\n- Initial commit: `SKILL.md`, `scripts/x_hots.py`, and `LICENSE`.\n\nFile v1.4.1:CLAUDE.md\n\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nx-hots is an OpenClaw skill that fetches real-time trending topics from X (Twitter) and supports interest-domain-based analysis. It is packaged as a skill (`SKILL.md` at repo root defines the skill contract) backed by a single Python script (`scripts/x_hots.py`).\n\nThe skill is designed to be driven by an OpenClaw agent: the agent analyzes the user's natural-language input to pick 2–3 search keywords per interest domain, invokes the script with those keywords as a JSON array, then synthesizes background/opinions/controversies from the returned tweets. `SKILL.md` is the authoritative workflow spec — the Python script is just the data-fetching step (Step 2) within it.\n\n## Running the script\n\nThe script takes a single JSON-array argument of search keywords and prints JSON to stdout:\n\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\"]'\n```\n\nPrerequisites: Python 3.7+ and `tweepy` (`pip3 install tweepy`). The only required credential is `X_BEARER_TOKEN` (app-only OAuth 2.0), exported in the shell environment. There is no build step, no test suite, and no lint configuration in this repo.\n\nEach keyword query returns up to 10 tweets (default `max_results_per_query=10`), filtered to original non-retweet English tweets (`-is:retweet lang:en`), sorted by relevancy.\n\n## Architecture\n\nTwo tightly-coupled artifacts; changes to one usually require changes to the other:\n\n- **`SKILL.md`** — the skill definition (frontmatter `name: x-hots`) AND the human/agent-facing workflow, parameter contract, output schema, example invocations, and error-handling reference. The JSON output format documented here must match what `scripts/x_hots.py` actually emits.\n- **`scripts/x_hots.py`** — the implementation. Three functions: `create_client()` (reads `X_BEARER_TOKEN`, builds a `tweepy.Client` with `wait_on_rate_limit=True`), `search_hot_topics(client, queries, max_results_per_query=10)` (loops queries, catches `tweepy.TweepyException` per-query so one failing query doesn't abort the rest), and `main()` (parses argv[1] as JSON, assembles the top-level `{success, timestamp, queries, results}` envelope, prints with `ensure_ascii=False`).\n\nError reporting is JSON-on-stdout + `sys.exit(1)` for fatal errors (missing token, bad JSON argv); per-query failures are kept inside `results` with `success: false` and the process still exits 0.\n\n## Conventions\n\n- The skill/CLI contract is bilingual-aware: English is the default tweet language filter in the script. If you change the language filter or query syntax in `x_hots.py`, update the \"Notes\" section of `SKILL.md` to match.\n- Output is UTF-8 JSON (`ensure_ascii=False`) so tweet text with non-ASCII characters renders correctly — keep this when modifying `main()`.\n- This is a skill repo, not an application — keep the surface minimal. New functionality should extend `x_hots.py` and be reflected in `SKILL.md`'s workflow/output sections rather than introducing new entry points.\n\n## Generated files\n\n`scripts/__pycache__/` is committed by accident (a `.pyc` is staged). Prefer not to add Python bytecode; consider a `.gitignore` entry.\n\nFile v1.4.1:README.zh-CN.md\n\n# x-hots\n\n一个 [OpenClaw](https://github.com/openclaw/openclaw) 技能（Skill），用于从 **X（Twitter）** 获取实时热门话题，并按兴趣领域进行分析——梳理每个话题的背景、主流观点与核心争议。\n\n该技能由 OpenClaw 智能体驱动：它会分析你的自然语言输入，挑选出合适的搜索关键词，运行内置的 Python 脚本通过 X API v2 抓取热门推文，再综合输出一份关于\"什么正在热、为什么热\"的结构化摘要。\n\n[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n---\n\n## ✨ 功能特性\n\n- **兴趣领域分析** —— 用自然语言描述你关心的方向（例如\"科技领域有什么热点？\"），技能会将其映射到相关搜索关键词（政治、经济、科技、体育、娱乐、社会等）。\n- **实时热门推文** —— 通过官方 X API v2 拉取近期高互动量推文。\n- **结构化摘要** —— 针对每个话题输出：背景、主流观点（支持方 / 反对方 / 中立），以及核心争议。\n- **互动量排序** —— 综合点赞、转发、回复数评估热度。\n- **干净信号** —— 自动过滤转推，默认仅返回英文推文。\n\n## 📦 项目结构\n\n```\nx-hots/\n├── SKILL.md            # 技能定义 + 完整的智能体工作流（即契约说明）\n├── scripts/\n│   └── x_hots.py       # 数据抓取实现（基于 Tweepy / X API v2）\n├── LICENSE             # MIT\n└── README.zh-CN.md\n```\n\n`SKILL.md` 是权威的工作流规范——包括参数约定、输出格式、示例与错误处理。`scripts/x_hots.py` 是该工作流中的数据抓取步骤。\n\n## ✅ 前置条件\n\n- **Python 3.7+**\n- **[tweepy](https://docs.tweepy.org/)** 库\n- 一个 **X API Bearer Token**（应用级 OAuth 2.0，足以调用 `search_recent_tweets`）\n\n安装 tweepy：\n\n```bash\npip3 install tweepy\n```\n\n导出你的 Bearer Token（可在 [X 开发者门户](https://developer.twitter.com/en/portal/dashboard) 获取）：\n\n```bash\nexport X_BEARER_TOKEN=\"your-token-here\"\n```\n\n> **免费档限制：** 只能检索最近 7 天内的推文；搜索端点限流为每 15 分钟 10 次请求。\n\n## 🚀 使用方法\n\n运行脚本时传入一个 JSON 数组作为搜索关键词。每个关键词最多返回 10 条相关热门推文。\n\n```bash\n# 科技 + 经济\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# 国际政治\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# 通用热点（无法识别具体领域时）\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n### 输出格式\n\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"推文内容...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": { \"like_count\": 100, \"retweet_count\": 50 },\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n随后，智能体会把这份原始输出整理成按话题汇总的摘要：\n\n```markdown\n## 🔥 [领域] 热门话题\n\n### 话题 1：[标题]\n**📌 背景** —— 事件起源、时间线、关键人物/机构\n**💬 主流观点** —— 支持方 / 反对方 / 中立方\n**⚔️ 核心争议** —— 争论焦点、不同立场分歧所在\n```\n\n## ⚠️ 说明与限制\n\n1. **API 限制** —— 免费档仅能检索最近 7 天的推文。\n2. **语言过滤** —— 默认仅返回英文推文（`lang:en`）；如需其他语言请修改脚本。\n3. **去重** —— 已过滤转推（`-is:retweet`），仅返回原创推文。\n4. **互动量排序** —— 综合点赞、转发、回复数评估热度。\n5. **时效性** —— 结果按相关性排序，优先展示高互动量推文。\n\n## 🛠 错误处理\n\n| 场景 | 表现 | 解决办法 |\n|---|---|---|\n| 缺少 Token | `{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}` | 在 shell 配置文件中导出 `X_BEARER_TOKEN`。 |\n| 无结果 | `{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}` | 换一组关键词重试。 |\n| 触发限流 | `{\"success\": false, \"error\": \"429 Too Many Requests\"}` | 等待 15 分钟，或减少关键词数量。 |\n\n## 📄 许可证\n\n[MIT](./LICENSE) © 2026 jiangsier-xyz\n\nFile v1.4.1:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to identify current X/Twitter topics for a stated interest area and summarize the topic background, common opinions, and controversies. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires an X API bearer token, and mishandling that token could expose account access. <br>\nMitigation: Store the token in a secure environment or secret manager, avoid committing it to files, and rotate it if exposure is suspected. <br>\nRisk: Chosen search keywords are sent to X and may reveal sensitive interests or investigative intent. <br>\nMitigation: Avoid private or sensitive queries and use only search terms suitable for processing by the X API. <br>\nRisk: Recent public posts can be incomplete, misleading, or volatile as evidence for public opinion. <br>\nMitigation: Treat generated summaries as situational context and verify important claims against primary sources before acting on them. <br>\n\n\n## Reference(s): <br>\n- [OpenClaw](https://github.com/openclaw/openclaw) <br>\n- [Tweepy documentation](https://docs.tweepy.org/) <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown summaries with supporting JSON from the X API query script] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires an X API bearer token and user-selected search keywords; defaults to English, non-retweet recent posts.] <br>\n\n## Skill Version(s): <br>\n1.4.1 (source: frontmatter, changelog, ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.4.1:LICENSE\n\nMIT License\n\nCopyright (c) 2026 jiangsier-xyz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.4.0: 8 files, 13724 bytes\n\nFiles: CLAUDE.md (3256b), LICENSE (1070b), README.md (4474b), README.zh-CN.md (4451b), scripts/x_hots.py (4116b), skill-card.md (2428b), SKILL.md (6722b), _meta.json (125b)\n\nFile v1.4.0:SKILL.md\n\n---\nname: x-hots\nversion: 1.4.0\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nInstall tweepy:\n```bash\npip3 install tweepy\n```\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}\n```\n**Fix**: Ensure the Bearer Token environment variable is set in your shell profile (e.g. `~/.zshrc`):\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain the credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.4.0:README.md\n\n# x-hots\n\nAn [OpenClaw](https://github.com/openclaw/openclaw) skill that fetches real-time trending topics from **X (Twitter)** and supports interest-domain-based analysis — background, popular opinions, and key controversies for each topic.\n\nThe skill is driven by an OpenClaw agent: it analyzes your natural-language input to pick search keywords, runs the bundled Python script to fetch hot tweets via the X API v2, then synthesizes a structured summary of what's trending and why.\n\n[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n---\n\n## ✨ Features\n\n- **Interest-domain analysis** — describe what you care about in plain language (\"what's hot in tech?\"), and the skill maps it to relevant search keywords (politics, economy, technology, sports, entertainment, society, …).\n- **Real-time trending tweets** — pulls recent high-engagement tweets from X using the official API v2.\n- **Structured summaries** — for each topic: background, popular opinions (supporters / opponents / neutral), and key controversies.\n- **Engagement ranking** — popularity judged by combined likes, retweets, and replies.\n- **Clean signal** — filters out retweets and defaults to English tweets.\n\n## 📦 Project Structure\n\n```\nx-hots/\n├── SKILL.md            # Skill definition + the full agent workflow (the contract)\n├── scripts/\n│   └── x_hots.py       # Data-fetching implementation (Tweepy / X API v2)\n├── LICENSE             # MIT\n└── README.md\n```\n\n`SKILL.md` is the authoritative workflow specification — parameter contract, output schema, examples, and error handling. `scripts/x_hots.py` is the data-fetching step within that workflow.\n\n## ✅ Prerequisites\n\n- **Python 3.7+**\n- **[tweepy](https://docs.tweepy.org/)** library\n- An **X API Bearer Token** (app-only OAuth 2.0 — sufficient for `search_recent_tweets`)\n\nInstall tweepy:\n\n```bash\npip3 install tweepy\n```\n\nExport your bearer token (obtain it from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard)):\n\n```bash\nexport X_BEARER_TOKEN=\"your-token-here\"\n```\n\n> **Free-tier limits:** tweets are searchable only from the last 7 days, and search endpoints are rate-limited to 10 requests / 15 minutes.\n\n## 🚀 Usage\n\nRun the script with a JSON array of search keywords. Each keyword returns up to 10 related hot tweets.\n\n```bash\n# Tech + Economy\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (no specific domain)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n### Output Format\n\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": { \"like_count\": 100, \"retweet_count\": 50 },\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\nThe agent then turns this raw output into a per-topic summary:\n\n```markdown\n## 🔥 [Domain] Hot Topics\n\n### Topic 1: [Title]\n**📌 Background** — origin, timeline, key figures/organizations\n**💬 Popular Opinions** — supporters / opponents / neutral\n**⚔️ Key Controversies** — focal point of the debate\n```\n\n## ⚠️ Notes & Limitations\n\n1. **API limits** — free tier searches only the last 7 days of tweets.\n2. **Language filter** — defaults to English (`lang:en`); modify the script for other languages.\n3. **Deduplication** — retweets are filtered out (`-is:retweet`); only original tweets are returned.\n4. **Engagement ranking** — popularity is judged by likes, retweets, and replies combined.\n5. **Timeliness** — results are sorted by relevancy, prioritizing high-engagement tweets.\n\n## 🛠 Error Handling\n\n| Scenario | Symptom | Fix |\n|---|---|---|\n| Missing token | `{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}` | Export `X_BEARER_TOKEN` in your shell profile. |\n| No results | `{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}` | Try different keywords. |\n| Rate limited | `{\"success\": false, \"error\": \"429 Too Many Requests\"}` | Wait 15 minutes, or reduce the number of keywords. |\n\n## 📄 License\n\n[MIT](./LICENSE) © 2026 jiangsier-xyz\n\nFile v1.4.0:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.4.0\",\n  \"publishedAt\": 1784520234341\n}\n\nFile v1.4.0:CLAUDE.md\n\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nx-hots is an OpenClaw skill that fetches real-time trending topics from X (Twitter) and supports interest-domain-based analysis. It is packaged as a skill (`SKILL.md` at repo root defines the skill contract) backed by a single Python script (`scripts/x_hots.py`).\n\nThe skill is designed to be driven by an OpenClaw agent: the agent analyzes the user's natural-language input to pick 2–3 search keywords per interest domain, invokes the script with those keywords as a JSON array, then synthesizes background/opinions/controversies from the returned tweets. `SKILL.md` is the authoritative workflow spec — the Python script is just the data-fetching step (Step 2) within it.\n\n## Running the script\n\nThe script takes a single JSON-array argument of search keywords and prints JSON to stdout:\n\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\"]'\n```\n\nPrerequisites: Python 3.7+ and `tweepy` (`pip3 install tweepy`). The only required credential is `X_BEARER_TOKEN` (app-only OAuth 2.0), exported in the shell environment. There is no build step, no test suite, and no lint configuration in this repo.\n\nEach keyword query returns up to 10 tweets (default `max_results_per_query=10`), filtered to original non-retweet English tweets (`-is:retweet lang:en`), sorted by relevancy.\n\n## Architecture\n\nTwo tightly-coupled artifacts; changes to one usually require changes to the other:\n\n- **`SKILL.md`** — the skill definition (frontmatter `name: x-hots`) AND the human/agent-facing workflow, parameter contract, output schema, example invocations, and error-handling reference. The JSON output format documented here must match what `scripts/x_hots.py` actually emits.\n- **`scripts/x_hots.py`** — the implementation. Three functions: `create_client()` (reads `X_BEARER_TOKEN`, builds a `tweepy.Client` with `wait_on_rate_limit=True`), `search_hot_topics(client, queries, max_results_per_query=10)` (loops queries, catches `tweepy.TweepyException` per-query so one failing query doesn't abort the rest), and `main()` (parses argv[1] as JSON, assembles the top-level `{success, timestamp, queries, results}` envelope, prints with `ensure_ascii=False`).\n\nError reporting is JSON-on-stdout + `sys.exit(1)` for fatal errors (missing token, bad JSON argv); per-query failures are kept inside `results` with `success: false` and the process still exits 0.\n\n## Conventions\n\n- The skill/CLI contract is bilingual-aware: English is the default tweet language filter in the script. If you change the language filter or query syntax in `x_hots.py`, update the \"Notes\" section of `SKILL.md` to match.\n- Output is UTF-8 JSON (`ensure_ascii=False`) so tweet text with non-ASCII characters renders correctly — keep this when modifying `main()`.\n- This is a skill repo, not an application — keep the surface minimal. New functionality should extend `x_hots.py` and be reflected in `SKILL.md`'s workflow/output sections rather than introducing new entry points.\n\n## Generated files\n\n`scripts/__pycache__/` is committed by accident (a `.pyc` is staged). Prefer not to add Python bytecode; consider a `.gitignore` entry.\n\nFile v1.4.0:README.zh-CN.md\n\n# x-hots\n\n一个 [OpenClaw](https://github.com/openclaw/openclaw) 技能（Skill），用于从 **X（Twitter）** 获取实时热门话题，并按兴趣领域进行分析——梳理每个话题的背景、主流观点与核心争议。\n\n该技能由 OpenClaw 智能体驱动：它会分析你的自然语言输入，挑选出合适的搜索关键词，运行内置的 Python 脚本通过 X API v2 抓取热门推文，再综合输出一份关于\"什么正在热、为什么热\"的结构化摘要。\n\n[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n---\n\n## ✨ 功能特性\n\n- **兴趣领域分析** —— 用自然语言描述你关心的方向（例如\"科技领域有什么热点？\"），技能会将其映射到相关搜索关键词（政治、经济、科技、体育、娱乐、社会等）。\n- **实时热门推文** —— 通过官方 X API v2 拉取近期高互动量推文。\n- **结构化摘要** —— 针对每个话题输出：背景、主流观点（支持方 / 反对方 / 中立），以及核心争议。\n- **互动量排序** —— 综合点赞、转发、回复数评估热度。\n- **干净信号** —— 自动过滤转推，默认仅返回英文推文。\n\n## 📦 项目结构\n\n```\nx-hots/\n├── SKILL.md            # 技能定义 + 完整的智能体工作流（即契约说明）\n├── scripts/\n│   └── x_hots.py       # 数据抓取实现（基于 Tweepy / X API v2）\n├── LICENSE             # MIT\n└── README.zh-CN.md\n```\n\n`SKILL.md` 是权威的工作流规范——包括参数约定、输出格式、示例与错误处理。`scripts/x_hots.py` 是该工作流中的数据抓取步骤。\n\n## ✅ 前置条件\n\n- **Python 3.7+**\n- **[tweepy](https://docs.tweepy.org/)** 库\n- 一个 **X API Bearer Token**（应用级 OAuth 2.0，足以调用 `search_recent_tweets`）\n\n安装 tweepy：\n\n```bash\npip3 install tweepy\n```\n\n导出你的 Bearer Token（可在 [X 开发者门户](https://developer.twitter.com/en/portal/dashboard) 获取）：\n\n```bash\nexport X_BEARER_TOKEN=\"your-token-here\"\n```\n\n> **免费档限制：** 只能检索最近 7 天内的推文；搜索端点限流为每 15 分钟 10 次请求。\n\n## 🚀 使用方法\n\n运行脚本时传入一个 JSON 数组作为搜索关键词。每个关键词最多返回 10 条相关热门推文。\n\n```bash\n# 科技 + 经济\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# 国际政治\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# 通用热点（无法识别具体领域时）\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n### 输出格式\n\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"推文内容...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": { \"like_count\": 100, \"retweet_count\": 50 },\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n随后，智能体会把这份原始输出整理成按话题汇总的摘要：\n\n```markdown\n## 🔥 [领域] 热门话题\n\n### 话题 1：[标题]\n**📌 背景** —— 事件起源、时间线、关键人物/机构\n**💬 主流观点** —— 支持方 / 反对方 / 中立方\n**⚔️ 核心争议** —— 争论焦点、不同立场分歧所在\n```\n\n## ⚠️ 说明与限制\n\n1. **API 限制** —— 免费档仅能检索最近 7 天的推文。\n2. **语言过滤** —— 默认仅返回英文推文（`lang:en`）；如需其他语言请修改脚本。\n3. **去重** —— 已过滤转推（`-is:retweet`），仅返回原创推文。\n4. **互动量排序** —— 综合点赞、转发、回复数评估热度。\n5. **时效性** —— 结果按相关性排序，优先展示高互动量推文。\n\n## 🛠 错误处理\n\n| 场景 | 表现 | 解决办法 |\n|---|---|---|\n| 缺少 Token | `{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}` | 在 shell 配置文件中导出 `X_BEARER_TOKEN`。 |\n| 无结果 | `{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}` | 换一组关键词重试。 |\n| 触发限流 | `{\"success\": false, \"error\": \"429 Too Many Requests\"}` | 等待 15 分钟，或减少关键词数量。 |\n\n## 📄 许可证\n\n[MIT](./LICENSE) © 2026 jiangsier-xyz\n\nFile v1.4.0:skill-card.md\n\n## Description: <br>\nFetches recent X (Twitter) topics from user-selected interest areas and summarizes the background, popular opinions, and key controversies around them. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to answer questions about what is currently trending on X/Twitter. It maps natural-language interests to search keywords, fetches recent public tweets through the X API, and turns the results into concise topic analysis. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires an X API bearer token and sends chosen or derived search keywords to X/Twitter. <br>\nMitigation: Use a token scoped for search access, avoid sensitive personal queries, and keep the token in the X_BEARER_TOKEN environment variable rather than embedding it in prompts or files. <br>\nRisk: Recent public tweets can be incomplete, rate-limited, or skewed by keyword choice and engagement metrics. <br>\nMitigation: Treat summaries as a current public-signal snapshot, reduce keyword count when rate limited, and verify important claims against additional sources before acting on them. <br>\n\n\n## Reference(s): <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n- [Tweepy Documentation](https://docs.tweepy.org/) <br>\n- [OpenClaw](https://github.com/openclaw/openclaw) <br>\n- [ClawHub Skill Page](https://clawhub.ai/jiangsier-xyz/skills/x-hots) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [JSON, Markdown, Shell commands, Guidance] <br>\n**Output Format:** [JSON from the fetch script, followed by Markdown topic summaries and operational guidance from the agent] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Fetches up to 10 recent English, non-retweet posts per query and ranks relevance using public engagement metrics.] <br>\n\n## Skill Version(s): <br>\n1.4.0 (source: SKILL.md frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.4.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 jiangsier-xyz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.3.1: 8 files, 13649 bytes\n\nFiles: CLAUDE.md (3256b), LICENSE (1070b), README.md (4474b), README.zh-CN.md (4451b), scripts/x_hots.py (4116b), skill-card.md (2282b), SKILL.md (6722b), _meta.json (125b)\n\nFile v1.3.1:SKILL.md\n\n---\nname: x-hots\nversion: 1.1.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nInstall tweepy:\n```bash\npip3 install tweepy\n```\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}\n```\n**Fix**: Ensure the Bearer Token environment variable is set in your shell profile (e.g. `~/.zshrc`):\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain the credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.3.1:README.md\n\n# x-hots\n\nAn [OpenClaw](https://github.com/openclaw/openclaw) skill that fetches real-time trending topics from **X (Twitter)** and supports interest-domain-based analysis — background, popular opinions, and key controversies for each topic.\n\nThe skill is driven by an OpenClaw agent: it analyzes your natural-language input to pick search keywords, runs the bundled Python script to fetch hot tweets via the X API v2, then synthesizes a structured summary of what's trending and why.\n\n[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n---\n\n## ✨ Features\n\n- **Interest-domain analysis** — describe what you care about in plain language (\"what's hot in tech?\"), and the skill maps it to relevant search keywords (politics, economy, technology, sports, entertainment, society, …).\n- **Real-time trending tweets** — pulls recent high-engagement tweets from X using the official API v2.\n- **Structured summaries** — for each topic: background, popular opinions (supporters / opponents / neutral), and key controversies.\n- **Engagement ranking** — popularity judged by combined likes, retweets, and replies.\n- **Clean signal** — filters out retweets and defaults to English tweets.\n\n## 📦 Project Structure\n\n```\nx-hots/\n├── SKILL.md            # Skill definition + the full agent workflow (the contract)\n├── scripts/\n│   └── x_hots.py       # Data-fetching implementation (Tweepy / X API v2)\n├── LICENSE             # MIT\n└── README.md\n```\n\n`SKILL.md` is the authoritative workflow specification — parameter contract, output schema, examples, and error handling. `scripts/x_hots.py` is the data-fetching step within that workflow.\n\n## ✅ Prerequisites\n\n- **Python 3.7+**\n- **[tweepy](https://docs.tweepy.org/)** library\n- An **X API Bearer Token** (app-only OAuth 2.0 — sufficient for `search_recent_tweets`)\n\nInstall tweepy:\n\n```bash\npip3 install tweepy\n```\n\nExport your bearer token (obtain it from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard)):\n\n```bash\nexport X_BEARER_TOKEN=\"your-token-here\"\n```\n\n> **Free-tier limits:** tweets are searchable only from the last 7 days, and search endpoints are rate-limited to 10 requests / 15 minutes.\n\n## 🚀 Usage\n\nRun the script with a JSON array of search keywords. Each keyword returns up to 10 related hot tweets.\n\n```bash\n# Tech + Economy\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (no specific domain)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n### Output Format\n\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": { \"like_count\": 100, \"retweet_count\": 50 },\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\nThe agent then turns this raw output into a per-topic summary:\n\n```markdown\n## 🔥 [Domain] Hot Topics\n\n### Topic 1: [Title]\n**📌 Background** — origin, timeline, key figures/organizations\n**💬 Popular Opinions** — supporters / opponents / neutral\n**⚔️ Key Controversies** — focal point of the debate\n```\n\n## ⚠️ Notes & Limitations\n\n1. **API limits** — free tier searches only the last 7 days of tweets.\n2. **Language filter** — defaults to English (`lang:en`); modify the script for other languages.\n3. **Deduplication** — retweets are filtered out (`-is:retweet`); only original tweets are returned.\n4. **Engagement ranking** — popularity is judged by likes, retweets, and replies combined.\n5. **Timeliness** — results are sorted by relevancy, prioritizing high-engagement tweets.\n\n## 🛠 Error Handling\n\n| Scenario | Symptom | Fix |\n|---|---|---|\n| Missing token | `{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}` | Export `X_BEARER_TOKEN` in your shell profile. |\n| No results | `{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}` | Try different keywords. |\n| Rate limited | `{\"success\": false, \"error\": \"429 Too Many Requests\"}` | Wait 15 minutes, or reduce the number of keywords. |\n\n## 📄 License\n\n[MIT](./LICENSE) © 2026 jiangsier-xyz\n\nFile v1.3.1:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.3.1\",\n  \"publishedAt\": 1784520110132\n}\n\nFile v1.3.1:CLAUDE.md\n\n# CLAUDE.md\n\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\n\n## Project Overview\n\nx-hots is an OpenClaw skill that fetches real-time trending topics from X (Twitter) and supports interest-domain-based analysis. It is packaged as a skill (`SKILL.md` at repo root defines the skill contract) backed by a single Python script (`scripts/x_hots.py`).\n\nThe skill is designed to be driven by an OpenClaw agent: the agent analyzes the user's natural-language input to pick 2–3 search keywords per interest domain, invokes the script with those keywords as a JSON array, then synthesizes background/opinions/controversies from the returned tweets. `SKILL.md` is the authoritative workflow spec — the Python script is just the data-fetching step (Step 2) within it.\n\n## Running the script\n\nThe script takes a single JSON-array argument of search keywords and prints JSON to stdout:\n\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\"]'\n```\n\nPrerequisites: Python 3.7+ and `tweepy` (`pip3 install tweepy`). The only required credential is `X_BEARER_TOKEN` (app-only OAuth 2.0), exported in the shell environment. There is no build step, no test suite, and no lint configuration in this repo.\n\nEach keyword query returns up to 10 tweets (default `max_results_per_query=10`), filtered to original non-retweet English tweets (`-is:retweet lang:en`), sorted by relevancy.\n\n## Architecture\n\nTwo tightly-coupled artifacts; changes to one usually require changes to the other:\n\n- **`SKILL.md`** — the skill definition (frontmatter `name: x-hots`) AND the human/agent-facing workflow, parameter contract, output schema, example invocations, and error-handling reference. The JSON output format documented here must match what `scripts/x_hots.py` actually emits.\n- **`scripts/x_hots.py`** — the implementation. Three functions: `create_client()` (reads `X_BEARER_TOKEN`, builds a `tweepy.Client` with `wait_on_rate_limit=True`), `search_hot_topics(client, queries, max_results_per_query=10)` (loops queries, catches `tweepy.TweepyException` per-query so one failing query doesn't abort the rest), and `main()` (parses argv[1] as JSON, assembles the top-level `{success, timestamp, queries, results}` envelope, prints with `ensure_ascii=False`).\n\nError reporting is JSON-on-stdout + `sys.exit(1)` for fatal errors (missing token, bad JSON argv); per-query failures are kept inside `results` with `success: false` and the process still exits 0.\n\n## Conventions\n\n- The skill/CLI contract is bilingual-aware: English is the default tweet language filter in the script. If you change the language filter or query syntax in `x_hots.py`, update the \"Notes\" section of `SKILL.md` to match.\n- Output is UTF-8 JSON (`ensure_ascii=False`) so tweet text with non-ASCII characters renders correctly — keep this when modifying `main()`.\n- This is a skill repo, not an application — keep the surface minimal. New functionality should extend `x_hots.py` and be reflected in `SKILL.md`'s workflow/output sections rather than introducing new entry points.\n\n## Generated files\n\n`scripts/__pycache__/` is committed by accident (a `.pyc` is staged). Prefer not to add Python bytecode; consider a `.gitignore` entry.\n\nFile v1.3.1:README.zh-CN.md\n\n# x-hots\n\n一个 [OpenClaw](https://github.com/openclaw/openclaw) 技能（Skill），用于从 **X（Twitter）** 获取实时热门话题，并按兴趣领域进行分析——梳理每个话题的背景、主流观点与核心争议。\n\n该技能由 OpenClaw 智能体驱动：它会分析你的自然语言输入，挑选出合适的搜索关键词，运行内置的 Python 脚本通过 X API v2 抓取热门推文，再综合输出一份关于\"什么正在热、为什么热\"的结构化摘要。\n\n[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n---\n\n## ✨ 功能特性\n\n- **兴趣领域分析** —— 用自然语言描述你关心的方向（例如\"科技领域有什么热点？\"），技能会将其映射到相关搜索关键词（政治、经济、科技、体育、娱乐、社会等）。\n- **实时热门推文** —— 通过官方 X API v2 拉取近期高互动量推文。\n- **结构化摘要** —— 针对每个话题输出：背景、主流观点（支持方 / 反对方 / 中立），以及核心争议。\n- **互动量排序** —— 综合点赞、转发、回复数评估热度。\n- **干净信号** —— 自动过滤转推，默认仅返回英文推文。\n\n## 📦 项目结构\n\n```\nx-hots/\n├── SKILL.md            # 技能定义 + 完整的智能体工作流（即契约说明）\n├── scripts/\n│   └── x_hots.py       # 数据抓取实现（基于 Tweepy / X API v2）\n├── LICENSE             # MIT\n└── README.zh-CN.md\n```\n\n`SKILL.md` 是权威的工作流规范——包括参数约定、输出格式、示例与错误处理。`scripts/x_hots.py` 是该工作流中的数据抓取步骤。\n\n## ✅ 前置条件\n\n- **Python 3.7+**\n- **[tweepy](https://docs.tweepy.org/)** 库\n- 一个 **X API Bearer Token**（应用级 OAuth 2.0，足以调用 `search_recent_tweets`）\n\n安装 tweepy：\n\n```bash\npip3 install tweepy\n```\n\n导出你的 Bearer Token（可在 [X 开发者门户](https://developer.twitter.com/en/portal/dashboard) 获取）：\n\n```bash\nexport X_BEARER_TOKEN=\"your-token-here\"\n```\n\n> **免费档限制：** 只能检索最近 7 天内的推文；搜索端点限流为每 15 分钟 10 次请求。\n\n## 🚀 使用方法\n\n运行脚本时传入一个 JSON 数组作为搜索关键词。每个关键词最多返回 10 条相关热门推文。\n\n```bash\n# 科技 + 经济\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# 国际政治\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# 通用热点（无法识别具体领域时）\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n### 输出格式\n\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"推文内容...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": { \"like_count\": 100, \"retweet_count\": 50 },\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n随后，智能体会把这份原始输出整理成按话题汇总的摘要：\n\n```markdown\n## 🔥 [领域] 热门话题\n\n### 话题 1：[标题]\n**📌 背景** —— 事件起源、时间线、关键人物/机构\n**💬 主流观点** —— 支持方 / 反对方 / 中立方\n**⚔️ 核心争议** —— 争论焦点、不同立场分歧所在\n```\n\n## ⚠️ 说明与限制\n\n1. **API 限制** —— 免费档仅能检索最近 7 天的推文。\n2. **语言过滤** —— 默认仅返回英文推文（`lang:en`）；如需其他语言请修改脚本。\n3. **去重** —— 已过滤转推（`-is:retweet`），仅返回原创推文。\n4. **互动量排序** —— 综合点赞、转发、回复数评估热度。\n5. **时效性** —— 结果按相关性排序，优先展示高互动量推文。\n\n## 🛠 错误处理\n\n| 场景 | 表现 | 解决办法 |\n|---|---|---|\n| 缺少 Token | `{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}` | 在 shell 配置文件中导出 `X_BEARER_TOKEN`。 |\n| 无结果 | `{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}` | 换一组关键词重试。 |\n| 触发限流 | `{\"success\": false, \"error\": \"429 Too Many Requests\"}` | 等待 15 分钟，或减少关键词数量。 |\n\n## 📄 许可证\n\n[MIT](./LICENSE) © 2026 jiangsier-xyz\n\nFile v1.3.1:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter), analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to find recent X/Twitter discussions for a domain or topic and summarize the background, popular viewpoints, and controversies. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires an X API bearer token and sends chosen search keywords to X. <br>\nMitigation: Use a token with the least access needed for recent public tweet search, and avoid confidential, personal, or sensitive query topics. <br>\nRisk: Returned topics may be incomplete because X recent search, free-tier limits, language filtering, and rate limits constrain what can be retrieved. <br>\nMitigation: Treat summaries as timely public-signal analysis, verify important claims against primary sources, and reduce query count or wait before retrying when rate limited. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/jiangsier-xyz/skills/x-hots) <br>\n- [OpenClaw project](https://github.com/openclaw/openclaw) <br>\n- [Tweepy documentation](https://docs.tweepy.org/) <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Markdown, JSON, Shell commands, Guidance] <br>\n**Output Format:** [Markdown summaries with JSON command output from a local Python helper] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires X_BEARER_TOKEN; query results depend on X API access, recent-search availability, and rate limits.] <br>\n\n## Skill Version(s): <br>\n1.3.1 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.3.1:LICENSE\n\nMIT License\n\nCopyright (c) 2026 jiangsier-xyz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v1.3.0: 4 files, 5988 bytes\n\nFiles: scripts/x_hots.py (4116b), skill-card.md (1917b), SKILL.md (6722b), _meta.json (125b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: x-hots\nversion: 1.1.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nInstall tweepy:\n```bash\npip3 install tweepy\n```\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variable: X_BEARER_TOKEN\"}\n```\n**Fix**: Ensure the Bearer Token environment variable is set in your shell profile (e.g. `~/.zshrc`):\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain the credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1784192912412\n}\n\nFile v1.3.0:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter), retrieve recent public tweets for selected interest domains, and summarize background, opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to turn a user's topic or domain interest into X recent-search queries, fetch public high-engagement tweets, and produce a concise trend summary. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill requires an X API bearer token and sends search topics to X. <br>\nMitigation: Use a limited-purpose token where possible and avoid searching sensitive private topics. <br>\nRisk: Trend summaries are based on recent public tweets and may reflect incomplete or misleading public discussion. <br>\nMitigation: Review summaries before relying on them and cross-check important claims against authoritative sources. <br>\n\n\n## Reference(s): <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, code, guidance] <br>\n**Output Format:** [Markdown summaries with optional JSON command output from the helper script] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires an X_BEARER_TOKEN environment variable and sends user-selected search topics to X.] <br>\n\n## Skill Version(s): <br>\n1.3.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.2.0: 4 files, 6015 bytes\n\nFiles: scripts/x_hots.py (4305b), skill-card.md (2157b), SKILL.md (6757b), _meta.json (125b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: x-hots\nversion: 1.1.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nInstall tweepy:\n```bash\npip3 install tweepy\n```\n\n### Environment Variables\n\nThe following X (Twitter) API credentials must be configured as environment variables:\n\n```bash\nexport X_API_KEY=\"***\"\nexport X_API_SECRET=\"***\"\nexport X_ACCESS_TOKEN=\"***\"\nexport X_ACCESS_TOKEN_SECRET=\"***\"\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain these credentials from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variables: X_API_KEY, ...\"}\n```\n**Fix**: Ensure the following environment variables are set in your shell profile (e.g., `~/.zshrc`):\n```bash\nexport X_API_KEY=\"***\"\nexport X_API_SECRET=\"***\"\nexport X_ACCESS_TOKEN=\"***\"\nexport X_ACCESS_TOKEN_SECRET=\"***\"\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain credentials from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1783572441466\n}\n\nFile v1.2.0:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter), analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to answer requests about trending X/Twitter topics, public opinion, or viral discussions by selecting search keywords, fetching recent tweets, and summarizing background, opinions, and controversies. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: User-derived topics or interests may be sent to X/Twitter through configured credentials. <br>\nMitigation: Use the skill only for explicit X/Twitter-related prompts and avoid broad trend or public-opinion requests unless the user accepts that disclosure. <br>\nRisk: External X/Twitter API use is under-disclosed by the skill. <br>\nMitigation: Review the skill before installing and ensure users understand that topic searches use X/Twitter API credentials. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/jiangsier-xyz/skills/x-hots) <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [shell commands, markdown, guidance] <br>\n**Output Format:** [JSON from the helper script and Markdown summaries from the agent] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires configured X/Twitter API credentials; the helper searches recent English tweets and returns up to 10 tweets per query.] <br>\n\n## Skill Version(s): <br>\n1.2.0 (source: server release metadata; artifact frontmatter says 1.1.1) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.1.1: 4 files, 6102 bytes\n\nFiles: scripts/x_hots.py (4305b), skill-card.md (2366b), SKILL.md (6757b), _meta.json (125b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: x-hots\nversion: 1.1.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nInstall tweepy:\n```bash\npip3 install tweepy\n```\n\n### Environment Variables\n\nThe following X (Twitter) API credentials must be configured as environment variables:\n\n```bash\nexport X_API_KEY=\"***\"\nexport X_API_SECRET=\"***\"\nexport X_ACCESS_TOKEN=\"***\"\nexport X_ACCESS_TOKEN_SECRET=\"***\"\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain these credentials from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variables: X_API_KEY, ...\"}\n```\n**Fix**: Ensure the following environment variables are set in your shell profile (e.g., `~/.zshrc`):\n```bash\nexport X_API_KEY=\"***\"\nexport X_API_SECRET=\"***\"\nexport X_ACCESS_TOKEN=\"***\"\nexport X_ACCESS_TOKEN_SECRET=\"***\"\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain credentials from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1783572051698\n}\n\nFile v1.1.1:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter), analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to turn a request about X/Twitter hot topics into targeted search queries, fetch recent public tweets through configured X API credentials, and summarize background, popular opinions, and controversies. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: User-derived search topics or interests may be sent to X through configured API credentials. <br>\nMitigation: Use explicit opt-in before each external query and avoid sending sensitive or private topics. <br>\nRisk: Trending tweet summaries may reflect incomplete, biased, or misleading public discussion. <br>\nMitigation: Present results as public social-media signals and verify important claims with authoritative sources before relying on them. <br>\nRisk: The skill depends on local X API credentials and rate-limited search access. <br>\nMitigation: Store credentials in environment variables with restricted access and handle no-result or rate-limit responses without repeated retries. <br>\n\n\n## Reference(s): <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n- [ClawHub skill page](https://clawhub.ai/jiangsier-xyz/skills/x-hots) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Markdown, JSON, Shell commands, Guidance] <br>\n**Output Format:** [Markdown analysis with JSON script results and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses X API credentials from environment variables and returns up to 10 recent tweets per query.] <br>\n\n## Skill Version(s): <br>\n1.1.1 (source: server release metadata and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.1.0: 4 files, 5849 bytes\n\nFiles: scripts/x_hots.py (4305b), skill-card.md (2175b), SKILL.md (6098b), _meta.json (125b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: x-hots\nversion: 1.1.0\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variables: X_API_KEY, ...\"}\n```\n**Fix**: Ensure the following environment variables are set in your shell profile (e.g., `~/.zshrc`):\n```bash\nexport X_API_KEY=\"***\"\nexport X_API_SECRET=\"***\"\nexport X_ACCESS_TOKEN=\"***\"\nexport X_ACCESS_TOKEN_SECRET=\"***\"\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain credentials from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1783571538108\n}\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\nFetch trending topics from X (Twitter), analyze user interests from natural language, retrieve hot topics by domain, and summarize background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and agents use this skill to answer requests about trending X/Twitter discussions by turning natural-language interests into search queries, fetching recent posts, and summarizing background, popular opinions, and controversies. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may use X/Twitter API credentials and make external searches for broad trend or news prompts. <br>\nMitigation: Confirm required credentials before installation, use the least-privileged X/Twitter credentials available, and avoid sensitive topics unless external querying is acceptable. <br>\nRisk: Missing credentials or provider rate limits can prevent hot-topic retrieval. <br>\nMitigation: Set the required environment variables before use and reduce query count or wait before retrying when rate limited. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/jiangsier-xyz/skills/x-hots) <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Guidance] <br>\n**Output Format:** [Markdown narrative with JSON results from the helper script] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses X/Twitter API credentials and returns up to 10 recent English non-retweet posts per query.] <br>\n\n## Skill Version(s): <br>\n1.1.0 (source: SKILL.md frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.0: 4 files, 5925 bytes\n\nFiles: scripts/x_hots.py (4305b), skill-card.md (2341b), SKILL.md (6098b), _meta.json (125b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: x-hots\nversion: 1.1.0\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\npython3 scripts/x_hots.py '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\npython3 scripts/x_hots.py '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\"]'\n```\n\n**Output Format**:\n```json\n{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}\n```\n\n### Step 3: Analyze and Present Results\n\nFor each domain/keyword, analyze the returned tweets and extract:\n\n1. **Background**: The origin of the hot topic, timeline, key people/organizations involved\n2. **Popular Opinions**: What are the mainstream views? Core arguments from supporters and opponents\n3. **Key Controversies**: What is the focal point of the debate? Where do different stances diverge?\n\n**Presentation Format**:\n\n```markdown\n## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n...\n```\n\n## Generic Query (When No Domain Can Be Identified)\n\nWhen the user's input cannot be mapped to a specific domain (e.g., \"what's hot on X?\"), use the following strategy:\n\n1. Run the script with generic hot topic queries:\n   ```bash\n   python3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n   ```\n\n2. Identify the **Top 10 highest-engagement topics** from the returned tweets (based on likes, retweets, replies)\n\n3. Present them ranked by engagement, with a brief background for each topic\n\n## Examples\n\n### Example 1: User Mentions a Specific Domain\n\n**User input**: \"What's hot in tech?\"\n\n**Analysis**: Domain = Tech, Keywords = [\"AI\", \"LLM\", \"tech\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"AI\", \"LLM\", \"tech\"]'\n```\n\n### Example 2: User Mentions a Specific Topic\n\n**User input**: \"What's happening with tariff policy?\"\n\n**Analysis**: Topic = Tariff, Keywords = [\"tariff\", \"trade war\", \"tariff policy\"]\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"tariff\", \"trade war\", \"tariff policy\"]'\n```\n\n### Example 3: No Domain Can Be Identified\n\n**User input**: \"What's hot on X?\"\n\n**Analysis**: No specific domain identified, use generic query\n\n**Execute**:\n```bash\npython3 scripts/x_hots.py '[\"trending\", \"breaking\", \"viral\", \"news\"]'\n```\n\n## Notes\n\n1. **API Limits**: Free-tier API can only search tweets from the last 7 days\n2. **Language Filter**: Defaults to English tweets (`lang:en`); modify the script for other languages\n3. **Deduplication**: Script already filters out retweets (`-is:retweet`), only returns original tweets\n4. **Engagement Ranking**: Popularity is judged by likes, retweets, and replies combined\n5. **Timeliness**: Results are sorted by relevancy, prioritizing popular/high-engagement tweets\n\n## Error Handling\n\n### API Authentication Failure\n```json\n{\"success\": false, \"error\": \"Missing environment variables: X_API_KEY, ...\"}\n```\n**Fix**: Ensure the following environment variables are set in your shell profile (e.g., `~/.zshrc`):\n```bash\nexport X_API_KEY=\"***\"\nexport X_API_SECRET=\"***\"\nexport X_ACCESS_TOKEN=\"***\"\nexport X_ACCESS_TOKEN_SECRET=\"***\"\nexport X_BEARER_TOKEN=\"***\"\n```\nObtain credentials from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n### No Results Found\n```json\n{\"results\": {\"AI\": {\"success\": true, \"count\": 0, \"tweets\": []}}}\n```\n**Action**: Inform the user that there are no hot topics in this domain currently; suggest trying different keywords\n\n### Rate Limit Exceeded\n```json\n{\"success\": false, \"error\": \"429 Too Many Requests\"}\n```\n**Action**: Wait 15 minutes before retrying, or reduce the number of query keywords\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1783571165833\n}\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\nFetches trending topics from X (Twitter), maps user interests to search keywords, retrieves recent hot tweets, and summarizes background, key opinions, and controversies. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to answer questions about what is trending on X/Twitter within a domain or topic and to summarize public opinion around recent discussions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Search keywords are sent to X/Twitter and may expose sensitive interests. <br>\nMitigation: Use explicit, non-sensitive trend queries and avoid personal or confidential search terms. <br>\nRisk: The packaged script requires X API credentials and the security evidence says it needs a syntax fix before it runs. <br>\nMitigation: Configure credentials only through environment variables, review the script, and fix and test it before execution. <br>\nRisk: Summaries based on recent tweets can overstate public opinion or reflect incomplete, fast-changing discussions. <br>\nMitigation: Present results as X/Twitter trend signals, keep uncertainty visible, and cross-check important claims before relying on them. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/jiangsier-xyz/skills/x-hots) <br>\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Guidance] <br>\n**Output Format:** [Markdown analysis with JSON script output and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Returns up to 10 tweets per query; script requires X API credentials and sends search keywords to X/Twitter.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata; artifact frontmatter says 1.1.0) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: X (Twitter) Hot Topics Owner: jiangsier-xyz Summary: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. Tags: latest:1.5.1 Version history: v1.5.1 | 2026-07-27T12:32:02.425Z | user Add an isolated per-skill virtualenv entrypoint (scripts/x_hots): provisions .venv on first run and au","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export X_BEARER_TOKEN=\"***\""},{"language":"bash","snippet":"scripts/x_hots '<json_queries>'"},{"language":"bash","snippet":"# Tech + Economy domains\nscripts/x_hots '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\nscripts/x_hots '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)\nscripts/x_hots '[\"trending\", \"breaking\", \"viral\"]'"},{"language":"json","snippet":"{\n  \"success\": true,\n  \"timestamp\": \"2026-07-09T03:58:00Z\",\n  \"queries\": [\"AI\", \"LLM\"],\n  \"results\": {\n    \"AI\": {\n      \"success\": true,\n      \"count\": 10,\n      \"tweets\": [\n        {\n          \"id\": \"1234567890\",\n          \"text\": \"Tweet content...\",\n          \"created_at\": \"2026-07-09T03:50:00Z\",\n          \"metrics\": {\"like_count\": 100, \"retweet_count\": 50},\n          \"url\": \"https://twitter.com/twitter/status/1234567890\"\n        }\n      ]\n    }\n  }\n}"},{"language":"markdown","snippet":"## 🔥 [Domain Name] Hot Topics\n\n### Topic 1: [Topic Title]\n\n**📌 Background**\n[Brief description of the event origin, timeline, key figures/organizations]\n\n**💬 Popular Opinions**\n- Supporters: [core argument]\n- Opponents: [core argument]\n- Neutral: [objective analysis]\n\n**⚔️ Key Controversies**\n[Focal point of the debate, divergence between different stances]\n\n---\n\n### Topic 2: [Topic Title]\n..."},{"language":"bash","snippet":"scripts/x_hots '[\"trending\", \"breaking\", \"viral\", \"news\"]'"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: x-hots\nversion: 1.5.1\ndescription: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies.\n---\n\n# X (Twitter) Hot Topics Fetcher\n\nFetch real-time trending topics from X, filter by user interest domains, and analyze the background, popular opinions, and key controversies of each topic.\n\n## Prerequisites\n\n### Dependencies\n\n- **Python 3.7+**\n- **tweepy** library\n\nBoth are handled automatically: the `scripts/x_hots` entrypoint wrapper creates an isolated virtualenv at `<skill_dir>/.venv` on first run and installs `requirements.txt` (which pins `tweepy`) into it. No manual `pip install` is needed. Override the venv location with `SKILL_VENV_DIR=<path>`.\n\n### Environment Variables\n\nOnly the **Bearer Token** is required. The script uses app-only (OAuth 2.0) auth, which is sufficient for the `search_recent_tweets` endpoint and has broader search access than OAuth 1.0a user credentials — so the consumer key/secret and access token/secret are not needed.\n\n```bash\nexport X_BEARER_TOKEN=\"***\"\n```\n\nObtain this credential from the [X Developer Portal](https://developer.twitter.com/en/portal/dashboard).\n\n**Note**: The Free tier API has limitations:\n- Can only search tweets from the last 7 days\n- Rate limited to 10 requests per 15 minutes for search endpoints\n\n## When to Use\n\nWhen the user wants to know what's trending on X/Twitter, or asks about hot topics, public opinion, or viral discussions.\n\n## Workflow\n\n### Step 1: Analyze User Interest Domains\n\nExtract interest domains from the user's natural language input. Common domains include:\n\n- **International Politics**: politics, geopolitics, diplomacy, sanctions, war, NATO, UN\n- **Economy & Finance**: economy, stock market, tariff, trade, inflation, crypto, bitcoin\n- **Technology**: AI, LLM, GPT, tech, chip, semiconductor, Apple, Google, Microsoft\n- **Sports**: football, World Cup, NBA, Olympics, FIFA\n- **Entertainment**: movie, music, celebrity, Netflix, Disney\n- **Society**: climate, health, education, protest, human rights\n\n**Analysis Rules**:\n1. If the user explicitly mentions a domain (e.g., \"what's hot in tech?\"), use that domain's keywords directly\n2. If the user mentions a specific topic (e.g., \"what's happening with AI?\"), use that topic as the keyword\n3. If no specific domain can be identified, use the generic hot topics query (see \"Generic Query\" below)\n4. Select **2-3 core keywords** per domain to avoid excessive queries\n\n### Step 2: Run the Script to Fetch Hot Tweets\n\n```bash\nscripts/x_hots '<json_queries>'\n```\n\n**Parameters**:\n- `json_queries`: JSON array of search keywords\n- Each keyword returns up to 10 related hot tweets\n\n**Examples**:\n```bash\n# Tech + Economy domains\nscripts/x_hots '[\"AI\", \"LLM\", \"stock market\", \"tariff\"]'\n\n# International politics\nscripts/x_hots '[\"geopolitics\", \"diplomacy\", \"sanctions\"]'\n\n# Generic hot topics (when no domain can be identified)"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn73sdyhq2p2h53qne8t5nvacs86x2bc\",\n  \"slug\": \"x-hots\",\n  \"version\": \"1.5.1\",\n  \"publishedAt\": 1785155522425\n}"},{"path":"skill-card.md","content":"## Description:\n\nFetches trending topics from X (Twitter), derives search keywords from user interests, retrieves recent high-engagement posts by domain, and summarizes background, opinions, and controversies.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[jiangsier-xyz](https://clawhub.ai/user/jiangsier-xyz)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and analysts use this skill to inspect recent X/Twitter discussions for requested domains or topics and turn returned posts into concise summaries of background, public opinion, and controversy.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The first-run setup may install changing Python packages and can execute a downloaded pip bootstrap script.\n\nMitigation: Review the skill before installing, run it only in an unprivileged environment, and prefer a release with pinned dependencies and safer setup logic.\n\nRisk: The skill requires an X bearer token and sends search terms derived from the user's prompt to X/Twitter.\n\nMitigation: Avoid sensitive prompts or private terms, store the bearer token securely, and rotate the token if it may have been exposed.\n\nRisk: Changing SKILL_VENV_DIR to an important directory can expose users to unsafe virtualenv cleanup behavior.\n\nMitigation: Use the default per-skill virtual environment or set SKILL_VENV_DIR only to a disposable directory created for this skill.\n\n## Reference(s):\n\n- [X Developer Portal](https://developer.twitter.com/en/portal/dashboard)\n- [ClawHub skill page](https://clawhub.ai/jiangsier-xyz/skills/x-hots)\n\n## Skill Output:\n\n**Output Type(s):** [Shell commands, Text, Markdown, Guidance]\n\n**Output Format:** [JSON API results followed by Markdown analysis]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Search queries are derived from the user's requested topics; results are limited to recent English, non-retweet posts returned by the X API.]\n\n## Skill Version(s):\n\n1.5.1 (source: frontmatter and server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"requirements.txt","content":"tweepy>=4.14"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. Skill: X (Twitter) Hot Topics Owner: jiangsier-xyz Summary: Fetch trending topics from X (Twitter). Analyze user interests from natural language, retrieve top hot topics per domain, and summarize background, key opinions, and controversies. Tags: latest:1.5.1 Version history: v1.5.1 | 2026-07-27T12:32:02.425Z | user Add an isolated per-skill virtualenv entrypoint (scripts/x_hots): provisions .venv on first run and au","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1365,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:26:49.635Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T00:26:49.635Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:44:24.773Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}