x-tweet-by-url
Scrapes tweets from any X (Twitter) URL — search results, user profile, single tweet detail, or list timeline — and returns normalized per-tweet data with…
Skill by browser-act
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/browser-act-x-tweet-by-url
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/x-tweet-by-url
What's inside
- Skill name
x-tweet-by-url- Description
- Scrapes tweets from any X (Twitter) URL — search results, user profile, single tweet detail, or list timeline — and returns normalized per-tweet data with text, author, engagement counts, media, hashtags, mentions, and cursor for pagination. Use when user mentions X URL scraper, Twitter URL scraper, scrape from URL, given an X link, given a Twitter link, accept mixed X URLs, accept mixed Twitter URLs, search URL, profile URL, list URL, status URL, tweet detail URL, scrape startUrls Twitter, X startUrls, mixed batch of Twitter links, paste links and scrape, mass URL extraction X, mass URL extraction Twitter, scrape from a list of links, x.com URLs, twitter.com URLs, classify Twitter URLs, auto-detect Twitter URL type, scrape lists on X, scrape Twitter lists, list timeline scraper, list tweet scraper, scrape conversation by URL. Also applies to processing seed URL files, dispatching mixed X URLs through a single workflow, list-based KOL monitoring, batch-collecting tweets from a curated list of profiles, lists, and individual posts.
- License
- MIT
- Instructions
- 176 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- description: longer than 1024 characters
Files (3)
- SKILL.md
- classify-url.py · scripts/
- parse-tweets.py · scripts/
SKILL.md (first lines)
# X — Tweets by URL
> Any X URL (search, profile, single tweet, list) → normalized list of tweets matching that URL's timeline.
## Language
All process output to user (progress updates, process notifications) follows the user's language.
## Objective
Accept any X URL as input, automatically detect which timeline endpoint it triggers, navigate to it, and return structured per-tweet data with pagination cursors. This unifies search, profile, single-tweet conversation, and list extraction under one entry point.
## Prerequisites
- Active X session in the browser (left sidebar shows logged-in avatar / @handle).
- Network capture is enabled in the browser-act session.
## Pre-execution Checks
### 1. Tool Readiness
If browser-act has been confirmed available in the current session → skip this step.
Invoke `browser-act` via Skill tool to load usage. If installation or configuration issues arise, follow its guidance to resolve then retry.
### 2. Login Verification
If login status for X has been confirmed in the current session → skip this step.
Otherwise: open `https://x.com` and observe the left sidebar:
- User avatar or @handle visible → logged in, continue
- "Sign in" / "Log in" prompt visible → not logged in, inform the user and assist the login flow
User refuses or cannot log in → terminate execution.
## Capability Components
> This Skill's operational boundary = what the user can manually do in their browser. It only reads tweet data already shown to the user, never bypassing authentication. The browser's own JS signs the GraphQL request; the Skill triggers it via URL navigation and reads the response from network traffic. Python scripts under `scripts/` only classify URLs and parse responses — they do not call X directly. Run them through the bash tool.
### Network Capture: tweets via input URL
Step 1 — classify the URL to determine which GraphQL endpoint will be triggered and which `--source` to pass to the parser:
`META=$(python scripts/classify-url.py '{url}')`
`classify-url.py` outputs a JSON object with fields:
- `normalized_url`: the URL with `twitter.com` rewritten to `x.com`.
- `kind`: one of `search`, `user_tweets`, `user_replies`, `user_media`, `tweet_detail`, `list`, `unknown`.
- `endpoint`: the GraphQL endpoint name to filter by (`SearchTimeline` / `UserTweets` / `UserTweetsAndReplies` / `UserMedia` / `TweetDetail` / `ListLatestTweetsTimeline`).
- `extract_source`: the `--source` value to pass to `parse-tweets.py` (`search` / `user_tweets` / `user_replies` / `user_media` / `tweet_detail` / `list`).
- `params`: detected path parameters (`handle`, `tweet_id`, `list_id`) when applicable.
If `kind == "unknown"`, report to the user that the URL is not a supported X timeline type and stop.
Step 2 — navigate and capture the first page:
1. `network requests --clear`
2. `navigate "$(echo "$META" | python -c "import sys,json;print(json.load(sys.stdin)['normalized_url'])")"`
3. `wait stable --timeout 25000` (timeout is normal on X; proceed)
4. Let `EP` = `endpoint` from `$META`. `network requests --type xhr,fetch --filter "$EP"` → take the latest entry's `request_id`.
5. `network request <request_id>` → save to `tmp/x-url-page-1.txt`.
6. Let `SRC` = `extract_source` from `$META`. `python scripts/parse-tweets.py --json-file tmp/x-url-page-1.txt --source "$SRC"`.
Endpoint characteristic: URL contains `/i/api/graphql/<hash>/<endpoint-name>`. The query hash rotates; always filter by name.
Step 3 — paginate via scroll (skip when `kind == "tweet_detail"` and only the focal tweet is required; keep paginating when collecting the full reply thread):
1. `network requests --clear`
2. `scroll down --amount 5000`
3. `wait stable --timeout 10000`
4. `network requests --type xhr,fetch --filter "$EP"` → newest entry's `request_id`
5. `network request <request_id>` → save to `tmp/x-url-page-N.txt`
6. `python scripts/parse-tweets.py --json-file tmp/x-url-page-N.txt --source "$SRC"`
Repeat Step 3 until any termination condition is met:
- Accumulated unique tweet count reaches the user's target.
- `count == 0` on the current page.
- `cursor_bottom` is unchanged across two consecutive pages.
Error handling: if no matching request appears after a scroll, wait 3 s and retry once. If `kind == "search"` and the page shows a captcha challenge (detect via `state` showing an "Authorize access to your account" or "Help us keep X safe" panel), pause and ask the user. If `kind == "list"` and the response's `data.list.tweets_timeline.timeline.instructions` is empty, the list is empty or access-restricted to the owner — terminate and report.
Output example:
```json
{
"tweets": [
{
"type": "tweet",
"id": "2068333045510291908",
"url": "https://x.com/NASA/status/2068333045510291908",
"twitter_url": "https://twitter.com/NASA/status/2068333045510291908",
"text": "The official FIFA World Cup ball went to space! ...",
"created_at": "Thu Jun 20 18:30:11 +0000 2026",
"lang": "en",
"source": "Twitter Web App",
"retweet_count": 4586,
"reply_count": 1812,
"like_count": 24499,
"quote_count": 240,
"bookmark_count": 1730,
"view_count": 2098235,
"is_reply": false,
"is_retweet": false,
"is_quote": false,
"quote_id": null,
"quote_url": null,
"in_reply_to_id": null,
"in_reply_to_user": null,
"in_reply_to_user_id": null,
"conversation_id": "2068333045510291908",
"hashtags": ["FIFAWorldCup"],
"mentions": [],
"urls": [],
"media": [
{"type": "photo", "url": "https://pbs.twimg.com/media/abcd.jpg", "expanded_url": "https://x.com/NASA/status/2068333045510291908/photo/1", "alt_text": null}
],
"card": null,
"place": null,
"author": {
"id": "11348282",From browser-act/skills, MIT.
More from browser-act/skills
- 0.750score
browser-act-skill-forge
BrowserAct
Forges reusable Skill packages (SKILL.md + scripts) from website exploration via browser-act — no re-exploration later.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
taobao-product-detail
browser-act
Fetch full product detail from a Taobao or Tmall product page by itemId, returning title, price, shop info, images, SKU variants, and product attributes.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
facebook-groups-scrape-posts
browser-act
Scrapes posts from a Facebook group given a group URL, sort order, and desired count — returns structured post metadata including post_id, permalink, author…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
taobao-keyword-search
browser-act
Search Taobao and Tmall product listings by keyword, returning paginated product cards with title, price, shop, image, sales, and tags.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
ecommerce-seller-info
browser-act
Extract seller or merchant profile data from marketplace platform seller pages.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
ebay-item-detail
browser-act
Extracts full item detail from any open eBay item URL, returning JSON with url, itemNumber, title, subTitle, categories, price, priceWithCurrency, currency…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
etsy-keyword-search
browser-act
Etsy keyword search scraper: given a search keyword and optional page number, returns paginated product listings with listingId, shopId, title, url, image…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
facebook-page-profile-posts
browser-act
Scrapes posts from any public Facebook Page or personal Profile timeline, returning structured data including post text, author info with profile picture…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
threads-keyword-search
browser-act
Searches Threads posts by keyword or hashtag and returns matching posts with engagement metrics, extracted from SSR-embedded JSON.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
threads-user-posts
browser-act
Fetches public posts from a Threads user's profile page, extracting post text, engagement metrics, and media info from SSR-embedded JSON.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
ebay-search-listing
browser-act
Extracts product listings from any eBay search or category page URL, returning per-item cards (itemNumber, url, title, subtitle, caption, price…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
webcrawler-deep-crawl
browser-act
Deep-crawl any website from start URLs, return per-page LLM-ready text/markdown/HTML plus metadata (title, description, author, language, canonical URL, OG)…
SkillCFreshness: C★ 6.3KClaude Code +9
Signals
- Stars
- 6,268
- Forks
- 330
- Open issues
- 9
- Last commit (this folder)
- Jun 26, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/browser-act/skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from browser-act
- 0.674score
ebay-item-detail
browser-act
Extracts full item detail from any open eBay item URL, returning JSON with url, itemNumber, title, subTitle, categories, price, priceWithCurrency, currency…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
ebay-search-listing
browser-act
Extracts product listings from any eBay search or category page URL, returning per-item cards (itemNumber, url, title, subtitle, caption, price…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
ecommerce-seller-info
browser-act
Extract seller or merchant profile data from marketplace platform seller pages.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
etsy-keyword-search
browser-act
Etsy keyword search scraper: given a search keyword and optional page number, returns paginated product listings with listingId, shopId, title, url, image…
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
taobao-keyword-search
browser-act
Search Taobao and Tmall product listings by keyword, returning paginated product cards with title, price, shop, image, sales, and tags.
SkillCFreshness: C★ 6.3KClaude Code +9 - 0.674score
facebook-groups-scrape-posts
browser-act
Scrapes posts from a Facebook group given a group URL, sort order, and desired count — returns structured post metadata including post_id, permalink, author…
SkillCFreshness: C★ 6.3KClaude Code +9
Cite this page
x-tweet-by-url skill. Agent Mart. https://agentmart.dev/skills/browser-act-x-tweet-by-url (last updated 2026-10-24)