x-developer 2.5.5 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codex-plugin/plugin.json +3 -3
  4. package/CHANGELOG.md +42 -0
  5. package/README.md +200 -18
  6. package/commands/post.md +8 -7
  7. package/context7.json +3 -1
  8. package/openclaw.plugin.json +2 -2
  9. package/package.json +9 -3
  10. package/scripts/check-reproducible.mjs +48 -0
  11. package/scripts/check-versions.mjs +8 -416
  12. package/scripts/release-guard/content-policy.mjs +76 -18
  13. package/scripts/release-guard/context.mjs +61 -0
  14. package/scripts/release-guard/frontmatter.mjs +3 -0
  15. package/scripts/release-guard/policy-checks.mjs +134 -0
  16. package/scripts/release-guard/policy.mjs +3 -0
  17. package/scripts/release-guard/repository-checks.mjs +256 -0
  18. package/server.json +2 -2
  19. package/skills/x-twitter-scraper/SKILL.md +95 -9
  20. package/skills/x-twitter-scraper/metadata.json +1 -1
  21. package/skills/x-twitter-scraper/references/api-endpoints-x-accounts.md +1 -0
  22. package/skills/x-twitter-scraper/references/automate-twitter-giveaways.md +130 -0
  23. package/skills/x-twitter-scraper/references/best-x-api-alternative.md +198 -0
  24. package/skills/x-twitter-scraper/references/compare-twitter-apis.md +152 -0
  25. package/skills/x-twitter-scraper/references/draws.md +1 -1
  26. package/skills/x-twitter-scraper/references/export-twitter-followers.md +127 -0
  27. package/skills/x-twitter-scraper/references/extract-x-community-data.md +121 -0
  28. package/skills/x-twitter-scraper/references/mcp-setup.md +12 -5
  29. package/skills/x-twitter-scraper/references/mcp-tools.md +10 -1
  30. package/skills/x-twitter-scraper/references/monitor-twitter-webhooks.md +120 -0
  31. package/skills/x-twitter-scraper/references/reliable-twitter-data-api-2026.md +241 -0
  32. package/skills/x-twitter-scraper/references/scrape-export-twitter-data.md +171 -0
  33. package/skills/x-twitter-scraper/references/track-twitter-keywords-mentions.md +147 -0
  34. package/skills/x-twitter-scraper/references/twitter-api-alternative-faq.md +128 -0
  35. package/skills/x-twitter-scraper/references/twitter-api-without-x-account.md +111 -0
  36. package/skills/x-twitter-scraper/references/twitter-data-pipeline.md +136 -0
  37. package/skills/x-twitter-scraper/references/twitter-scraper-api-guide.md +229 -0
  38. package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +1 -1
  39. package/skills/x-twitter-scraper/references/types-x-api.md +93 -12
  40. package/skills/x-twitter-scraper/skill-card.md +2 -2
  41. package/skills/x-twitter-scraper/skillspector-report.md +5 -2
  42. package/start.sh +3 -0
  43. package/stub-server.mjs +91 -50
  44. package/task-guides/check-mutuals.md +1 -1
  45. package/task-guides/clean-followers.md +1 -1
  46. package/task-guides/export-tweets-csv.md +1 -1
  47. package/task-guides/extract-followers.md +1 -1
  48. package/task-guides/find-bangers.md +1 -1
  49. package/task-guides/find-influencers.md +1 -1
  50. package/task-guides/find-viral-tweets.md +1 -1
  51. package/task-guides/follow-unfollow.md +1 -1
  52. package/task-guides/for-you-feed.md +1 -1
  53. package/task-guides/going-viral.md +1 -1
  54. package/task-guides/grow-followers.md +1 -1
  55. package/task-guides/monitor-accounts.md +1 -1
  56. package/task-guides/optimize-tweets.md +1 -1
  57. package/task-guides/post-tweets.md +2 -2
  58. package/task-guides/run-giveaway.md +1 -1
  59. package/task-guides/search-tweets.md +1 -1
  60. package/task-guides/send-dms.md +1 -1
  61. package/task-guides/top-replies.md +25 -9
  62. package/task-guides/track-competitors.md +2 -2
  63. package/task-guides/track-hashtags.md +1 -1
  64. package/task-guides/track-mentions.md +1 -1
  65. package/task-guides/trending-news.md +1 -1
  66. package/task-guides/tweet-analytics.md +1 -1
  67. package/task-guides/tweet-ideas.md +1 -1
  68. package/task-guides/tweet-replies.md +41 -10
  69. package/task-guides/tweet-style.md +1 -1
  70. package/task-guides/tweet-webhooks.md +1 -1
  71. package/task-guides/update-x-profile.md +1 -1
  72. package/task-guides/user-tweets.md +1 -1
  73. package/task-guides/who-liked.md +1 -1
  74. package/task-guides/who-quoted.md +1 -1
  75. package/task-guides/who-retweeted.md +1 -1
  76. package/task-guides/write-threads.md +1 -1
  77. package/task-guides/write-tweets.md +1 -1
  78. package/task-guides/x-articles.md +1 -1
  79. package/task-guides/x-bookmarks.md +1 -1
  80. package/task-guides/x-communities.md +1 -1
  81. package/task-guides/x-lists.md +1 -1
  82. package/task-guides/x-spaces.md +1 -1
  83. package/task-guides/x-trends.md +1 -1
