Manage a curated list of Twitter/X creators worth learning from. Batch scrape their content, import to a database, and extract patterns from high-performing posts.
UsernameFollowersDomainTagsthedankoe804KPersonal growth / creator economywriting, philosophylevelsio795KIndie Hackernomad, shipping, bootstrappednaval3MPhilosophy / investingphilosophy, wealth, startupsthejustinwelsh560KSolopreneurlinkedin, one-person-businessAlexHormozi1MBusiness / fitnessoffers, salesShaanVP458KPodcast / startupsideas, newsletterarvidkahl188KBootstrappingaudience, zero-to-soldtibo_maker178KMakerproduct, distributiontdinh_me176KIndie Hackersaas, productsnoahkagan170KMarketinggrowth, appsumodannypostma167KAI Productsmaker, ai-toolsyongfook147KSaaSbootstrapped, designnathanbarry146KCreator Economynewsletters, convertkitthepatwalls134KStartupsinterviews, storiescsallen68KCommunityindie-hackers, founder
UsernameFollowersDomainTagskarpathy1.6MAI educationdeep-learning, youtubelexfridman4.5MPodcast / AIinterviews, researchylecun1MAI Researchmeta, deep-learningDrJimFan351KAI Researchembodied-ai, nvidialilianweng183KAI Researchopenai, blogmattpocockuk230KTypeScripttutorials, ts
UsernameFollowersDomainTagsSahilBloom1M+Writing / investingthreads, frameworksJamesClear2M+Habits / productivityhabits, atomicdickiebush400KWriting instructionwriting, ship30david_perell500KWritingessays
bash
# Using rnet_twitter.py (async Twitter GraphQL client)
python twitter_scraper.py <username> --limit 200
python db_import.py storage/twitter/<username>.json
bash
# Tier 1: Solopreneur / Indie Hacker (Priority)
TIER1="thedankoe levelsio naval thejustinwelsh AlexHormozi ShaanVP arvidkahl tibo_maker tdinh_me noahkagan dannypostma yongfook nathanbarry thepatwalls csallen"
# Tier 2: Tech / AI
TIER2="karpathy lexfridman ylecun DrJimFan lilianweng"
# Tier 3: Writing
TIER3="SahilBloom JamesClear dickiebush david_perell"
for user in $TIER1; do
echo "=== Scraping @$user ==="
python twitter_scraper.py $user --limit 200
python db_import.py storage/twitter/$user.json
echo "Waiting 30s to avoid rate limit..."
sleep 30
done
FrequencyCreatorsWhyWeeklythedankoe, naval, SahilBloomHigh volume, trending contentBi-weeklyAlexHormozi, JamesClearMedium volumeMonthlyOthersReference / archive
sql
CREATE TABLE twitter_content (
id TEXT PRIMARY KEY,
username TEXT NOT NULL,
text TEXT,
created_at TIMESTAMPTZ,
likes INTEGER DEFAULT 0,
retweets INTEGER DEFAULT 0,
replies INTEGER DEFAULT 0,
views BIGINT,
url TEXT,
is_retweet BOOLEAN DEFAULT FALSE,
imported_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_twitter_content_username ON twitter_content(username);
sql
SELECT username, text, likes, retweets, url
FROM twitter_content
WHERE likes > 1000
ORDER BY likes DESC
LIMIT 20;
sql
SELECT
username,
COUNT(*) as tweets,
AVG(likes) as avg_likes,
AVG(retweets) as avg_retweets,
MAX(likes) as top_tweet_likes
FROM twitter_content
GROUP BY username
ORDER BY avg_likes DESC;
sql
SELECT username, text, likes, retweets, views, url
FROM twitter_content
WHERE likes > 5000
AND text NOT LIKE 'RT @%'
ORDER BY likes DESC;
sql
SELECT
EXTRACT(DOW FROM created_at) as day_of_week,
EXTRACT(HOUR FROM created_at) as hour,
AVG(likes) as avg_likes
FROM twitter_content
GROUP BY day_of_week, hour
ORDER BY avg_likes DESC
LIMIT 10;
sql
-- Find posts mentioning a topic
SELECT username, text, likes, url
FROM twitter_content
WHERE text ILIKE '%indie hacker%'
ORDER BY likes DESC
LIMIT 20;
To add a creator to the watchlist:
python twitter_scraper.py <username> --limit 50python db_import.py storage/twitter/<username>.jsonAnalysis output format:
text
## @[username] Content Analysis
### Top Performing Formats
1. [Format] — avg [X] likes
2. [Format] — avg [X] likes
### Highest Engagement Topics
1. [Topic] — [N] posts, avg [X] likes
2. [Topic] — [N] posts, avg [X] likes
### Best Posting Times
- [Day] at [Hour] — avg [X] likes
### Hook Patterns That Work
- [Hook type]: "[example]" ([X] likes)
- [Hook type]: "[example]" ([X] likes)
### Key Takeaways
- [Insight 1]
- [Insight 2]
- [Insight 3]
Track scrape status in this format:
UsernameStatusTweetsLast Scraped@thedankoeDone2002026-01-27@levelsioDone2002026-02-05@navalDone2002026-02-05@thejustinwelshDone2002026-02-05@AlexHormoziPartial182026-02-05 (rate limited)@karpathyPending——
Status values:
Done — Full scrape completedPartial — Rate limited, partial dataPending — Not yet scrapedError — Scrape failed, needs investigationTwitter/X has aggressive rate limiting. Follow these rules:
To find patterns across the entire watchlist:
sql
-- What topics go viral across all creators?
SELECT
-- extract common words/phrases manually or with NLP
username,
text,
likes
FROM twitter_content
WHERE likes > 5000
AND is_retweet = FALSE
ORDER BY likes DESC
LIMIT 50;
-- Which creator has the most consistent engagement?
SELECT
username,
AVG(likes) as avg_likes,
STDDEV(likes) as stddev_likes,
AVG(likes) / NULLIF(STDDEV(likes), 0) as consistency_score
FROM twitter_content
GROUP BY username
ORDER BY consistency_score DESC;
Use creator analysis to:
Canlah AI — Run performance marketing without breaking your brand.