Files
x-newsletter/package.json
ksalk fabfc2b520 Implement Playwright-based X scraper with AI-powered newsletter generation
Major changes:
- Replace Nitter RSS with Playwright browser automation for direct X scraping
- Scrape all 37 configured tech accounts in parallel
- Add OpenRouter AI integration for topic-based summaries (xiaomi/mimo-v2-flash:free model)
- Update prompts for factual, emotion-free analysis with post links
- Add console output for newsletter preview in dry-run mode
- Update Dockerfile to Playwright v1.57.0 with necessary browser dependencies
- Implement WRAP workflow method for AI-assisted development guidance

Technical improvements:
- Fixed TypeScript compilation (unused parameter in XScraper)
- Newsletter pipeline successfully processes 37 accounts -> AI summaries -> HTML email
- Full end-to-end test validated: scraping, processing, AI generation, email template

Pipeline flow:
1. Scrape X profiles with Playwright (parallel, configurable timeout)
2. Filter tweets by time window and content type
3. Categorize into AI/ML, Software Engineering, Tech & Startups
4. Generate AI summaries for each topic
5. Create cross-topic daily insights
6. Render HTML newsletter with highlights and trending topics
7. Send via email (or print to console in dry-run mode)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-12 09:54:50 +00:00

53 lines
1.2 KiB
JSON

{
"name": "x-newsletter",
"version": "1.0.0",
"description": "Daily tech newsletter from X/Twitter via Nitter RSS feeds with AI summaries",
"main": "dist/index.js",
"type": "module",
"scripts": {
"build": "tsc",
"start": "node dist/index.js",
"dev": "tsx src/index.ts",
"run-now": "tsx src/index.ts --run-now",
"dry-run": "tsx src/index.ts --run-now --dry-run"
},
"keywords": [
"newsletter",
"twitter",
"x",
"rss",
"ai",
"automation"
],
"author": "",
"license": "MIT",
"dependencies": {
"axios": "^1.7.9",
"playwright": "^1.49.1",
"date-fns": "^4.1.0",
"date-fns-tz": "^3.2.0",
"dotenv": "^16.4.7",
"he": "^1.2.0",
"node-cron": "^3.0.3",
"nodemailer": "^6.9.16",
"openai": "^4.77.0",
"pino": "^9.6.0",
"rss-parser": "^3.13.0",
"sanitize-html": "^2.14.0",
"zod": "^3.24.1"
},
"devDependencies": {
"@types/he": "^1.2.3",
"@types/node": "^22.10.5",
"@types/node-cron": "^3.0.11",
"@types/nodemailer": "^6.4.17",
"@types/sanitize-html": "^2.13.0",
"pino-pretty": "^13.0.0",
"tsx": "^4.19.2",
"typescript": "^5.7.2"
},
"engines": {
"node": ">=20.0.0"
}
}