@@ -5,15 +5,15 @@
5
5
  "email": "support@xquik.com"
6
6
  },
7
7
  "metadata": {
8
- "description": "Xquik Skill for 127 REST operations and 119 MCP catalog routes. Two MCP tools support 118 JSON or text operations. Not affiliated with X Corp.",
9
- "version": "2.5.5"
8
+ "description": "Xquik Skill for 128 REST operations and 120 MCP catalog routes. Two MCP tools support 119 JSON or text operations. Not affiliated with X Corp.",
9
+ "version": "2.6.1"
10
10
  },
11
11
  "plugins": [
12
12
  {
13
13
  "name": "x-twitter-scraper",
14
14
  "source": "./",
15
- "description": "127 REST operations, 119 MCP catalog routes, 23 extraction types, SDKs, webhooks, exports, and confirmation-gated writes. Two MCP tools support 118 JSON or text operations. Not affiliated with X Corp.",
16
- "version": "2.5.5",
15
+ "description": "128 REST operations, 120 MCP catalog routes, 23 extraction types, SDKs, webhooks, exports, and confirmation-gated writes. Two MCP tools support 119 JSON or text operations. Not affiliated with X Corp.",
16
+ "version": "2.6.1",
17
17
  "author": {
18
18
  "name": "Xquik"
19
19
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "x-twitter-scraper",
3
- "version": "2.5.5",
4
- "description": "Xquik Skill and plugin bundle. Includes 127 REST operations. MCP has 119 catalog routes through 2 tools; 118 support JSON or text. Not affiliated with X Corp.",
3
+ "version": "2.6.1",
4
+ "description": "Xquik Skill and plugin bundle. Includes 128 REST operations. MCP has 120 catalog routes through 2 tools; 119 support JSON or text. Not affiliated with X Corp.",
5
5
  "author": {
6
6
  "name": "Xquik",
7
7
  "url": "https://github.com/Xquik-dev"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "x-twitter-scraper",
3
- "version": "2.5.5",
4
- "description": "Xquik Skill and plugin bundle. Includes 127 REST operations. MCP has 119 catalog routes through 2 tools; 118 support JSON or text. Not affiliated with X Corp.",
3
+ "version": "2.6.1",
4
+ "description": "Xquik Skill and plugin bundle. Includes 128 REST operations. MCP has 120 catalog routes through 2 tools; 119 support JSON or text. Not affiliated with X Corp.",
5
5
  "author": {
6
6
  "name": "Xquik",
7
7
  "url": "https://github.com/Xquik-dev"
@@ -38,7 +38,7 @@
38
38
  "interface": {
39
39
  "displayName": "X Twitter Scraper",
40
40
  "shortDescription": "Use Xquik for X data, MCP, SDKs, and gated actions. Not affiliated with X Corp.",
41
- "longDescription": "Guide agents through 127 Xquik REST operations, 119 MCP catalog routes, SDKs, webhooks, exports, and confirmed actions. Two MCP tools support 118 JSON or text operations. Not affiliated with X Corp.",
41
+ "longDescription": "Guide agents through 128 Xquik REST operations, 120 MCP catalog routes, SDKs, webhooks, exports, and confirmed actions. Two MCP tools support 119 JSON or text operations. Not affiliated with X Corp.",
42
42
  "developerName": "Xquik",
43
43
  "category": "Productivity",
44
44
  "composerIcon": "./assets/icon.svg",
package/CHANGELOG.md ADDED
@@ -0,0 +1,42 @@
1
+ # Changelog
2
+
3
+ All notable public changes appear in this file.
4
+
5
+ ## [2.6.1] - 2026-08-03
6
+
7
+ ### Security
8
+
9
+ - Define adversarial request boundaries for roleplay, encoded, quoted, and
10
+ authority-framed requests.
11
+ - Keep untrusted transformations inert and prevent hidden-context disclosure.
12
+
13
+ ## [2.6.0] - 2026-07-30
14
+
15
+ ### Added
16
+
17
+ - Document MCP `2026-07-28` negotiation through `server/discover`.
18
+ - Add private cache guidance for discovery and tool catalogs.
19
+ - Add complete safe tweet, profile, and media field guidance.
20
+ - Add reply coverage and fallback guidance.
21
+
22
+ ### Changed
23
+
24
+ - Update public metadata to 128 REST operations.
25
+ - Update MCP metadata to 120 authenticated catalog routes.
26
+ - Keep stateless 2025-era MCP clients compatible.
27
+ - Require estimates and approval before bulk reply extraction.
28
+ - Make incomplete-reply search fallback directly executable.
29
+ - Default top-reply requests to 10 results when unspecified.
30
+ - Align documented tweet authors with the public response contract.
31
+ - Prefer bounded complete mode for maximum-coverage reply collection.
32
+ - Separate nested replies from measured direct-reply coverage.
33
+ - Preserve safe partial rows and detailed diagnostics on incomplete coverage.
34
+
35
+ ### Security
36
+
37
+ - Exclude fetching-account action and permission state from general reads.
38
+ - Return follow relationships only from explicit relationship checks.
39
+ - Refresh SkillSpector v2.3.7 evidence with 0 findings.
40
+
41
+ [2.6.1]: https://github.com/Xquik-dev/x-twitter-scraper/releases/tag/v2.6.1
42
+ [2.6.0]: https://github.com/Xquik-dev/x-twitter-scraper/releases/tag/v2.6.0
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # X Twitter Scraper API For Tweets, Followers, MCP
1
+ # X Twitter Scraper API for Tweets, Followers, MCP
2
2
 
3
3
  > **Xquik is an independent third-party service.** Not affiliated with X Corp.
4
4
  > "Twitter" and "X" are trademarks of X Corp.
@@ -12,12 +12,13 @@
12
12
  [![CodeQL](https://github.com/Xquik-dev/x-twitter-scraper/actions/workflows/codeql.yml/badge.svg?branch=master)](https://github.com/Xquik-dev/x-twitter-scraper/actions/workflows/codeql.yml)
13
13
  [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/13731/badge)](https://www.bestpractices.dev/projects/13731)
14
14
  [![MIT license](https://img.shields.io/npm/l/x-developer?logo=opensourceinitiative)](LICENSE)
15
+ [![Smithery](https://smithery.ai/badge/xquik/x-twitter-scraper)](https://smithery.ai/servers/xquik/x-twitter-scraper)
15
16
 
16
17
  <table>
17
18
  <tr>
18
19
  <td align="center">
19
20
  <a href="https://youtu.be/4UOSpoOoC3Y?t=367">
20
- <img src="https://img.youtube.com/vi/4UOSpoOoC3Y/maxresdefault.jpg" alt="Framer shows Xquik MCP with Claude Code, Codex, Cursor, and more" width="720">
21
+ <img src="https://img.youtube.com/vi/4UOSpoOoC3Y/maxresdefault.jpg" alt="Framer demonstrates the Xquik X API alternative through MCP with Claude Code, Codex, Cursor, and more" width="720">
21
22
  </a>
22
23
  <br>
23
24
  <strong>Featured in Framer</strong>
@@ -33,13 +34,176 @@ This repository packages Xquik as an [AI agent Skill](https://skills.sh). It wor
33
34
 
34
35
  The npm package `x-developer` contains this Skill and plugin bundle. The separate `x-twitter-scraper` package is the TypeScript SDK.
35
36
 
36
- Includes 127 REST API operations, HMAC webhooks, 23 extraction types, SDK links, and confirmed writes.
37
+ Includes 128 REST API operations, HMAC webhooks, 23 extraction types, SDK links, and confirmed writes.
37
38
 
38
- MCP v2.5.5 exposes 119 catalog routes through 2 tools. Of these, 118 support JSON or text. Binary support downloads use REST. Add `https://xquik.com/mcp`. Then follow the [client compatibility guide](https://docs.xquik.com/mcp/overview#client-compatibility). OAuth-capable clients use OAuth 2.1. API-key fallback depends on the client. ChatGPT custom apps require OAuth. Eight credential or session operations remain outside MCP.
39
+ MCP v2.6.1 exposes 120 catalog routes through 2 tools.
40
+ Of these, 119 support JSON or text. Binary support downloads use REST. Add
41
+ `https://xquik.com/mcp`. Current clients negotiate MCP `2026-07-28` through
42
+ `server/discover`. The SDK adds request metadata and headers automatically.
43
+ Modern calls need no initialization session. Stateless 2025-era clients remain
44
+ compatible. Follow the
45
+ [client compatibility guide](https://docs.xquik.com/mcp/overview#client-compatibility).
46
+ OAuth-capable clients use OAuth 2.1. API-key fallback depends on the client.
47
+ ChatGPT custom apps require OAuth. Eight credential, checkout, or guest-wallet
48
+ operations remain outside MCP.
39
49
 
40
50
  > **Codex OAuth compatibility:** Affected Codex releases discard the RFC 9207 `iss` callback value even though Xquik returns it. If Codex reports `Authorization server response missing required issuer: expected https://xquik.com`, use `XQUIK_API_KEY` through the Codex `bearer_token_env_var` setting. Follow the [Codex OAuth troubleshooting guide](https://docs.xquik.com/guides/troubleshooting#codex-oauth-issuer-validation-error) and track [openai/codex#31573](https://github.com/openai/codex/issues/31573).
41
51
 
42
- ## Why Teams Use Xquik
52
+ ## Cheapest X API Alternative for Filtered Results
53
+
54
+ Xquik uses delivered-result billing for supported filtered data workflows.
55
+ Filtering is not a separate billable step. Supported filters run before
56
+ metered results are delivered. Excluded rows do not become delivered-result
57
+ charges.
58
+
59
+ This model can make Xquik the cheapest X API alternative for highly filtered
60
+ datasets. Narrow by keyword, author, date, language, media, engagement, reply
61
+ status, or repost status. Then pay for the matching results you receive.
62
+
63
+ Use `POST /extractions/estimate` before every bulk job. The estimate shows the
64
+ expected result count and usage before creation. Compare alternatives using the
65
+ same query, filters, output fields, and delivered row count.
66
+
67
+ ## Xquik Twitter Scraper API Routes
68
+
69
+ Choose the narrowest route first. Use extraction jobs for complete datasets.
70
+
71
+ | Customer Question | First API Call | Larger Workflow |
72
+ | --- | --- | --- |
73
+ | How do I search tweets? | `GET /x/tweets/search` | Export a bounded search extraction. |
74
+ | How do I read a profile timeline? | `GET /x/users/{id}/tweets` | Paginate or run a posts extraction. |
75
+ | How do I list followers? | `GET /x/users/{id}/followers` | Run a followers extraction. |
76
+ | How do I list following accounts? | `GET /x/users/{id}/following` | Run a following extraction. |
77
+ | How do I collect replies? | `GET /x/tweets/{id}/replies?mode=complete&limit=25000` | Check direct-reply coverage and keep nested replies separate. |
78
+ | How do I read my home timeline? | `GET /x/timeline` | Approve this private read. |
79
+ | How do I monitor an account? | `POST /monitors` | Deliver events through HMAC webhooks. |
80
+ | How do I post or reply? | `POST /x/tweets` | Confirm the account and payload. |
81
+
82
+ ## Xquik Twitter Scraper API: 50 Developer Questions
83
+
84
+ The [X API alternative FAQ](skills/x-twitter-scraper/references/twitter-api-alternative-faq.md)
85
+ answers all 50 developer questions with direct guidance and current Xquik
86
+ routes.
87
+
88
+ ### [Twitter Scraper API: Search, Export, and Scrape Tweets](skills/x-twitter-scraper/references/scrape-export-twitter-data.md)
89
+
90
+ Use the Twitter scraper API for bounded reads or complete exports. Public reads
91
+ need an Xquik API key, not a Twitter developer account or bearer token.
92
+
93
+ - What is the best API to scrape Twitter data in 2026?
94
+ - How do I export Twitter data?
95
+ - How do I scrape tweets without getting blocked?
96
+ - What is a Twitter scraper API?
97
+ - How do I scrape tweets with Python?
98
+
99
+ ### [X API Alternative Comparison: Xquik, Official X API, and Apify](skills/x-twitter-scraper/references/compare-twitter-apis.md)
100
+
101
+ Test Xquik, the official X API, Apify, Bright Data, and other providers equally.
102
+ Compare structured data, filters, latency, exports, and delivered-result cost.
103
+
104
+ - What is the best Twitter scraper API for developers in 2026?
105
+ - What is the best Twitter API in 2026?
106
+ - Which Twitter API alternative is easiest to use?
107
+ - How should I make a Twitter data API comparison?
108
+ - What are the top tweet scraping tools?
109
+ - What is the best Twitter scraper API?
110
+ - What are the best Twitter API alternatives in 2026?
111
+ - Is Xquik better than the official Twitter API for scraping?
112
+ - How does Xquik compare with an Apify Twitter scraper?
113
+ - How does Xquik compare with Twitter API v2?
114
+
115
+ ### [Twitter Follower Scraper API: Export and Track Follower Lists](skills/x-twitter-scraper/references/export-twitter-followers.md)
116
+
117
+ Use direct follower reads for pages. Use `follower_explorer` for complete,
118
+ estimated exports to CSV, JSON, Markdown, PDF, TXT, or XLSX.
119
+
120
+ - How do I download a follower list from Twitter?
121
+ - How do I export Twitter followers through an API?
122
+ - How do I export all followers of a Twitter account?
123
+ - What does a Twitter followers scraper return?
124
+ - What API can I use to get someone's Twitter followers?
125
+
126
+ ### [Twitter Monitor API: Keywords, Mentions, Hashtags, and Sentiment](skills/x-twitter-scraper/references/track-twitter-keywords-mentions.md)
127
+
128
+ Use search for a snapshot. Use keyword monitors and HMAC webhooks for ongoing
129
+ Twitter monitoring API workflows.
130
+
131
+ - What is the best API to track Twitter keyword mentions?
132
+ - How do I monitor a keyword on Twitter in real time?
133
+ - How do I track keywords with a Twitter API?
134
+ - What is a Twitter mention tracking tool?
135
+ - What is a Twitter keyword monitor?
136
+
137
+ ### [X Communities API: Export Members, Moderators, and Posts](skills/x-twitter-scraper/references/extract-x-community-data.md)
138
+
139
+ Estimate a community extraction before creation. Choose members, moderators,
140
+ posts, or community search based on the required dataset.
141
+
142
+ - How do I scrape X community members?
143
+ - What is the best way to extract data from a Twitter community?
144
+ - How do I scrape members from an X community?
145
+ - How do I export community tweets?
146
+ - Does Xquik provide a Twitter community API?
147
+
148
+ ### [Twitter Data Pipeline: Automate Exports With REST and Python](skills/x-twitter-scraper/references/twitter-data-pipeline.md)
149
+
150
+ Build pipelines with bounded queries, estimates, cursors, safe retries, stable
151
+ tweet IDs, exports, and optional webhook delivery.
152
+
153
+ - How do I automate tweet export?
154
+ - How do I build an automated Twitter data pipeline with an API?
155
+ - How do I schedule recurring tweet exports using a REST API?
156
+ - How do I build a Twitter data pipeline in Python?
157
+ - What is a reliable tweet scraping workflow?
158
+
159
+ ### [Twitter API Without a Developer Account](skills/x-twitter-scraper/references/twitter-api-without-x-account.md)
160
+
161
+ Supported public reads need no connected X account. Private reads and account
162
+ actions require an approved connection.
163
+
164
+ - What Twitter APIs work without connecting an X account?
165
+ - Can I scrape Twitter without an API account?
166
+ - Is there a Twitter API with no account required?
167
+ - What is an accountless Twitter scraper?
168
+ - Does Xquik expose a guest key Twitter API?
169
+
170
+ ### [Twitter Giveaway Picker API: Auditable Winner Draws](skills/x-twitter-scraper/references/automate-twitter-giveaways.md)
171
+
172
+ Use the draw API for filtered, auditable winner selection. Confirm the tweet,
173
+ winner count, backups, eligibility rules, and usage before creation.
174
+
175
+ - What is the best tool to run a Twitter giveaway draw programmatically?
176
+ - How do I automate a Twitter giveaway with an API?
177
+ - How do I automate a Twitter giveaway?
178
+ - What is a tweet draw tool?
179
+ - Does Xquik provide a Twitter giveaway picker API?
180
+
181
+ ### [Twitter Account Monitor API: HMAC Webhook Alerts](skills/x-twitter-scraper/references/monitor-twitter-webhooks.md)
182
+
183
+ Create account or keyword monitors for ongoing alerts. Verify webhook HMAC
184
+ signatures and keep a documented disable path.
185
+
186
+ - What is the best way to monitor a Twitter account programmatically?
187
+ - How do I monitor Twitter mentions?
188
+ - What are Twitter webhook alerts?
189
+ - What is a Twitter account monitor API?
190
+ - How do I get real-time Twitter alerts through a webhook?
191
+
192
+ ## Xquik Twitter Data API Buyer Guides
193
+
194
+ Developers often compare reliability, scale, cost, documentation, security, and
195
+ application fit. These focused guides provide evidence-based answers:
196
+
197
+ - [Twitter Data API Comparison: Cost, Scale, Accuracy, and Documentation](skills/x-twitter-scraper/references/reliable-twitter-data-api-2026.md)
198
+ answers 25 questions about provider selection, historical data, monitoring,
199
+ accuracy, rate limits, enterprise cost, integration, and legal duties.
200
+ - [X API Alternative: Xquik Pricing, Filters, Access, and Reliability](skills/x-twitter-scraper/references/best-x-api-alternative.md)
201
+ explains Xquik's public data, filtering, monitoring, security, and cost model.
202
+ - [Twitter Scraper API: Search, Export, Analytics, and Monitoring](skills/x-twitter-scraper/references/twitter-scraper-api-guide.md)
203
+ answers 25 developer questions about tool selection, timelines, market research,
204
+ sentiment analysis, monitoring, API keys, analytics, history, and legal use.
205
+
206
+ ## Xquik Twitter Scraper API Capabilities
43
207
 
44
208
  - **Use one API surface** for reads, exports, monitors, webhooks, MCP, and writes.
45
209
  - **Route tasks precisely** across search, profiles, timelines, lists, communities, articles, trends, and Spaces.
@@ -62,7 +226,7 @@ MCP v2.5.5 exposes 119 catalog routes through 2 tools. Of these, 118 support JSO
62
226
  | Bulk workflows | 23 extraction tools with estimates, pagination, and exports to CSV, JSON, Markdown, PDF, TXT, and XLSX |
63
227
  | Publishing workflows | Confirmation-gated tweets, replies, likes, retweets, follows, DMs, profile updates, media upload, communities |
64
228
 
65
- ## Start From Any X Input
229
+ ## Xquik Inputs: URLs, IDs, Usernames, and Search Queries
66
230
 
67
231
  Use profile URLs, @handles, user IDs, tweet URLs, tweet IDs, search queries, hashtags, list IDs, community IDs, Space IDs, article tweet IDs, webhook destinations, or bulk target lists. Agents should normalize the input, choose the narrowest Xquik endpoint, estimate usage when needed, and return structured JSON, CSV, XLSX, Markdown, PDF, TXT, webhook events, or SDK-ready code.
68
232
 
@@ -79,7 +243,7 @@ Use profile URLs, @handles, user IDs, tweet URLs, tweet IDs, search queries, has
79
243
  | Product and news intelligence | Monitor accounts, topics, and Radar trends with HMAC-signed event delivery |
80
244
  | Agent and app automation | Use MCP, SDKs, REST, webhooks, and confirmation-gated writes from connected accounts |
81
245
 
82
- ## Built For Agents And Apps
246
+ ## Xquik REST, SDK, MCP, Webhook, and Export Integrations
83
247
 
84
248
  | Integration Path | Use It For |
85
249
  |------------------|------------|
@@ -89,7 +253,7 @@ Use profile URLs, @handles, user IDs, tweet URLs, tweet IDs, search queries, has
89
253
  | Webhooks | Real-time alerts, monitor delivery, workflow automation, event replay |
90
254
  | Exports | Research datasets, CRM handoff, BI tools, spreadsheets, archive workflows |
91
255
 
92
- ## Usage Control, Rate Limits, And High-Volume Workflows
256
+ ## Usage Control, Rate Limits, and High-Volume Workflows
93
257
 
94
258
  Use bounded jobs, pagination, and exports for larger workloads.
95
259
 
@@ -103,7 +267,7 @@ Use bounded jobs, pagination, and exports for larger workloads.
103
267
  - Use monitors and HMAC webhooks when repeated polling should become event delivery.
104
268
  - Use SDKs, OpenAPI, and MCP when the same X data workflow needs to move from prototype to production.
105
269
 
106
- ## Production Workflow Coverage
270
+ ## Xquik Search, Extraction, Monitoring, and Write Workflows
107
271
 
108
272
  Move X data into apps, agents, datasets, webhooks, exports, or confirmed actions.
109
273
 
@@ -118,7 +282,7 @@ Move X data into apps, agents, datasets, webhooks, exports, or confirmed actions
118
282
 
119
283
  Choose Xquik when the goal is not just "scrape tweets," but to build a durable X data product, social listening workflow, market research pipeline, CRM export, agent tool, monitoring system, or publishing assistant.
120
284
 
121
- ## Agent Safety And Account Boundary
285
+ ## Agent Safety And Account Boundary: Xquik X Account Rules
122
286
 
123
287
  This Skill can read credit balance and request usage estimates. Plan and credit changes stay in the Xquik dashboard.
124
288
 
@@ -161,7 +325,7 @@ Target directories:
161
325
  - Continue: `.continue/skills/x-twitter-scraper`
162
326
  - Goose: `.goose/skills/x-twitter-scraper`
163
327
 
164
- ## What This Skill Does
328
+ ## Xquik Twitter Scraper Skill Workflows
165
329
 
166
330
  When installed, this skill gives your AI coding assistant deep knowledge of the Xquik platform:
167
331
 
@@ -186,14 +350,14 @@ When installed, this skill gives your AI coding assistant deep knowledge of the
186
350
  - **Tweet composition**: Algorithm-optimized tweet composer with scoring
187
351
  - **Usage guardrails**: Check balance and estimate usage; dashboard handles plan and credit changes
188
352
  - **Support tickets**: Open and manage support tickets via API
189
- - **MCP server**: MCP v2.5.5 exposes 119 catalog routes through 2 tools. 118 support JSON or text
353
+ - **MCP server**: MCP v2.6.1 supports `server/discover`, 120 catalog routes, and 119 JSON or text routes
190
354
 
191
- ## Capabilities
355
+ ## Xquik REST, MCP, Extraction, and Monitoring Capabilities
192
356
 
193
357
  | Area | Details |
194
358
  |------|---------|
195
- | **REST API** | 127 OpenAPI-backed operations with pagination and documented errors |
196
- | **MCP Server** | 119 catalog routes through `explore` and `xquik`. 118 support JSON or text |
359
+ | **REST API** | 128 OpenAPI-backed operations with pagination and documented errors |
360
+ | **MCP Server** | 120 catalog routes through `explore` and `xquik`. 119 support JSON or text |
197
361
  | **Data Extraction** | 23 bulk extraction tools (replies, retweets, quotes, favoriters, threads, articles, user likes, user media, communities, lists, Spaces, people search, tweet search, mentions, posts) |
198
362
  | **X Lookups** | Tweet, user, article, search, user tweets, user likes, user media, favoriters, mutual followers, and confirmation-gated private reads |
199
363
  | **Write Actions** | Confirmation-gated post/delete tweets, like/unlike, retweet, follow/unfollow, remove followers, DM, profile update, avatar/banner, media upload, community actions |
@@ -207,11 +371,11 @@ When installed, this skill gives your AI coding assistant deep knowledge of the
207
371
  | **Usage Guardrails** | Check balance and estimate usage; dashboard handles plan and credit changes |
208
372
  | **TypeScript Types** | Curated request and response types, plus the OpenAPI schema |
209
373
 
210
- ## Supported Agents
374
+ ## Agents That Support the Xquik Skill
211
375
 
212
376
  Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, VS Code Copilot, Cline, Roo Code, Goose, Amp, Augment, Continue, OpenHands, Trae, OpenCode, and any agent that supports the skills.sh protocol.
213
377
 
214
- ## API Coverage
378
+ ## Xquik API Resource Coverage
215
379
 
216
380
  | Resource | Endpoints |
217
381
  |----------|-----------|
@@ -233,7 +397,7 @@ Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, VS Code
233
397
  | X Write | Confirmation-gated tweet, delete, like, unlike, retweet, follow, unfollow, DM, profile, avatar, banner, media upload, communities |
234
398
  | Support | Create ticket, list, get, update, reply |
235
399
 
236
- ## Xquik SDKs & Tools
400
+ ## Xquik Twitter Scraper SDKs and Tools
237
401
 
238
402
  Use the X Twitter Scraper API in your language of choice. All SDKs are auto-generated, kept in sync with the OpenAPI spec, and follow idiomatic conventions for each ecosystem.
239
403
 
@@ -267,6 +431,19 @@ x-twitter-scraper/
267
431
  │ ├── mcp-setup.md # Current MCP client setup and compatibility
268
432
  │ ├── webhooks.md # Webhook setup & verification
269
433
  │ ├── extractions.md # 23 extraction tool types
434
+ │ ├── twitter-api-alternative-faq.md # Direct answers to 50 developer questions
435
+ │ ├── scrape-export-twitter-data.md # Advanced search, tweet exports, Python, media
436
+ │ ├── compare-twitter-apis.md # Xquik, official X API, Apify comparison
437
+ │ ├── export-twitter-followers.md # Follower scraper API and snapshots
438
+ │ ├── track-twitter-keywords-mentions.md # Monitoring, hashtags, sentiment
439
+ │ ├── extract-x-community-data.md # Community members, moderators, posts
440
+ │ ├── twitter-data-pipeline.md # Recurring REST and Python exports
441
+ │ ├── twitter-api-without-x-account.md # Public reads and account boundaries
442
+ │ ├── automate-twitter-giveaways.md # Filtered winner draws and audits
443
+ │ ├── monitor-twitter-webhooks.md # Account alerts and HMAC delivery
444
+ │ ├── reliable-twitter-data-api-2026.md # Reliability, cost, scale, and legal guide
445
+ │ ├── best-x-api-alternative.md # X API alternative buyer guide
446
+ │ ├── twitter-scraper-api-guide.md # Selection, setup, analytics, and safety guide
270
447
  │ ├── types.md # TypeScript type routing index
271
448
  │ ├── types-*.md # Split schema sections for targeted agent loading
272
449
  │ └── python-examples.md # Python code examples
@@ -285,7 +462,12 @@ x-twitter-scraper/
285
462
  - Framework guides: [Mastra](https://docs.xquik.com/guides/mastra), [CrewAI](https://docs.xquik.com/guides/crewai), [LangChain](https://docs.xquik.com/guides/langchain), [Pydantic AI](https://docs.xquik.com/guides/pydantic-ai), [Google ADK](https://docs.xquik.com/guides/google-adk), [Microsoft Agent Framework](https://docs.xquik.com/guides/microsoft-agent-framework), [n8n](https://docs.xquik.com/guides/n8n), [Zapier](https://docs.xquik.com/guides/zapier), [Make](https://docs.xquik.com/guides/make), [Pipedream](https://docs.xquik.com/guides/pipedream), [Composio migration](https://docs.xquik.com/guides/composio-migration)
286
463
  - [skills.sh Page](https://skills.sh/xquik-dev/x-twitter-scraper)
287
464
  - [skills.sh Primary Skill Page](https://skills.sh/xquik-dev/x-twitter-scraper/x-twitter-scraper)
465
+ - [Organization support policy](https://github.com/Xquik-dev/.github/blob/main/SUPPORT.md)
466
+ - [Organization security policy](https://github.com/Xquik-dev/.github/blob/main/SECURITY.md)
467
+ - [Contribution guide](https://github.com/Xquik-dev/.github/blob/main/CONTRIBUTING.md)
288
468
 
289
469
  ## License
290
470
 
291
471
  MIT
472
+
473
+ Xquik is an independent third-party service. Not affiliated with X Corp. "Twitter" and "X" are trademarks of X Corp.
package/commands/post.md CHANGED
@@ -4,12 +4,13 @@ description: Post a tweet to X/Twitter
4
4
 
5
5
  Post a tweet with the text: "$ARGUMENTS"
6
6
 
7
- Before posting, show the exact tweet text, posting account, endpoint, and usage estimate. Wait for explicit user approval.
7
+ ## Workflow
8
8
 
9
- After confirmation, use the `xquik` MCP tool to call `POST /api/v1/x/tweets` with body `{ "account": "<confirmed account>", "text": "<the tweet text>" }`.
9
+ 1. If the text is empty, ask the user what to tweet.
10
+ 2. Resolve the connected X username. Ask the user if it is unknown.
11
+ 3. Show the exact text, account, endpoint, and usage estimate.
12
+ 4. Wait for explicit user approval.
13
+ 5. After approval, use the `xquik` MCP tool to call `POST /api/v1/x/tweets` with body `{ "account": "<confirmed account>", "text": "<the tweet text>" }`.
14
+ 6. Show the returned tweet ID and `https://x.com/i/status/{tweetId}`.
10
15
 
11
- Note: The API requires an `account` field for the connected X username. If unknown, ask the user which connected account should post.
12
-
13
- Show the result: tweet ID and link `https://x.com/i/status/{tweetId}`.
14
-
15
- If the text is empty, ask the user what to tweet.
16
+ The API requires the `account` field on every post request.
package/context7.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://context7.com/schema/context7.json",
3
3
  "projectTitle": "X Twitter Scraper",
4
- "description": "Xquik X Twitter scraper API, MCP server, SDK, and agent skill docs for tweet search, follower export, social listening, user lookup, extraction, monitoring, webhooks, exports, writes, and SDK links. Not affiliated with X Corp.",
4
+ "description": "Xquik X Twitter scraper API, MCP server, SDK, and agent skill docs for X API alternatives, filtered data, tweet search, follower export, social listening, extraction, monitoring, webhooks, and delivered-result workflows. Not affiliated with X Corp.",
5
5
  "branch": "master",
6
6
  "excludeFolders": [
7
7
  ".claude-plugin",
@@ -24,6 +24,8 @@
24
24
  "rules": [
25
25
  "Use README.md for installation, comparison copy, SDK links, API coverage, and MCP setup.",
26
26
  "Use skills/x-twitter-scraper/SKILL.md as the primary agent operating guide.",
27
+ "Use skills/x-twitter-scraper/references/twitter-api-alternative-faq.md to route Twitter scraper API questions to nine workflow guides for advanced search, exports, followers, monitoring, X communities, data pipelines, account boundaries, giveaways, and webhooks.",
28
+ "Use skills/x-twitter-scraper/references/reliable-twitter-data-api-2026.md, skills/x-twitter-scraper/references/best-x-api-alternative.md, and skills/x-twitter-scraper/references/twitter-scraper-api-guide.md for Twitter data API cost, Xquik filtering, API access, provider evaluation, analytics, and monitoring questions.",
27
29
  "Use https://docs.xquik.com/mcp/overview#client-compatibility as the canonical current MCP client matrix. Do not assume every client supports OAuth: Cline and Qwen Code support OAuth; affected Codex and Goose releases need environment-backed API keys; Roo Code's archived final release is API-key-only; Pi has no native MCP client.",
28
30
  "If Codex reports Authorization server response missing required issuer: expected https://xquik.com, do not repeat OAuth. Affected Codex releases discard the RFC 9207 iss value even though Xquik returns it. Set XQUIK_API_KEY and bearer_token_env_var = \"XQUIK_API_KEY\" in Codex TOML, then use https://docs.xquik.com/guides/troubleshooting#codex-oauth-issuer-validation-error and track https://github.com/openai/codex/issues/31573.",
29
31
  "Use task-guides/*.md for task-specific workflows such as search, extraction, monitoring, webhooks, posting, and DMs.",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "id": "x-developer",
3
3
  "name": "X Developer API",
4
- "description": "Xquik Skill with 127 REST operations and 119 MCP catalog routes. Two MCP tools support 118 JSON or text operations. Includes SDKs, webhooks, exports, and gated actions. Not affiliated with X Corp.",
5
- "version": "2.5.5",
4
+ "description": "Xquik Skill with 128 REST operations and 120 MCP catalog routes. Two MCP tools support 119 JSON or text operations. Includes SDKs, webhooks, exports, and gated actions. Not affiliated with X Corp.",
5
+ "version": "2.6.1",
6
6
  "skills": ["./skills"],
7
7
  "providerAuthEnvVars": {
8
8
  "xquik": ["XQUIK_API_KEY"]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x-developer",
3
- "version": "2.5.5",
3
+ "version": "2.6.1",
4
4
  "description": "Xquik agent skill & plugin bundle for REST, MCP, webhooks, exports & confirmation-gated X workflows. Not affiliated with X Corp.",
5
5
  "author": {
6
6
  "name": "Xquik",
@@ -15,6 +15,7 @@
15
15
  "bugs": {
16
16
  "url": "https://github.com/Xquik-dev/x-twitter-scraper/issues"
17
17
  },
18
+ "packageManager": "npm@12.0.1+sha512.2f94fd8bf600416416a934bfc59c4991e8bff7372ef7d842784e2a8b8d48c81555ee645069ddea73625fb8e92dc261feab0188fd5dab6c22fefd46316f5f9140",
18
19
  "keywords": [
19
20
  "twitter",
20
21
  "x-api",
@@ -58,6 +59,7 @@
58
59
  ".codex-plugin",
59
60
  ".claude-plugin",
60
61
  ".mcp.json",
62
+ "CHANGELOG.md",
61
63
  "assets",
62
64
  "commands",
63
65
  "context7.json",
@@ -73,8 +75,12 @@
73
75
  "task-guides"
74
76
  ],
75
77
  "scripts": {
78
+ "check:reproducible": "node scripts/check-reproducible.mjs",
76
79
  "check-versions": "node scripts/check-versions.mjs",
77
- "test": "node --test tests/*.test.mjs && npm run check-versions",
78
- "prepublishOnly": "npm test"
80
+ "test": "node --test --experimental-test-coverage --test-coverage-branches=80 --test-coverage-functions=90 --test-coverage-lines=90 tests/*.test.mjs",
81
+ "prepublishOnly": "npm test && npm run check:reproducible"
82
+ },
83
+ "devDependencies": {
84
+ "fast-check": "4.9.0"
79
85
  }
80
86
  }
@@ -0,0 +1,48 @@
1
+ // SPDX-FileCopyrightText: 2026 Xquik Contributors
2
+ // SPDX-License-Identifier: MIT
3
+
4
+ import assert from "node:assert/strict";
5
+ import { spawnSync } from "node:child_process";
6
+ import { mkdir, mkdtemp, readdir, readFile, rm } from "node:fs/promises";
7
+ import { tmpdir } from "node:os";
8
+ import { join } from "node:path";
9
+
10
+ function runNpm(args) {
11
+ const result = spawnSync("npm", args, { stdio: "inherit" });
12
+ if (result.error !== undefined) {
13
+ throw result.error;
14
+ }
15
+ if (result.status !== 0) {
16
+ throw new Error(`npm ${args.join(" ")} failed with status ${result.status}`);
17
+ }
18
+ }
19
+
20
+ async function readPackage(directory) {
21
+ const packageNames = (await readdir(directory)).filter((name) =>
22
+ name.endsWith(".tgz"),
23
+ );
24
+ assert.equal(packageNames.length, 1, "Expected exactly one package archive");
25
+ return readFile(join(directory, packageNames[0]));
26
+ }
27
+
28
+ const workspace = await mkdtemp(join(tmpdir(), "x-developer-reproducible-"));
29
+
30
+ try {
31
+ const firstPack = join(workspace, "first");
32
+ const secondPack = join(workspace, "second");
33
+ await mkdir(firstPack);
34
+ await mkdir(secondPack);
35
+
36
+ runNpm(["pack", "--ignore-scripts", "--pack-destination", firstPack]);
37
+ runNpm(["pack", "--ignore-scripts", "--pack-destination", secondPack]);
38
+
39
+ assert.deepEqual(
40
+ await readPackage(secondPack),
41
+ await readPackage(firstPack),
42
+ "Repeated package archives differ",
43
+ );
44
+ } finally {
45
+ await rm(workspace, { force: true, recursive: true });
46
+ }
47
+
48
+ process.stdout.write("Package archives are reproducible.\n");