Why This Exists: Reading the Neuron Daily newsletter is a great way to start the day, but manually clicking through all the article links takes time. This automation opens everything at once, so you can spend your morning reading instead of clicking. Built collaboratively with Claude AI to solve a real daily workflow need.
If this saves you time too, give it a ⭐ and let us know how it works for you!
Cross-platform automation system that automatically opens the latest Neuron Daily newsletter with all article links in separate tabs every weekday morning.
Supported Platforms: Linux, macOS, Windows
📚 Complete Documentation | 💻 GitHub Repository
📊 Complete Project Review & Analysis - Comprehensive technical documentation, architecture decisions, development history, and future roadmap.
- Project Review
- Features
- Quick Start
- Usage
- How It Works: Smart Multi-Run System
- 📅 Blacklist Time Rewind Tool
- Configuration
- Troubleshooting
- File Structure
- Advanced Usage
- Security Considerations
- Performance
- Uninstallation
- Contributing
- Updating
- Changelog
- License
- Support
- ✅ Smart Multi-Run System: Multiple scheduled runs with intelligent change detection
- ✅ Optimal Newsletter Coverage: Catches newsletters regardless of publication time (5:00-7:00 AM)
- ✅ Intelligent Link Extraction: Finds and filters relevant article links
- ✅ Error Recovery: Robust retry mechanisms and comprehensive error handling
- ✅ Cross-Platform: Works on Linux, macOS, and Windows
- ✅ System Integration: Automatic scheduling (systemd/launchd/Task Scheduler)
- ✅ Easy Installation: Platform-specific installers or pip install
- ✅ Shell Compatibility: Auto-detects and configures bash, zsh, fish, and Oh My Zsh
- ✅ Logging: Detailed logging for troubleshooting
- ✅ Configuration: Easily customizable settings
- ✅ Chrome Integration: Opens tabs in your regular Chrome browser (preserves existing tabs)
- ✅ Link Management: Advanced blacklist system prevents duplicate reading and tracks analytics
- ✅ Time Rewind Tool: Go back in time and restore previously blacklisted content for re-learning
- ✅ Network Resilience: Checks connectivity before running
git clone https://github.com/pem725/NeuronAutomator.git
cd NeuronAutomator
./installers/install_linux.sh # or install_macos.sh / install_windows.ps1# Package not yet on PyPI - use git clone method above
# pip install neuron-automation # Will be available in future release
# neuron-automation --setup- Clone the Repository
git clone https://github.com/pem725/NeuronAutomator.git
cd NeuronAutomator- Run Platform-Specific Installer
chmod +x installers/install_linux.sh
./installers/install_linux.shchmod +x installers/install_macos.sh
./installers/install_macos.sh# Run PowerShell as Administrator
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
.\installers\install_windows.ps1The installer will:
- Install system dependencies (Python, Chrome, package managers)
- Create a virtual environment with required packages
- Set up automatic scheduling (systemd/launchd/Task Scheduler)
- Configure the system to run multiple times each weekday morning (5:30, 6:00, 6:30, 7:00 AM)
- Detect and configure your shell (bash, zsh, fish) with proper PATH settings
- Handle Oh My Zsh and other shell frameworks automatically
Test that everything works:
neuron-automationThis should open Chrome with the Neuron Daily newsletter and article tabs.
The script runs automatically at 5:30, 6:00, 6:30, and 7:00 AM on weekdays, with smart detection to prevent redundant executions.
Run manually anytime:
neuron-automationCheck version:
neuron-automation --versionCheck for updates:
neuron-automation --check-updatesThe automation uses a sophisticated Phase 2 approach that combines multiple scheduled runs with intelligent content detection:
- 5:30 AM: Early check (catches early publications)
- 6:00 AM: Primary window (most common publication time)
- 6:30 AM: Late catch (for delayed publications)
- 7:00 AM: Final safety net (covers very late publications)
Scenario 1: Normal Publication (6:15 AM)
- 5:30 AM → Finds old content → Proceeds (user gets yesterday's articles temporarily)
- 6:00 AM → Same old content → SKIPS (smart detection prevents redundancy)
- 6:30 AM → NEW content detected! → Proceeds (user gets today's articles)
- 7:00 AM → Same new content → SKIPS (already got today's content)
Scenario 2: Late Publication (6:45 AM)
- 5:30 AM, 6:00 AM, 6:30 AM → All skip old content after first run
- 7:00 AM → NEW content detected! → Proceeds (catches late publication)
Result: Perfect coverage with zero redundancy ✨
The automation integrates seamlessly with your Chrome browser and keeps tabs open after script completion:
✅ Browser Persistence Features:
- Tabs Stay Open: Browser detaches after automation, keeping all newsletter tabs accessible
- No Premature Closing: Script ending does NOT close your reading tabs
- Morning Workflow: Perfect for getting up to pre-opened articles ready to read
- Manual Control: Only you decide when to close the tabs
✅ Integration Benefits:
- Regular Profile: Uses your bookmarks, extensions, and settings
- Existing Windows: Connects to running Chrome when possible
- Smart Detection: Prevents opening duplicate content on multiple runs
- Error Handling: Only successful runs leave browser open (failures close automatically)
📖 Reading Scenarios:
- Early Bird (6:00 AM): Automation runs, tabs open → read immediately
- Late Riser (8:00 AM): Earlier tabs still open and waiting for you
- Multiple Runs: Smart detection prevents duplicates, adds only new content
- Browser Persistence: Tabs remain accessible until you manually close them
Check if the timer is active:
systemctl status neuron-automation.timerView service logs:
journalctl -u neuron-automation.serviceView application logs:
tail -f ~/.config/neuron-automation/neuron_automation.logStop the automatic timer:
sudo systemctl stop neuron-automation.timer
sudo systemctl disable neuron-automation.timerRe-enable the timer:
sudo systemctl enable neuron-automation.timer
sudo systemctl start neuron-automation.timerThe Time Rewind Tool lets you "go back in time" and restore previously blacklisted links, making them available for reading again. Perfect for testing learning patterns, content review, and experimentation.
# Preview what a 7-day rewind would restore (safe preview)
neuron-automation --rewind-preview 7
# Restore links blacklisted in the last 5 days
neuron-automation --rewind 5
# Show recently blacklisted content
neuron-automation --recent-blacklisted 10
# Use standalone tool with more options
blacklist-rewind --stats
blacklist-rewind --backup- 🧪 Learning Experiments: Test how re-introducing content affects retention
- 📚 Content Review: Bring back important articles for reinforcement learning
- 🔄 Pattern Testing: Experiment with different content exposure cycles
- 🛡️ Recovery: Undo accidental over-blacklisting of valuable content
- ⏰ Content Rotation: Manage long-term content availability strategically
📖 Full Blacklist Rewind Usage Guide - Comprehensive guide with examples, best practices, and advanced workflows
The script can be customized by editing the configuration file:
nano ~/.config/neuron-automation/config.py| Setting | Description | Default |
|---|---|---|
BASE_URL |
Newsletter URL | https://www.theneurondaily.com/ |
ENABLED_DAYS |
Days to run (0=Monday, 6=Sunday) | [0,1,2,3,4] (weekdays) |
MAX_RETRIES |
Retry attempts on failure | 3 |
PAGE_LOAD_TIMEOUT |
Page load timeout (seconds) | 30 |
CHROME_OPTIONS |
Chrome browser options | See config.py |
LOG_LEVEL |
Logging verbosity | INFO |
To change when the script runs, edit the systemd timer:
sudo systemctl edit neuron-automation.timerAdd your custom schedule:
[Timer]
# Add an additional run at 7:30 AM
OnCalendar=Mon,Tue,Wed,Thu,Fri *-*-* 07:30:00Common schedule formats:
*-*-* 09:00:00- Daily at 9:00 AMMon *-*-* 05:30:00- Mondays only at 5:30 AM*-*-01 05:30:00- First day of every month
Chrome not opening:
# Check if Chrome is installed
google-chrome --version
# Check Chrome driver
~/.config/neuron-automation/venv/bin/python -c "from selenium import webdriver; print('Selenium OK')"Permission errors:
# Fix permissions
chmod +x /usr/local/bin/neuron-automation
sudo chown -R $USER:$USER ~/.config/neuron-automation/Service not running:
# Check service status
systemctl status neuron-automation.service
# View recent logs
journalctl -u neuron-automation.service -n 50Network issues:
# Test connectivity
curl -I https://www.theneurondaily.com/Enable debug logging by editing the config:
LOG_LEVEL = "DEBUG"Or use the development configuration:
ACTIVE_CONFIG = DevelopmentConfigTest individual components:
# Activate the virtual environment
source ~/.config/neuron-automation/venv/bin/activate
# Test the script directly
cd ~/.config/neuron-automation
python3 neuron_automation.py~/.config/neuron-automation/
├── neuron_automation.py # Main script
├── config.py # Configuration file
├── venv/ # Python virtual environment
├── neuron_automation.log # Application logs
├── requirements.txt # Python dependencies
└── uninstall.sh # Uninstallation script
/usr/local/bin/
└── neuron-automation # System command wrapper
/etc/systemd/system/
├── neuron-automation.service # Systemd service
└── neuron-automation.timer # Systemd timer
Test mode (minimal retries, debug logging):
# Edit config.py and change:
ACTIVE_CONFIG = TestConfigDevelopment mode (verbose logging, runs every day):
# Edit config.py and change:
ACTIVE_CONFIG = DevelopmentConfigModify link filtering by editing these config variables:
SKIP_LINK_PATTERNS = [
# Add patterns to skip
'advertisement', 'promo', 'sponsor'
]
SKIP_TEXT_PATTERNS = [
# Add text patterns to skip
'buy now', 'limited time'
]Run without opening browser windows:
CHROME_OPTIONS = [
"--headless",
"--no-sandbox",
"--disable-dev-shm-usage"
]If the website structure changes, update selectors:
CONTENT_SELECTORS = [
".newsletter-content", # Add site-specific selectors
".article-list"
]The automation is designed to keep your newsletter tabs open after the script finishes:
- ✅ Intended Behavior: Tabs remain open for you to read at your own pace
- ✅ Persistent Access: Articles stay available until you manually close them
- ✅ Morning Ready: Wake up to pre-opened content waiting for you
- ✅ No Rush: Read articles throughout the day without time pressure
- Script Opens: Browser launches with main newsletter site
- Newsletter Loads: Latest newsletter post opens in new window
- Tabs Open: Article links open in additional tabs (one by one)
- Script Ends: Automation completes but browser stays open
- Read When Ready: All tabs remain accessible for reading
If your browser closes immediately after opening tabs, this indicates an error occurred:
# Check the logs to see what went wrong
tail -20 ~/.config/neuron-automation/neuron_automation.log
# Try running manually with verbose output
neuron-automation --verboseCommon causes of premature closure:
- Network connectivity issues during tab loading
- Chrome driver compatibility problems
- Permission or security restrictions
- System resource limitations
- The script opens tabs in your regular Chrome browser, using your existing profile and settings
- When possible, it connects to existing Chrome instances rather than creating new ones
- Browser Persistence: Successful automation runs leave tabs open indefinitely for reading
- Automatic Cleanup: Failed automation attempts close browser windows to prevent resource waste
- Logs may contain URLs visited - review log files if sharing system access
- The script only accesses the specified newsletter URL and extracted links
- Privacy Note: Newsletter tabs remain accessible in your browser until manually closed
Resource Usage:
- Memory: ~100-200MB during execution
- CPU: Low (brief spike during Chrome startup)
- Disk: ~50MB for virtual environment and dependencies
- Network: Minimal (loads newsletter page once, then opens tabs)
Optimization Tips:
- Use headless mode to reduce resource usage
- Adjust
PAGE_LOAD_TIMEOUTfor slower connections - Reduce
MAX_RETRIESif network is reliable
To completely remove the automation:
~/.config/neuron-automation/uninstall.shThis will:
- Stop and disable the systemd timer
- Remove all system files
- Optionally remove configuration and logs
- Fork the project
- Create a development environment:
python3 -m venv dev-env
source dev-env/bin/activate
pip install -r requirements.txt- Use the test configuration:
ACTIVE_CONFIG = TestConfigRun tests with different configurations:
# Test with current site
python3 neuron_automation.py
# Test connectivity
python3 -c "from neuron_automation import NeuronNewsletterAutomation; n=NeuronNewsletterAutomation(); print(n.check_internet_connectivity())"See TODO.md for:
- 📚 Complete project history and evolution
- ✅ Current implementation status
- 🚧 Future enhancement ideas and priorities
- 💡 Community and ecosystem possibilities
- 🔧 Technical debt and maintenance tasks
- Fixed: Browser persistence and tab population on Linux
- Resolved "user data directory in use" errors
- Removed conflicting Linux-specific profile code
- Simplified to dedicated automation profile for all platforms
- Added: PROJECT_REVIEW.md comprehensive project documentation
- Architecture decisions and technical documentation
- Development history and evolution
- Future roadmap and planned enhancements
- Improved: Documentation website integration
- Added prominent Netlify website links (https://neuronautomator.netlify.app/)
- Updated README with documentation and GitHub links
- Enhanced docs homepage with Quick Links section
- Fixed: Cross-platform browser behavior consistency
- Unified Chrome setup for Linux and macOS
- Browser stays open reliably after automation completes
- Successfully tested with 43 newsletter tabs
- Enhanced browser persistence options
- Cross-platform improvements
- Link management system
- Blacklist time rewind functionality
- Initial release
- Automated weekday newsletter opening
- Intelligent link extraction
- Systemd integration
- Comprehensive error handling
- Configurable settings
MIT License - feel free to modify and distribute.
For issues or questions:
- Check the troubleshooting section above
- Review logs in
~/.config/neuron-automation/neuron_automation.log - Test manually with debug logging enabled
- Check systemd service status and logs
System Requirements:
- Ubuntu 18.04+ (or compatible Debian-based distribution)
- Python 3.6+
- Internet connection
- X11 display server (for GUI Chrome)
Tested On:
- Ubuntu 20.04 LTS
- Ubuntu 22.04 LTS
- Ubuntu 24.04 LTS
The system includes an automatic update mechanism to easily upgrade to newer versions while preserving your configuration.
Linux/macOS:
./update.shWindows:
update.batThe updater will:
- 📦 Backup your current configuration and logs
- 🌐 Download the latest version from GitHub
- 🔧 Install the new version using platform-specific installers
- 📂 Restore your preserved settings and data
- ✅ Verify the update completed successfully
- Configuration files and customizations
- Application logs
- Content change detection cache
If the automatic updater doesn't work:
-
Download latest version:
git clone https://github.com/pem725/NeuronAutomator.git neuron-update cd neuron-update -
Run installer:
# Linux ./installers/install_linux.sh # macOS ./installers/install_macos.sh # Windows (PowerShell as Admin) .\installers\install_windows.ps1
- Check current version:
neuron-automation --version - Check for updates:
neuron-automation --check-updates - View update history on GitHub Releases