agentleFS
nirholasnirholas/XActions/skills/twitter-scraping/SKILL.md

twitter-scraping

Skill648 starsChanged 9 months agoApache-2.0View on GitHub

Scrapes X/Twitter data without API access using Puppeteer stealth and browser console scripts. Extracts profiles, followers, following lists, tweets, search results, hashtags, threads, media, bookmarks, notifications, DMs, likes, and viral tweets. Exports to JSON/CSV. Use when collecting, exporting, or analyzing Twitter data.

  • Installs packages

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    All scrapers require an auth_token cookie from x.com (DevTools -> Application -> Cookies -> copy auth_token value).

    line 14
  2. Distinctive:

    All scrapers available via the MCP server for AI agents:

    line 81
  3. Very specific:

    Always call browser.close() when done with Node.js scrapers

    line 94
  4. Distinctive:

    All scripts support JSON and CSV export

    line 96

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Twitter Scraping

Auth Setup

All scrapers require an auth_token cookie from x.com (DevTools -> Application -> Cookies -> copy auth_token value).

Node.js Scraper API

npm install xactions -- all functions from src/scrapers/index.js.

import { createBrowser, createPage, loginWithCookie, scrapeProfile } from 'xactions';

const browser = await createBrowser();
const page = await createPage(browser);
await loginWithCookie(page, AUTH_TOKEN);

const profile = await scrapeProfile(page, 'nichxbt');
await browser.close();
FunctionPurpose
scrapeProfile(page, username)Profile data (bio, followers, following)
scrapeFollowers(page, username, {limit})Follower list
scrapeFollowing(page, username, {limit})Following list
scrapeTweets(page, username, {limit})User's tweets
searchTweets(page, query, {limit})Search results
scrapeHashtag(page, tag, {limit})Hashtag tweets
scrapeThread(page, tweetUrl)Thread tweets
scrapeMedia(page, username, {limit})Media URLs
exportToJSON(data, path) / exportToCSV(data, path)File export

Browser Console Scripts

Standalone IIFEs -- paste into DevTools console on x.com. No dependencies.

ScriptFileNavigate to
Download videosrc/scrapers/videoDownloader.jsTweet with video
Export bookmarkssrc/scrapers/bookmarkExporter.jsx.com/i/bookmarks
Unroll threadsrc/scrapers/threadUnroller.jsAny thread
Find viral tweetssrc/scrapers/viralTweets.jsUser profile
Scrape followersscripts/scrapeFollowers.jsx.com/USER/followers
Scrape followingscripts/scrapeFollowing.jsx.com/USER/following
Scrape profilescripts/scrapeProfile.jsUser profile
Scrape searchscripts/scrapeSearch.jsSearch results
Scrape hashtagscripts/scrapeHashtag.jsx.com/hashtag/TAG
Scrape likesscripts/scrapeLikes.jsx.com/USER/likes
Scrape likersscripts/scrapeLikers.jsAny tweet
Scrape repliesscripts/scrapeReplies.jsAny tweet
Scrape mediascripts/scrapeMedia.jsUser media tab
Scrape DMsscripts/scrapeDMs.jsx.com/messages
Scrape notificationsscripts/scrapeNotifications.jsx.com/notifications
Scrape listscripts/scrapeList.jsAny X List
Scrape bookmarksscripts/scrapeBookmarks.jsx.com/i/bookmarks
Export to CSVscripts/exportToCSV.jsAfter any scrape
Link scraperscripts/linkScraper.jsAny timeline
Quote retweetsscripts/scrapeQuoteRetweets.jsAny tweet

Interactive browser toolbox (recommended for console scraping)

For paste-in-console scraping, prefer scripts/twitter/scraper-toolbox.js: an on-page control panel (start/pause/stop, live filters, user exclusions, keyword rules) that captures X's own GraphQL responses, so counts are exact integers and long posts are untruncated. Exports JSON/CSV/Markdown/TXT/HTML and copies to clipboard. Works on any timeline: profile, search, list, likes, bookmarks, home. Docs: scripts/twitter/README-scraper-toolbox.md.

MCP Scraping Tools

All scrapers available via the MCP server for AI agents:

ToolDescription
x_get_profileScrape user profile
x_get_followersGet follower list
x_get_followingGet following list
x_get_tweetsGet user tweets
x_search_tweetsSearch tweets
x_get_threadUnroll thread
x_download_videoExtract video URL

Notes

  • Always call browser.close() when done with Node.js scrapers
  • Browser scripts stop on page navigation -- stay on the page while running
  • All scripts support JSON and CSV export
  • Increase limit parameter for deeper scraping (default varies by function)
  • Rate limiting is built in -- avoid reducing delays below defaults

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.