Model or dataset
liyedanpdx/reddit-ai-trends avatar
liyedanpdx/reddit-ai-trends

reddit-ai-trends turns Reddit posts into a daily bilingual AI report

Stay ahead of AI trends with automated Reddit insights! 🚀 This tool scans AI-related Reddit communities in English & Chinese, using Reddit Official API, DeepSeek V4.1 by OpenRouter to analyze posts, summarize key discussions, and track trends. Daily rankings hot topics—catch emerging trends before they go mainstream! (Updated every 6 AM CDT)

871 stars86 forksPythonMIT

At a glance

What is it?
reddit-ai-trends collects posts from AI subreddits, enriches them with image, video and web analysis, and writes English and Chinese trend reports. It is a good fit for daily reading, and a poor fit for anything that needs a stable, versioned pipeline.
Who is it for?
reddit-ai-trends fits readers who want a fresh summary of AI chatter every morning without visiting a dozen subreddits, and the Docker Compose path plus the cron-free schedule loop make it cheap to run on a small host. It is the wrong tool for reproducible data collection, for anything that needs version pinning, or for a team that cannot spend LLM and Reddit API budget on enrichment.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A daily digest of AI subreddits rather than a search tool

reddit-ai-trends does one thing: it reads AI related Reddit communities and writes a report about what was discussed. The project description is direct about the scope, scanning subreddits in English and Chinese, ranking hot topics daily, and refreshing the published reports every morning. The output is a set of Markdown files, with an English report and a Chinese report for each run, and the repository keeps the most recent ones behind stable names so a reader can always open the same URL.

That framing matters for expectations. This is a reading tool and a summarisation pipeline, not an API you query with your own filters. You do not choose which subreddits to read at request time, you do not get raw structured rows back, and you do not control the ranking criteria. What you get instead is a repeatable daily snapshot with sections for today's highlights, weekly trend comparisons and monthly technology evolution. For a team that wants a digest to skim, that is the point.

Fetchers, enrichers and filters after the Clean Architecture refactor

The collection code was refactored with Clean Architecture, which the changelog dates to 2025-10-05, and the effect is visible in the repository layout. The root holds config.py, report_generation.py, management.py and multilingual_test.py, while the work is split across services/, database/, utils/, backfill/ and tests/ directories. The collection framework separates fetchers, enrichers and filters, so fetching posts from Reddit, enriching them and deciding what to keep are separate stages rather than one long script.

Prompts were extracted into separate template files for easier customisation, and the prompt structure was changed to a JSON format. That last detail has practical consequences. Asking a model for JSON output means a downstream parser can rely on the shape of a response instead of scraping prose, and it means a malformed generation is a parse failure you can log rather than a silently broken report. The tests directory, plus files such as test_report_generation.py and simple_test.py, shows that the pipeline is exercised by tests rather than only by a scheduled run.

Three enrichers, each with a bill attached

Enrichment is where the cost lives, and the project is unusually honest about it in the configuration comments. Images in posts can be described by vision models such as Qwen-VL with automatic fallback to Gemini. YouTube links are handled by extracting the transcript and summarising it, which the configuration notes is free apart from the summarisation call. Linked web pages are scraped and summarised through Firecrawl, and the comment integration pulls community comments with bot filtering applied.

Each of these is optional and switched on or off through .env. The vision model setting is a primary model plus a comma separated fallback list, and the comment comment says OpenRouter will auto retry if the primary fails:

bash
ANALYZE_IMAGES=true
IMAGE_ANALYSIS_MODEL=qwen/qwen2.5-vl-72b-instruct:free
IMAGE_ANALYSIS_FALLBACK_MODELS=google/gemini-2.0-flash-exp:free,mistralai/mistral-small-3.2-24b-instruct:free,meta-llama/llama-4-maverick:free
IMAGE_ANALYSIS_MAX_TOKENS=500

bash

The pattern is deliberate. A primary model that is free on the provider, a fallback chain for when it is unavailable, and a tight token ceiling on the summary so that one image cannot consume a large share of the budget.

Comment fetching has a smart mode that skips rich posts

Reddit API calls are the other bill, and the project treats comment collection as a budget decision rather than a default. The strategy setting takes true, false or smart, where true always fetches comments, never fetches them, and smart fetches only for posts with little or no text content. The recommended value is smart, and the threshold that decides what counts as little text is a separate setting:

bash
FETCH_COMMENTS=smart
TOP_COMMENTS_LIMIT=5
MIN_SELFTEXT_LENGTH=100

bash

A post with 100 characters or more of selftext is considered rich enough that comments add little, so the fetch is skipped. That is a sensible heuristic for image heavy posts, and it is also the place where the pipeline quietly loses information: a post with plenty of text but a discussion worth reading will not get its comments.

Caching covers the rest. Database backed caching is applied to every enrichment, including image descriptions, YouTube summaries, web content and comments, so a re-run of the same post does not pay for the same summarisation twice. The database in use is MongoDB, reached through pymongo, and it stores the data for historical analysis as well.

Docker Compose expects an external MongoDB, not a local one

The deployment path is Docker and Docker Compose, with Reddit credentials, a MongoDB connection and an LLM key as the prerequisites. The compose file defines a single app service, and the MongoDB service is commented out, with a note that an external MongoDB is used instead:

