6 Commits

Author SHA1 Message Date
cf170ec1fe Use all X accounts defined 2026-01-12 13:31:24 +00:00
53bbfeaf0e Remove dry-run feature and update email configuration
Changes:
- Remove DRY_RUN environment variable and --dry-run CLI flag
- Always send emails directly without preview mode
- Update sender email to x-news@ksalk.pl
- Remove dry run config from types, env schema, and email service

Email now successfully sends to konrad.salkowski@gmail.com from x-news@ksalk.pl

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-12 12:55:52 +00:00
6f34002165 Update BREVO SMTP configuration in env example
Set BREVO_SMTP_USER to the correct login email (9faa1f001@smtp-brevo.com). Keep BREVO_SMTP_KEY as placeholder in .env.example; real credentials are stored only in .env (gitignored).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-12 12:12:02 +00:00
3c31f41122 Add CLAUDE.md documentation for AI-assisted development
Documents project architecture, data flow, configuration requirements, and common modification patterns for future Claude Code sessions.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-12 12:05:52 +00:00
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
b3643fd5b0 Initial commit: Daily tech newsletter worker
A Node.js/TypeScript worker that sends daily AI-generated summaries
of tech news from X/Twitter via Nitter RSS feeds.

Features:
- Fetches tweets from 40+ curated tech accounts via Nitter RSS
- Filters and categorizes by topic (AI/ML, SWE, General Tech)
- Generates AI summaries using OpenRouter (Claude/GPT-4)
- Sends professional HTML email via Brevo SMTP
- Runs on cron schedule inside Docker container
- Instance rotation for Nitter reliability
- Graceful degradation if AI fails

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 20:23:38 +00:00