A fully automated, AI-powered content curation and action generation system built with Node.js, TypeScript, and Claude AI.
Daily at 6 AM UTC:
โโโโโโโโโโโโโโโโ
โ SCRAPER โ โ Collects 50-100 articles from 6+ sources
โโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโ
โ CURATOR โ โ AI scores & summarizes (Claude 3.5 Sonnet)
โโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโ
โ GENERATOR โ โ Creates exercises, projects, challenges
โโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโ
โ INTEGRATIONS โ โ Syncs to Notion & GitHub
โโโโโโโโโโโโโโโโ
Collects content from 6+ sources daily:
- Hacker News (top 30 stories)
- Reddit (/r/rust, /r/cpp)
- GitHub Trending (Rust, C++)
- RSS Feeds (Rust blog, C++ blog)
Features:
- Deduplication by URL
- Sorted by publish date
- Type-safe with TypeScript
- Error handling
Test: pnpm scrape:test
Claude 3.5 Sonnet-powered curation:
- Relevance Scoring (0-100) based on user preferences
- Smart Summarization with "builder friend" tone
- Actionability Detection (code examples, tutorials)
- Connection Finder (cross-domain insights)
Features:
- Batch processing with rate limiting
- Weighted user preferences (Rust: 80%, C++: 70%, AI: 70%)
- Casual, enthusiastic summaries
- Auto-generated tags
Test: pnpm curate:test
Transforms articles into hands-on learning:
- Auto-detects language (Rust, C++, TypeScript, Python, Go)
- Generates starter code with TODOs
- Includes test cases + hints
- Difficulty levels (Easy/Medium/Hard)
- Complete scaffolding (Rust, C++, TypeScript)
- Build configs (Cargo.toml, CMakeLists.txt, package.json)
- README with setup instructions
- Success criteria
- Daily project ideas (60-90 min)
- Cycles through AI tools (Cursor, Copilot, Claude, v0, Perplexity)
- Specific deliverables
- Progress tracking
- For philosophy/self-help content
- Open-ended questions
- Connects to personal experience
Test: pnpm generate:test
pnpm api:dev # Start API serverEndpoints:
GET /api/articles- Get curated articlesPOST /api/articles/refresh- Trigger scrapeGET /api/exercises- Get exercisesGET /api/challenges/today- Get today's AI challengeGET /api/challenges/progress- Track 100 Days progress
pnpm scheduler:dev # Start schedulerCron Jobs:
- 6 AM UTC: Daily scrape + curation + generation
- 7 AM UTC: Daily AI challenge generation
Manual Triggers:
pnpm trigger:scrape- Run daily pipeline nowpnpm trigger:challenge- Generate today's challenge
- Syncs curated articles to Daily Digest database
- Syncs AI challenges to 100 Days database
- Rich content blocks (summaries, checklists)
- Auto-tagged and categorized
- Daily commits to
100-days-of-airepo - Creates challenge folders with README
- Updates main README with progress bar
- Tracks streak and completion percentage
Example Progress Bar:
Day 42/100 (42% Complete)
[โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ]
pnpm installcp .env.example .env
# Edit .env with your API keysRequired:
ANTHROPIC_API_KEY- Claude API key
Optional (for integrations):
NOTION_API_KEY- Notion integration tokenNOTION_DAILY_DIGEST_DB- Database ID for articlesNOTION_AI_CHALLENGE_DB- Database ID for challengesGITHUB_TOKEN- Personal access tokenGITHUB_REPO- Repository (e.g.,username/100-days-of-ai)
pnpm scrape:test # Test scraper
pnpm curate:test # Test curator
pnpm generate:test # Test generator# Start API server
pnpm api:dev
# Start scheduler (in another terminal)
pnpm scheduler:dev
# Or trigger manually
pnpm trigger:scrape
pnpm trigger:challengeactionable-newsletter/
โโโ packages/
โ โโโ scraper/ โ
Content collection
โ โโโ curator/ โ
AI-powered curation
โ โโโ generator/ โ
Action item creation
โ โโโ database/ โ
Prisma schema
โ โโโ integrations/ โ
Notion & GitHub
โโโ apps/
โ โโโ api/ โ
REST API (Fastify)
โ โโโ scheduler/ โ
Cron jobs (node-cron)
โโโ scripts/
โ โโโ test-scrape.ts
โ โโโ test-curator.ts
โ โโโ test-generator.ts
โ โโโ trigger-scrape.ts
โ โโโ trigger-challenge.ts
โโโ docs/
โโโ PHASE1_COMPLETE.md
โโโ PHASE2_COMPLETE.md
โโโ PHASE3_COMPLETE.md
- Runtime: Node.js v20+
- Package Manager: pnpm + Turborepo
- Language: TypeScript
- AI: Anthropic Claude 3.5 Sonnet
- API: Fastify
- Scheduling: node-cron
- Scraping: Cheerio, node-fetch, rss-parser
- Integrations: @notionhq/client, @octokit/rest
- Database: PostgreSQL + Prisma (schema ready)
Daily Processing:
- ~50-100 articles scraped
- ~20 articles curated (score โฅ 60)
- ~5 exercises generated
- ~2 reflection prompts
- 1 AI challenge
API Costs (Claude 3.5 Sonnet):
- Scraping: Free
- Curation: ~$0.10-0.20/day
- Generation: ~$0.05-0.10/day
- Total: ~$0.15-0.30/day (~$5-10/month)
Rate Limiting:
- 3-5 articles per batch
- 1-2 second delays between batches
- Respects API limits
- Daily Newsletter: Curated tech articles in your inbox
- Learning Platform: Auto-generated coding exercises
- 100 Days Challenge: Structured AI tool exploration
- Knowledge Base: Notion database of quality content
- Portfolio: GitHub repo showcasing daily projects
- PostgreSQL database integration (Prisma ready)
- Email notifications (Resend/SendGrid)
- Weekly rollup reports
- User dashboard (React/Next.js)
- Multi-user support
- Custom RSS feed output
- Slack/Discord webhooks
- Analytics & insights
MIT
Built with love using:
๐ PROJECT STATUS: COMPLETE & PRODUCTION-READY! ๐
Last Updated: 2025-11-25