{"slug": "slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to", "title": "SlothScroll: I Taught Gemma to Read Instagram So I Never Have To", "summary": "A developer built SlothScroll, an open-source tool that uses Google's open-weight Gemma model (gemma-4-26b-a4b-it) to read followed Instagram pages once a day and produce a topic-grouped email digest, filtering out ads, reposts and giveaways. A cloud browser driven by Browserbase and Stagehand visits public pages one at a time, while MongoDB Atlas dedupes posts via a unique index and Render runs the daily cron pipeline and site. Setting reasoning_effort to \"minimal\" cut a demo run from about 4 minutes to roughly 20 seconds, and moving topic assignment from per-page to per-post spread 16 posts across five topics instead of one.", "body_md": "*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady](https://dev.to/challenges/hacktoberfest-week3-2026-10-19)*\n\n## \n  \n  \n  What I Built\n\nEvery morning I opened Instagram \"just to catch up\", and every morning the feed won. One quick check became another, with ads, reposts and giveaways in between.\n\n**SlothScroll** is my lazy fix. It's a morning digest of the Instagram pages I follow. Once a day a cloud browser visits those pages for me. **Gemma**, Google's open-weight model, reads every new post and writes a one-line gist. It also sorts the post into a topic (Sports, Science, Finance, Tech…) and quietly drops ads, reposts and giveaways. What I get is **one calm page and one email**, grouped by topic, with the 1–3 posts actually worth opening.\n\nI read it in about two minutes with my coffee, then close the tab. I never open Instagram.\n\nWho gets to be lazier? Anyone who follows news, sports or creator pages to *stay informed*, not to scroll.\n\n## \n  \n  \n  Demo\n\n🔗 **Live:** [https://slothscroll-web-ngb7.onrender.com](https://slothscroll-web-ngb7.onrender.com)\n\nWhat you'll see in the video:\n\n- \n**Today's edition:** a greeting, the \"scrolling saved\" number, topic tabs, and Gemma's summary for each topic with its top picks\n- \n**The archive** , an RSS feed per page, and dark mode\n- \n**The morning email** , the same edition delivered to my inbox\n\n## \n  \n  \n  Code\n\nThe latest code is on the [`SlothScroll` branch](https://github.com/452Harsh/SnoozeFeed/tree/SlothScroll).\n\n## \n  \n  \n  How I Built It\n\n- \n**Gemma (`gemma-4-26b-a4b-it`)** is the brain. It runs through an OpenAI-compatible client set by environment variables (`AI_BASE_URL` ,`AI_MODEL` ), so the same code can point at a hosted endpoint or, by changing one variable, a local Ollama. I use it for three jobs:  1. \n**Per post:** a one-line gist, the post's topic, and whether it's an ad, repost or giveaway. All three come back as JSON from a single call. When a caption is only emojis and hashtags, Gemma looks at the image instead.\n  2. \n**Per page:** a fallback category when I don't set one.\n  3. \n**Per topic:** a 2–3 line summary plus the posts worth opening.\n- \n**Browserbase + Stagehand** give it a real browser. I log in once through Browserbase's live view, and a persisted context keeps that session for daily runs.\n- \n**MongoDB Atlas** is the data layer. The cron job writes, the website reads, and a unique index on the post URL means a post is never processed twice.\n- \n**Render** runs everything from one`render.yaml` Blueprint: a**cron job** for the daily pipeline and a**web service** for the site. Every secret is`sync: false` , so none live in the repo.\n- \n**The website** is server-rendered HTML on Hono, with no frontend framework. It has light and dark mode, works on mobile, and loads quickly.\n- \n**ElevenLabs** narrated the demo video.\n\n**Slow and steady by design:** one run per day, public pages only, visited one at a time with random pauses. A page that fails is noted, and the edition still ships. If Instagram asks for a login, SlothScroll **stops and tells me** instead of trying to get around it.\n\n### \n  \n  \n  What broke (and how I fixed it)\n\n- \n**Gemma was slow for this job.** A demo run took about 4 minutes because the model reasoned before every answer. Setting`reasoning_effort: \"minimal\"` brought it down to**about 20 seconds** , with the same quality for one-line gists.\n- \n**Everything was \"News\".** Topics were assigned per page, so a football page's posts and an IPO story all landed in News. Now Gemma chooses a topic**per post** in the same call, with no extra requests. On my real feed the same 16 posts went from one topic to five.\n- \n**The browser died mid-run.** Browserbase sessions end after 5 minutes by default, and a full run takes longer. Asking for a 30-minute session fixed it.\n- \n**Half-emoji headlines.** Shortening captions sometimes cut an emoji in half and left \"�\". The page now cleans those characters before showing them.\n\n## \n  \n  \n  Why Does Open Innovation Matter?\n\nWhat you follow says a lot about you. Your reading habits are personal, and an open-weight model means **this digest doesn't have to depend on one company's closed API**:\n\n- \n**I choose where it runs.** Gemma is reached through a plain OpenAI-compatible endpoint, so switching providers is an environment-variable change. The client is built to switch to a local Ollama the same way, so the posts never have to leave my machine.\n- \n**It's cheap enough to run every day forever.** A small open model is plenty for one-line gists and topic tags. It's a daily habit, not a premium feature.\n- \n**It's inspectable and forkable.** The prompts, the pipeline and the model are all open, so anyone can adapt SlothScroll to their own pages, language or topics.\n\n## \n  \n  \n  The Lazy Payoff\n\nFrom a real run this week, using a deliberately conservative estimate of **8 seconds per post**:\n\n- \n**16 posts** from my pages became**5 topics** and one page, about**2 minutes of scrolling saved** that day.\n- \n**0 times** I opened Instagram.\n\nThe real win is bigger than the 8-second math. One \"quick check\" usually turns into twenty minutes. SlothScroll ends the session before it starts, and it scales with the pages you follow: I've since added six more (The Verge, National Geographic, CNBC, Tasty, Netflix and 9GAG).\n\n## \n  \n  \n  Prize Categories\n\n- \n**Best Use of Gemma:** Gemma writes the gists, picks the topics, filters ads and summarizes each topic.\n- \n**Best Use of Render:** a Blueprint with a cron job for the agent pipeline and a web service for the front end.\n- \n**Best Use of Browserbase:** Stagehand drives a real browser with a persisted login, as a repeatable daily workflow.\n- \n**Best Use of MongoDB Atlas:** the database behind an app built on an open-weight model.\n- \n**Best Use of ElevenLabs:** narration for the demo video.", "url": "https://wpnews.pro/news/slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to", "canonical_source": "https://dev.to/452harsh/slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to-5f9f", "published_at": "2026-10-24 08:01:27+00:00", "updated_at": "2026-10-24 08:13:00.609313+00:00", "lang": "en", "topics": ["artificial-intelligence", "large-language-models", "ai-agents", "ai-tools", "generative-ai"], "entities": ["Gemma", "Google", "Browserbase", "Stagehand", "MongoDB Atlas", "Render", "Hono", "ElevenLabs"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to", "markdown": "https://wpnews.pro/news/slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to.md", "text": "https://wpnews.pro/news/slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to.txt", "jsonld": "https://wpnews.pro/news/slothscroll-i-taught-gemma-to-read-instagram-so-i-never-have-to.jsonld"}}