yaml
  app:
    build: .
    container_name: reddit_trend_app
    restart: always

bash

The app runs with host network mode so it can reach a database on the host, and it bind mounts the reports directory so the generated Markdown lands on your filesystem rather than inside the container. The image itself is small and based on the Python slim image:

dockerfile
FROM python:3.9-slim

WORKDIR /app

bash

and it ends by starting the scheduler rather than a one off report:

dockerfile
CMD ["python", "report_generation.py", "--schedule", "--interval", "24"]

bash

Here is the first wrinkle worth knowing before you start. The README environment sample points the connection string at a host named mongodb, while .env.example ships mongodb://localhost:27017. With host network mode the second value is usually the correct one, but the two files disagree, so the value you actually need depends on where your MongoDB lives.

Running one report by hand before trusting the schedule

The manual path is short enough to try before wiring up a schedule, and it is the better first step because a single run shows you exactly which enrichers are burning budget. Dependencies come from a pinned requirements file:

bash
pip install -r requirements.txt

bash

The pinned list includes praw for Reddit, pymongo for MongoDB, the groq and openai client libraries, schedule for the timer, jinja2 and markdown for report rendering, and youtube-transcript-api and firecrawl-py for the two network enrichers. Then a one time report for both languages:

bash
python report_generation.py --languages en zh

bash

and the recurring version:

bash
python report_generation.py --interval 24

bash

The environment controls which subreddits are polled and how much is fetched from each:

bash
POSTS_PER_SUBREDDIT=30
REDDIT_SUBREDDITS=LocalLLaMA,MachineLearning,singularity,LocalLLM,hackernews,LangChain,LLMDevs,Vectordatabase,Rag,ai_agents,datascience
REPORT_GENERATION_TIME=06:00
REPORT_LANGUAGES=en,zh

bash

Thirty posts across eleven subreddits is a small daily slice, and the generation time is set to 06:00 with a Central timezone baked into the image, which matches the description of reports refreshed in the early morning.

The alternative is a thin script of your own

A fair question is why not write a small Python script that pulls the same subreddits and asks a model for a summary. The honest answer is that you can, and for a single daily digest with no enrichment you would probably be faster that way.

The difference shows up in three places. The first is coverage: this project ships image analysis, transcript extraction, web page summarisation and comment filtering as ready components, each behind a flag, and writing those yourself is the bulk of the work. The second is caching: the MongoDB layer makes repeated runs cheap, which matters when a pipeline re-reads overlapping posts. The third is the output format, bilingual Markdown reports organised in year, month and day folders with symlinked latest files, so a reader can browse history and a script can pick up a stable path.

Against that, this approach ties you to an LLM provider, a Reddit API credential and a MongoDB instance, and it produces prose you cannot easily query. If you need rows in a database, a stable schema or reproducibility, a collector plus your own storage is the better shape.

An MIT licence and no published releases to upgrade from

The licence is MIT, which is a permissive choice and leaves most commercial use uncomplicated. No legal reading is offered here, and any specific compliance question belongs with your own counsel.

Maintenance is the weaker part of the picture. The repository is not archived and the last push was on 2026-10-19, so work is landing. However, the repository has no GitHub releases at all, which means there is no version to pin and no release notes to read when something breaks. Upgrades are therefore a matter of pulling main and hoping, or of pinning the commit yourself, and the dependency set is only pinned by requirements.txt, whose versions are old enough that a fresh install on a current Python may need attention. The Python base image is 3.9, which is the oldest supported branch of the language and a deliberate low footprint choice that also means you are not running on the newest runtime.

Editorial conclusion

reddit-ai-trends fits readers who want a fresh summary of AI chatter every morning without visiting a dozen subreddits, and the Docker Compose path plus the cron-free schedule loop make it cheap to run on a small host. It is the wrong tool for reproducible data collection, for anything that needs version pinning, or for a team that cannot spend LLM and Reddit API budget on enrichment. Before adopting it, copy .env.example to .env, set REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET and REDDIT_USER_AGENT, confirm that MONGODB_URI points at a MongoDB you actually run, and check whether the 24 hour schedule in the container CMD lines up with the REPORT_GENERATION_TIME value you want.

Frequently asked questions

Which API keys do I need to run reddit-ai-trends?

The README lists Reddit API credentials, an LLM API key for Groq or OpenRouter, and a MongoDB connection as the prerequisites. Copy .env.example to .env and fill in REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, REDDIT_USER_AGENT, LLM_PROVIDER and the matching provider key.

Which Reddit communities does reddit-ai-trends read?

The default list is LocalLLaMA, MachineLearning, singularity, LocalLLM, hackernews, LangChain, LLMDevs, Vectordatabase, Rag, ai_agents and datascience, set through the REDDIT_SUBREDDITS variable with 30 posts per subreddit.

How do I run it without Docker?

Install the pinned dependencies with pip install -r requirements.txt, then run python report_generation.py --languages en zh for a one time report or python report_generation.py --interval 24 to keep generating on an interval.

Official sources

  1. Issues
  2. License: MIT
  3. liyedanpdx/reddit-ai-trends on GitHub
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/liyedanpdx-reddit-ai-trends.svg)](https://hysenlabs.com/projects/liyedanpdx-reddit-ai-trends)

Was this useful?