💡 Inspiration

Moderators often struggle to keep casual users engaged with the day's best content. Great posts often get buried under the noise of the "New" feed. We wanted to bring back the feeling of a "Morning Paper"—a curated, high-signal summary of what matters. We were also inspired by legacy tools like u/DailyDigestBot, but we wanted to modernize the concept using Reddit's new Developer Platform (Devvit) to eliminate the need for external hosting and maintenance.

📰 What it does

Auto-Digest is an automated "Newsroom" for moderators. It solves the problem of content ephemeralism by programmatically generating a "Daily Edition" magazine cover for the subreddit.

  • Visual Rendering: Unlike standard text lists, Auto-Digest extracts thumbnail metadata to render a rich media row (Image + Headline) for a modern, app-native feel.
  • Autonomous Scheduling: Powered by scheduler.runJob, it wakes up every 24 hours (default 12:00 UTC) to fetch the top 5 posts of the day without human intervention.
  • Fault Tolerance: Includes strict type-safety checks to handle missing images, deleted authors, or API timeouts gracefully.

⚙️ How we built it

We built the application using TypeScript and React on the Reddit Devvit platform.

  • Backend: We utilized Devvit.addSchedulerJob to create a robust cron-job that persists even when the mod is offline.
  • Frontend: We used the Disovery UI blocks (vstack, hstack, image) to build a responsive card that looks native on both mobile and desktop.
  • Data Fetching: We implemented useAsync to fetch the top posts (reddit.getTopPosts) in a non-blocking manner, ensuring the UI remains responsive while data loads.

🧩 Challenges we ran into

The biggest technical hurdle was Strict Type Safety for Images. Reddit's API returns thumbnails in various states—sometimes as a string URL, sometimes as a complex object, and sometimes as "self" or "default" placeholders.

We initially crashed the app by trying to feed raw objects into the image component. We solved this by implementing a validation layer that "unwraps" the thumbnail object, checks for a valid http protocol, and gracefully falls back to a text-only layout if the image is invalid. This ensures the digest never looks broken, regardless of the source content.

🏆 Accomplishments that we're proud of

We are most proud of the "Zero-Touch" Experience. Once a moderator clicks "Start Daily Automation" in the menu, they never have to touch it again. The bot handles everything—scheduling, fetching, formatting, and posting—autonomously.

🔄 Port Completion (Legacy vs. Modern)

We successfully ported the core functionality of Python-based digest bots into a native app.

Aspect Original (PRAW / Python) New Devvit App (Daily Digest)
Hosting Required a continuously running server/VPS. Zero hosting cost (Runs on Reddit Cloud).
UI Plain text markdown lists. Rich Visual Cards with thumbnails & stats.
Setup Complex env vars & script config. One-Click Install via Reddit Apps.
Reliability Script crashes if PC sleeps. 99.9% Uptime via Cloud Scheduler.

🚀 What's next for Auto-Digest

Our immediate roadmap focuses on "Quality of Life" improvements for power-moderators managing multiple communities.

1. State-Aware "Smart Menus" (Priority: High)

Currently, the menu is static. We plan to implement dynamic menu triggers that detect the scheduler's state.

  • Current: "Start Daily Automation" (Always visible).
  • Future: The button will dynamically toggle between "🟢 Start Automation" and "🔴 Stop Automation" based on the active job status, giving mods immediate feedback without guessing.

2. The "Mod Command" Dashboard (Priority: Medium)

For users who moderate 10+ subreddits, checking each one individually is tedious. We aim to build a Centralized Settings Page that lists all installed instances of Auto-Digest across different communities, allowing for a "Bird's Eye View" of active digest schedules.

3. Customizable "Editions"

Moving beyond the daily cadence, we plan to support Weekly or Monthly recaps, allowing slower-paced communities to have a "Sunday Edition" rather than a daily update.

Built With

Share this project:

Updates