Transform Reddit into a personalized daily or weekly newsletter, delivered to your Kindle! Modified from jstriblet's Reddit-to-Kindle program to add article integration and other features.
-
Clone and install:
git clone https://github.com/popjam/Reddit-Newsletter.git cd Reddit-Newsletter npm install -
Run the interactive setup:
npm run setup
The setup wizard will configure email, Reddit settings, and daily scheduling.
-
Generate your first newsletter:
npm start
That's it! Your Reddit newsletter will be generated and sent to your Kindle.
See SETUP.md for detailed Windows, Linux, and macOS instructions.
Reddit-Newsletter is a program that converts Reddit content into a formatted EPUB organized by subreddits. You can specify any subreddits you want to be included in the newsletter, the time range to fetch posts from, the sorting method, how comments are displayed, and more. It will attempt to fetch the articles and self posts so you don't need to use the inbuilt browser.
| Cover | Main Contents | Subreddit Title Page |
|---|---|---|
![]() |
![]() |
![]() |
| Subreddit Contents | Post View | Article View |
|---|---|---|
![]() |
![]() |
![]() |
- Node.js 18+
- npm or yarn
-
Clone the repository:
git clone https://github.com/jstriblet/Reddit-Newsletter.git cd Reddit-Newsletter -
Install dependencies:
npm install
-
Run the interactive setup wizard:
npm run setup
The setup wizard will guide you through:
- Gmail setup: Create an app password (tutorial here).
- GMX setup: Simple username/password configuration (create gmx account here).
- Kindle email: Instructions on finding your Kindle email and adding your sender to the approved list
- Why use OAuth: Higher rate limits (60 requests/minute vs 10) and speeds (Setup here).
- Optional: You can skip this for basic usage
- Subreddit selection: Enter your favorite subreddits (e.g.,
worldnews, technology, AskReddit) - Posts per subreddit: How many posts to include
- Comments per post: How many top comments to include
- Time period: Daily, weekly, monthly, or yearly top posts
If you prefer manual setup, you can edit user-config.json directly:
// Example configuration
"subreddits": [
"popular",
"all",
"worldnews",
"hotdogs",
"digitalminimalism",
"denmark",
"aliens",
"chess",
"AskHistorians",
"houseplants",
{
"name": "AmItheAsshole",
"sort": "controversial"
}
],# Generate and send newsletter
npm start
# Reconfigure settings
npm run setup
# Show help
npm run helpGmail Setup:
- Enable 2-Factor Authentication
- Go to Google Account Settings > Security > App Passwords
- Generate a new app password
- Use this password (not your regular Gmail password)
GMX Setup:
- Enable POP3/IMAP in GMX settings
- Use your regular GMX password
- Find your Kindle email: Kindle App > Settings > Send to Kindle Email
- Add your email to approved senders: Amazon Account > Manage Your Content and Devices > Personal Document Settings
Set up automatic daily newsletters:
# Edit crontab
crontab -e
# Add this line for daily 8 AM delivery
0 8 * * * cd /path/to/reddit-newsletter && npm start- Open Task Scheduler
- Create Basic Task
- Set trigger (daily, weekly, etc.)
- Set action to "Start a program" and in the "Program/script" box, browse to and select the
run-newsletter.batfile located in your project folder.
Configurations can be made in user-config.json. Subreddit configurations can be global or subreddit specific.
- commentsPerPost: Amount of top level comments for each post.
- sort: hot, new, top, controversial, best, rising
- timeframe: hour, day, week, month, year, all
- includeInternalLinks: Include/exclude self posts
- skipUnfetchableArticles: If the articles text cannot be fetched, skip the post.
- commentStyle: threaded or nested. Nested will include all child comments up to the specified depth. Threaded will only include the top "chain" of comments up to the specified depth, better simulating a conversation.
- minCommentLength: Will skip comments under this amount of characters. In threaded, only applies to top level comments.
- imageOptimizationPreset: default, aggressive, extreme
- simplifiedTOC: Show only subreddit sections (default: true)
- hierarchicalTOC: Show only subreddit sections (default: true)
- title: Personalize your newsletter title
Rate limiting and timeout, image size, and cover generation settings can be modified in config.js.
This project is licensed under the MIT License - see the LICENSE file for details.





