agent-workflows: workspace-context-organization autonomous-ai-agents: hermes-agent computer-use devops: hermes-config-bulk-update, hermes-profile-management, holographic-memory, telegram-integration, webhook-subscriptions email: himalaya mcp: native-mcp, searxng-smart-search media: voice-systems, youtube-content mlops: local-vector-memory, qdrant-collection-management productivity: maps, notion, ocr-and-documents project-knowledge-base research: arxiv, blogwatcher, ecosystem-surveillance save-agents-md social-media: social-media-scraping, xurl software-development: agent-self-audit, simplify-code, spike, subagent-driven-development, systematic-debugging, test-driven-development, writing-plans user-response-style
4.8 KiB
name, description, version, category, author, tags
| name | description | version | category | author | tags | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| social-media-scraping | Free, local social media scraping — X/Twitter via twscrape (cookie auth), Reddit, etc. Zero API fees, fully self-hosted. | 1.0.0 | social-media | Hermes Agent |
|
Social Media Scraping (Free & Local)
Read-only social media access without paid APIs. Uses browser cookies to authenticate against platforms' internal GraphQL endpoints — the same APIs the web apps use. Zero cost, fully local, no cloud dependencies.
This skill covers free scraping tools. For the official paid X API, see the xurl skill.
When to Use
- Reading X/Twitter profiles, timelines, search results without paying for API access
- Monitoring accounts, collecting data, research
- Any read-only social media task where paid API keys are unacceptable
Not for: posting, liking, following, or any write operations. These tools are read-only by design.
Primary Tool: twscrape (X/Twitter)
twscrape is an async Python library + CLI for X/Twitter's internal GraphQL API. Uses your own browser cookies (auth_token + ct0), stores sessions in local SQLite, and returns structured data.
- Repo: https://github.com/vladkens/twscrape
- Install:
pip install twscrape - Version used: 0.19.0 (June 2026)
- Cost: Free
- Privacy: Cookies stored locally in SQLite DB. No data leaves your machine.
- GPU: None — pure HTTP requests, zero inference.
Setup
- Install:
pip install twscrape - Extract cookies from your browser while logged into x.com:
- Open x.com → F12 → Application → Cookies
- Copy
auth_tokenandct0values
- Add account:
twscrape add_cookie my_account "auth_token=xxx; ct0=yyy" - Verify:
twscrape user_by_login XDevelopers
Key Commands
| Action | Command |
|---|---|
| User lookup | twscrape user_by_login <handle> |
| User tweets | twscrape user_tweets <user_id> --limit=20 |
| Search | twscrape search "query" --limit=20 |
| Tweet details | twscrape tweet_details <tweet_id> |
| Tweet replies | twscrape tweet_replies <tweet_id> --limit=20 |
| Following | twscrape following <user_id> --limit=20 |
| Followers | twscrape followers <user_id> --limit=20 |
| Trends | twscrape trends |
| List accounts | twscrape accounts |
All output is JSON. Use --limit to control result count.
Python API
import asyncio
from twscrape import API, gather
async def main():
api = API()
await api.pool.add_account_cookies("my_account", "auth_token=xxx; ct0=yyy")
# User profile
user = await api.user_by_login("XDevelopers")
print(user.username, user.followersCount)
# Search tweets
tweets = await gather(api.search("python lang:en", limit=20))
for t in tweets:
print(t.id, t.rawContent)
asyncio.run(main())
Workspace & Profile Convention
Each social media scraping project gets a dedicated Hermes profile + workspace:
- Profile:
~/.hermes/profiles/social/config.yaml— model pinned to user's choice,workspace: /workspace/social - Workspace:
/home/n8n/workspace/social/— AGENTS.md with model, tool docs, read-only convention - Hindsight: shared
~/.hermes/hindsight/config.json(no per-profile config)
This keeps social media work isolated from other profiles and ensures the right model is used.
Pitfalls
- Cookie portability risk: Cookies extracted from a laptop browser may trigger X security checks when used from a different IP (the LXC). This can cause CAPTCHA challenges, email verification, or forced logout. Works often for read-only, but no guarantee. Safest: use a dedicated X account for scraping.
- Cookie expiration:
auth_tokenandct0expire. If twscrape returns auth errors, re-extract fresh cookies from the browser. - Rate limiting: X rate-limits GraphQL endpoints. twscrape handles this with account rotation (add multiple accounts to the pool). For single-account use, space out requests.
- Read-only only: twscrape cannot post, like, follow, or perform any write action. For writes, the paid X API (
xurlskill) is the only official path. - Not a replacement for xurl:
xurlis for the official paid API with full read+write access. twscrape is for free read-only scraping. They serve different needs. add_cookieis idempotent: Re-adding the same account name just logs a warning — cookies are already stored. Usetwscrape del_accounts <name>first if you need to replace credentials.
Free & Local Mandate
This skill exists because the user requires free, local, self-hosted solutions. The official X API requires paid credits (minimum $5). twscrape is the free alternative. Always flag paid services before suggesting them — see user-response-style skill for the full rule.