- Adaptive login loop reads page state each step and responds accordingly
- Switched from fill() to keyboard.type() for anti-detection
- Navigate to /compose/post for posting instead of sidebar button
- Clean up stale browser sessions before creating new ones
- Fixed +1 country code for phone verification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- prompts.json now has account field per prompt
- bot.js looks up env vars by account prefix (e.g. THEJUNIPERSKY_USER)
- .env restructured with account-prefixed credentials
- Adding a new Twitter account = new env vars + new prompt blocks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Schedule config moved to nested schedule object in prompts.json
- Scheduler picks 1-3 random times for personality with 4hr min gap
- shouldRun reads from schedule object
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Links now use <placeholder> syntax in prompts, replaced after AI generation
- Removed dead existsSync import
- Moved generation instructions into prompts.json (out of buildPrompt)
- Fixed variable shadowing (url -> linkUrl, page -> pageState)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces 2x_week cap with random posting: enforces minDays gap
then 50% chance each eligible day for natural randomness.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Kernel.sh stealth browser for X login and posting
- Claude Sonnet 4.6 for tweet generation
- prompts.json for configurable prompts with frequency/scheduling
- Per-prompt history tracking to avoid repetition
- Scheduler with random time window support
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>