<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Arjun Vijay Prakash</title>
    <description>The latest articles on Forem by Arjun Vijay Prakash (@arjuncodess).</description>
    <link>https://forem.com/arjuncodess</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F867577%2F37aa027f-4b4e-4a99-8b22-8f4533ed960e.png</url>
      <title>Forem: Arjun Vijay Prakash</title>
      <link>https://forem.com/arjuncodess</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/arjuncodess"/>
    <language>en</language>
    <item>
      <title>I Finally Updated My 2-Year-Old Portfolio (Thanks to Antigravity)</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Wed, 21 Jan 2026 05:18:15 +0000</pubDate>
      <link>https://forem.com/arjuncodess/i-finally-updated-my-2-year-old-portfolio-thanks-to-antigravity-4i31</link>
      <guid>https://forem.com/arjuncodess/i-finally-updated-my-2-year-old-portfolio-thanks-to-antigravity-4i31</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hey! I'm Arjun. I'm 16, from Lucknow, India. I build stuff on the web, write about tech, and I'm the CTO at &lt;a href="https://github.com/pilot-ops-crm" rel="noopener noreferrer"&gt;Pilot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've shipped 20+ projects, have 34,000+ followers on DEV.to, and made $1,375 from technical writing. My research project got selected for INSEF Regional Fair too. This portfolio is basically proof that I actually do things.&lt;/p&gt;




&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://arjuncodess-portfolio-1081106407952.asia-south2.run.app"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;







&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;My portfolio was 2 years old. That's ancient in tech time. The projects were outdated. The design was ugly. It needed to go. &lt;a href="https://portfolio40-arjuncodess-projects.vercel.app/" rel="noopener noreferrer"&gt;Here's the old one&lt;/a&gt; if you want to see what I was working with.&lt;/p&gt;

&lt;p&gt;The last commit before this rebuild? September 15, 2024. Then nothing until January 2, 2026. By January 7, the whole thing was done. 5 days. &lt;a href="https://github.com/ArjunCodess/portfolio/pull/1" rel="noopener noreferrer"&gt;Here's the PR&lt;/a&gt; if you want to see the chaos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femvwied1ij57nnkkbq05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femvwied1ij57nnkkbq05.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;66 commits&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;78 files changed&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;+15,591 lines added, -9,667 lines removed&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Yeah. It was a lot.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fix
&lt;/h3&gt;

&lt;p&gt;I used &lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;Antigravity&lt;/a&gt;, Google's AI IDE. It made the whole thing way easier than I expected.&lt;/p&gt;

&lt;p&gt;Here's what I did:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added new projects and achievements&lt;/li&gt;
&lt;li&gt;Removed old stuff that didn't represent me anymore&lt;/li&gt;
&lt;li&gt;Made the design look actually good with animations and dark mode&lt;/li&gt;
&lt;li&gt;Cleaned up the clutter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The funny part? I did most of the data updates through Antigravity too. Like, my &lt;code&gt;resume.tsx&lt;/code&gt; file that runs the whole site? I just told the AI what to change and it changed it. Same with the markdown files for my chatbot.&lt;/p&gt;

&lt;p&gt;I barely typed anything. I just described what I wanted. True vibe coding. At this point, I'm not even sure if I can call myself a developer or just a really good prompter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Next.js 16 with App Router&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS and shadcn/ui&lt;/li&gt;
&lt;li&gt;Framer Motion for animations&lt;/li&gt;
&lt;li&gt;Google &lt;code&gt;gemini-3-flash&lt;/code&gt; for the AI stuff&lt;/li&gt;
&lt;li&gt;Vercel Postgres with pgvector for vector search&lt;/li&gt;
&lt;li&gt;Deployed on Google Cloud Run&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The RAG Chatbot
&lt;/h3&gt;

&lt;p&gt;So after I finished updating everything, I asked Antigravity what else I should add.&lt;/p&gt;

&lt;p&gt;It said: "RAG Chatbot."&lt;/p&gt;

&lt;p&gt;I said: "Okay, let's do it."&lt;/p&gt;

&lt;p&gt;Then Antigravity built it. And it actually works. Go try it on the portfolio.&lt;/p&gt;

&lt;p&gt;I also used &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;AI Studio&lt;/a&gt; to test prompts. I wanted the chatbot to sound like me, not some generic AI. That's also where I got my API key from.&lt;/p&gt;

&lt;p&gt;You can ask the chatbot anything about me. My projects, my background, my skills. It gives real answers based on actual facts about me. No made up stuff.&lt;/p&gt;

&lt;p&gt;Here's how it works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I have markdown files with info about me in &lt;code&gt;src/data/rag/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;These get turned into vector embeddings using Google Gemini's &lt;code&gt;text-embedding-004&lt;/code&gt; model&lt;/li&gt;
&lt;li&gt;When you ask a question, your question also becomes an embedding&lt;/li&gt;
&lt;li&gt;The system finds the most similar chunks from my knowledge base using Postgres and pgvector&lt;/li&gt;
&lt;li&gt;Those chunks plus your question go into &lt;code&gt;gemini-3-flash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The model writes a response based on the real facts and streams it back&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Other Cool Stuff
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Smooth animations with Framer Motion&lt;/li&gt;
&lt;li&gt;Dark mode that follows your system settings&lt;/li&gt;
&lt;li&gt;A gallery for my certificates&lt;/li&gt;
&lt;li&gt;Project cards with live links and GitHub repos&lt;/li&gt;
&lt;li&gt;A guestbook where people can leave messages&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;This was fun. What could have taken weeks took way less time because Antigravity did the heavy lifting. &lt;/p&gt;

&lt;p&gt;New year, new portfolio. Check it out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run:&lt;/strong&gt; &lt;a href="https://arjuncodess-portfolio-1081106407952.asia-south2.run.app" rel="noopener noreferrer"&gt;arjuncodess-portfolio-1081106407952.asia-south2.run.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Main Site:&lt;/strong&gt; &lt;a href="https://arjuncodess.is-a.dev/" rel="noopener noreferrer"&gt;arjuncodess.is-a.dev&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>I Built an AI-Powered Trend Analysis Tool Using the Virlo API (Here's How It Works)</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Thu, 08 Jan 2026 19:00:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/i-built-an-ai-powered-trend-analysis-tool-using-the-virlo-api-heres-how-it-works-3d4b</link>
      <guid>https://forem.com/arjuncodess/i-built-an-ai-powered-trend-analysis-tool-using-the-virlo-api-heres-how-it-works-3d4b</guid>
      <description>&lt;p&gt;So here's the thing.&lt;/p&gt;

&lt;p&gt;My friend was trying to grow his motivational page through trends. He kept telling me how he used to miss trends every time. By the time he noticed something was trending, it was already past its peak. He'd see creators hitting millions of views on a topic he was planning to cover, but by the time he posted, the moment had passed.&lt;/p&gt;

&lt;p&gt;I started looking into how to catch trends earlier. The tools he was using just showed him what was already popular. They'd say "this hashtag has 2.3 million posts," but that didn't help him decide what to do next.&lt;/p&gt;

&lt;p&gt;Should he use it? Was it too competitive already? Was there a better angle? The data never answered those questions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The problem wasn't a lack of data. It was a lack of meaning.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't love theory. When something bothers me, I build things. So I decided to make something small that would actually help. Something that would turn trends into actionable next steps, rather than just showing numbers.&lt;/p&gt;




&lt;h2&gt;
  
  
  The gap between seeing trends and using them
&lt;/h2&gt;

&lt;p&gt;Most tools that show you trending content do exactly that. They show you what's trending. That's it.&lt;/p&gt;

&lt;p&gt;Hashtag analytics platforms tell you which tags have the most posts. Video dashboards show you view counts. Trend aggregators surface topics with big spikes.&lt;/p&gt;

&lt;p&gt;All useful information, but they stop there.&lt;/p&gt;

&lt;p&gt;Most dashboards are built for looking at data, not for making decisions with it. They show you rows and columns and filters, but they don't tell you what to do next.&lt;/p&gt;

&lt;p&gt;Creators think differently. They want to know:&lt;/p&gt;

&lt;p&gt;What should I post today?&lt;br&gt;
What hashtags should I use?&lt;br&gt;
How can I connect this trend to my niche?&lt;br&gt;
When should I post for maximum reach?&lt;/p&gt;

&lt;p&gt;I wanted something that behaved more like a thinking partner.&lt;/p&gt;

&lt;p&gt;Something that would answer the question creators actually ask: &lt;strong&gt;&lt;em&gt;what should I do next?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  So I built the thing I wished existed
&lt;/h2&gt;

&lt;p&gt;I called it &lt;strong&gt;&lt;a href="https://contentcompass.streamlit.app/" rel="noopener noreferrer"&gt;ContentCompass&lt;/a&gt;&lt;/strong&gt;. It helps you "navigate" trends. That's it.&lt;/p&gt;

&lt;p&gt;I built it with &lt;strong&gt;Python&lt;/strong&gt; and &lt;strong&gt;Streamlit&lt;/strong&gt;. The reason is simple, it's fast!&lt;/p&gt;

&lt;p&gt;Streamlit lets you build interactive web apps in Python without dealing with frontend frameworks. You write Python, you get a UI. For a side project, that's perfect. I could build something functional in hours instead of days or weeks.&lt;/p&gt;

&lt;p&gt;Here's how it works. The app has four layers:&lt;/p&gt;



&lt;ol&gt;
&lt;li&gt;Awareness layer: &lt;strong&gt;The Trend Hub&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Shows what's happening right now across platforms&lt;/li&gt;
&lt;li&gt;Organises trends into three buckets: what's hottest, what's stable, and what's emerging&lt;/li&gt;
&lt;li&gt;That categorisation matters because different trends require different strategies&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3trpkdbzns55v9ea2bt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3trpkdbzns55v9ea2bt.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ol&gt;
&lt;li&gt;Context layer: &lt;strong&gt;The Video Vault&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Shows what's actually winning with real embedded videos&lt;/li&gt;
&lt;li&gt;You can watch them, see how they're structured, notice patterns&lt;/li&gt;
&lt;li&gt;Includes hashtags that made those videos successful&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmsm6jxg6tqfs7s3sg5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmsm6jxg6tqfs7s3sg5q.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ol&gt;
&lt;li&gt;Planning layer: &lt;strong&gt;The Weekly Blueprint&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Takes trends and turns them into a five-day content plan&lt;/li&gt;
&lt;li&gt;Suggests specific video ideas, hooks, hashtag strategies, and posting times&lt;/li&gt;
&lt;li&gt;Instead of staring at a blank calendar, you have five starting points&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8hy5lg8x0ak56hw808m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8hy5lg8x0ak56hw808m.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;ol&gt;
&lt;li&gt;Execution layer: &lt;strong&gt;The Brief Creator&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Turns any trend or idea into a shareable brief&lt;/li&gt;
&lt;li&gt;Includes why this trend matters, what format to use, which hashtags to choose, and when to post&lt;/li&gt;
&lt;li&gt;The kind of document you'd send to an editor or client&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felvzt6ds90o9nx1heujt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felvzt6ds90o9nx1heujt.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Each layer builds on the last.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7u984ae0gt61qgi46sk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7u984ae0gt61qgi46sk.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I added AI here because turning patterns into plans requires actual thinking. You can't just automate trend detection, but you can automate the translation from "this is trending" to "here's how to use it."&lt;/p&gt;

&lt;p&gt;I used Google's Gemini 3 Flash model for the content generation parts. Weekly plans and briefs. The stuff that requires reasoning, not just data lookup.&lt;/p&gt;

&lt;p&gt;I also deliberately didn't automate some things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Video selection&lt;/li&gt;
&lt;li&gt;Hashtag strategy selection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are judgment calls. The app gives you options, but you make the choice. That restraint was intentional.&lt;/p&gt;

&lt;p&gt;Too much automation feels like a black box. Too little feels like a data dump.&lt;/p&gt;

&lt;p&gt;None of this works without good data underneath. This is where Virlo did the heavy lifting.&lt;/p&gt;


&lt;h2&gt;
  
  
  Where the data comes from
&lt;/h2&gt;

&lt;p&gt;When I started building this, I had options. I could scrape social platforms directly, use multiple APIs and stitch them together, or build my own aggregation system.&lt;/p&gt;

&lt;p&gt;All of those sounded painful. Scraping breaks constantly. Multiple APIs mean multiple integrations and multiple points of failure. Building my own aggregation system means maintaining infrastructure I don't want to maintain.&lt;/p&gt;

&lt;p&gt;What I actually needed was reliable trend data across platforms. Trends that actually mean something. Hashtag data that's consistent. Video performance metrics I could trust.&lt;/p&gt;

&lt;p&gt;That's what &lt;strong&gt;Virlo&lt;/strong&gt; provides.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frrmfqu6n23yszu95l5jd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frrmfqu6n23yszu95l5jd.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finding &lt;a href="https://dev.virlo.ai/docs" rel="noopener noreferrer"&gt;Virlo's API&lt;/a&gt; changed how I built this project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Virlo is the world's largest short-form data aggregator.&lt;/strong&gt; They're analysing 1.5 million videos across TikTok, YouTube Shorts, and Instagram Reels. They track 268+ trends emerging every 24 hours. They're used by 1,700+ teams worldwide. This wasn't just another API. This was actual infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Virlo gives you real data from real platforms.&lt;/strong&gt; Their API connects to TikTok, YouTube, Instagram Reels, and more. You're not getting scraped data or estimates. You're getting actual trend signals that platforms are generating right now. Their data refreshes twice daily.&lt;/p&gt;

&lt;p&gt;The trends endpoint powers the Trend Hub. The hashtags endpoint provides analytics and stats. The videos endpoint surfaces top-performing content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cross-platform aspect matters.&lt;/strong&gt; Virlo aggregates across platforms like TikTok, YouTube Shorts and Instagram Reels, which helps avoid tunnel vision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The API works well.&lt;/strong&gt; Their &lt;a href="https://dev.virlo.ai/docs" rel="noopener noreferrer"&gt;API documentation&lt;/a&gt; is clear and straightforward. The API has credit costs. Trends cost more than hashtags. Videos cost more than niche lookups. That structure actually helped me design better because I couldn't just refresh data constantly. I had to cache intelligently and only fetch what users actually need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this means for builders:&lt;/strong&gt; If you're working on anything that needs trend data or social analytics, &lt;a href="https://virlo.ai/" rel="noopener noreferrer"&gt;Virlo is worth checking out&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I learned building this
&lt;/h2&gt;

&lt;p&gt;This wasn't about trends. Not really. It was about thinking clearly when everyone else is shouting numbers. Trends were just the excuse.&lt;/p&gt;

&lt;p&gt;When you're early on something, whether it's a creator account or a side business, clarity is everything. But clarity doesn't come from more data. It comes from better ways of processing data.&lt;/p&gt;

&lt;p&gt;ContentCompass is just one way. Not the only one. Probably not even the best one. But it's the one I needed.&lt;/p&gt;

&lt;p&gt;If something feels fuzzy, don't wait for clarity. Build a lens. Even a small one.&lt;/p&gt;

&lt;p&gt;Because.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Clarity often shows up after you ship.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ArjunCodess" rel="noopener noreferrer"&gt;
        ArjunCodess
      &lt;/a&gt; / &lt;a href="https://github.com/ArjunCodess/ContentCompass" rel="noopener noreferrer"&gt;
        ContentCompass
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI-powered trend intelligence and content planning tool for creators
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ContentCompass - AI-Powered Trend Intelligence &amp;amp; Content Planning Platform&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;
  AI-powered trend intelligence and content planning tool for creators — discover trending content, optimize hashtag strategies, and generate actionable briefs using Gemini AI
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;📝 Table of Contents&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#about" rel="noopener noreferrer"&gt;About&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#getting_started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#deployment" rel="noopener noreferrer"&gt;Deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#usage" rel="noopener noreferrer"&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#built_using" rel="noopener noreferrer"&gt;Built Using&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass/./docs/" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#authors" rel="noopener noreferrer"&gt;Authors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/ContentCompass#acknowledgement" rel="noopener noreferrer"&gt;Acknowledgments&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🧐 About 
&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;ContentCompass is a creator-focused trend intelligence and content planning tool built with Python + Streamlit. It features two modes: &lt;strong&gt;Demo Mode&lt;/strong&gt; (uses locally-generated JSON sample data, no API calls) and &lt;strong&gt;Live Mode&lt;/strong&gt; (uses Virlo API with BYOK authentication).&lt;/p&gt;

&lt;p&gt;The app helps creators discover trending content, optimize hashtag strategies, and generate actionable content briefs using Gemini AI. Users can explore trend hubs, analyze hashtag performance, scout content niches, browse top-performing videos, generate weekly content plans, and create professional briefs for their teams.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;Trend Hub&lt;/strong&gt;: Discover hottest, most stable, and emerging trends&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Hashtag Lab&lt;/strong&gt;: Generate strategic hashtag combinations (Safe…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ArjunCodess/ContentCompass" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





&lt;p&gt;If you want to check it out, the &lt;a href="https://github.com/ArjunCodess/ContentCompass/" rel="noopener noreferrer"&gt;&lt;strong&gt;code is on GitHub&lt;/strong&gt;&lt;/a&gt; and there's a &lt;a href="https://contentcompass.streamlit.app/" rel="noopener noreferrer"&gt;&lt;strong&gt;live demo on Streamlit Cloud&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Give it a try and see if it helps you turn trends into actual content ideas.&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>api</category>
      <category>news</category>
    </item>
    <item>
      <title>An Instagram Automation Tool That Turns Engagement into Sales</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Mon, 05 Jan 2026 07:54:51 +0000</pubDate>
      <link>https://forem.com/arjuncodess/an-instagram-automation-tool-that-turns-engagement-into-sales-23h7</link>
      <guid>https://forem.com/arjuncodess/an-instagram-automation-tool-that-turns-engagement-into-sales-23h7</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mux-2025-12-03"&gt;DEV's Worldwide Show and Tell Challenge Presented by Mux&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;Pilot&lt;/strong&gt;, an Instagram automation and deal management platform for creators, founders, and small teams who sell through Instagram.&lt;/p&gt;

&lt;p&gt;Pilot turns comments and DMs into a structured sales workflow. Instead of manually replying, losing leads, or tracking deals in screenshots, everything runs through one system: automated replies, lead capture, contact management, and deal tracking, all connected to your Instagram account.&lt;/p&gt;

&lt;p&gt;It's built for people who already have demand and want clarity, not hacks.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Pitch Video
&lt;/h2&gt;

&lt;p&gt;

&lt;iframe src="https://player.mux.com/IW14O2c8bEL1GrIhk7VyGheMijbpYllh8UZ5l8GTy02I" width="710" height="399"&gt;
&lt;/iframe&gt;



&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Live app: &lt;a href="https://pilot-ops.vercel.app" rel="noopener noreferrer"&gt;https://pilot-ops.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;App Repository: &lt;a href="https://github.com/pilot-ops-crm/app" rel="noopener noreferrer"&gt;https://github.com/pilot-ops-crm/app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Website Repository: &lt;a href="https://github.com/pilot-ops-crm/website" rel="noopener noreferrer"&gt;https://github.com/pilot-ops-crm/website&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign up&lt;/li&gt;
&lt;li&gt;Connect an Instagram business account&lt;/li&gt;
&lt;li&gt;Create a simple automation like "comment YES → send DM"&lt;/li&gt;
&lt;li&gt;Watch leads show up in the dashboard as contacts and deals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another way to test it is to try putting a comment on &lt;a href="https://www.instagram.com/reel/DQHJrzZDGLn/" rel="noopener noreferrer"&gt;this&lt;/a&gt; reel. Pilot will automatically reach out to you with the ebook described in the reel.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Story Behind It
&lt;/h2&gt;

&lt;p&gt;Instagram has quietly become a real sales channel. Creators close brand deals there. Small businesses sell products there. Coaches and founders run their entire pipeline through DMs.&lt;/p&gt;

&lt;p&gt;But the tooling hasn't caught up.&lt;/p&gt;

&lt;p&gt;Most people still manage everything manually. Replies are copy-pasted. Leads get buried. There's no visibility into who's serious and who's not.&lt;/p&gt;

&lt;p&gt;Pilot exists to bring structure to that chaos.&lt;br&gt;&lt;br&gt;
Not to replace how people sell on Instagram, but to support it with systems that scale.&lt;/p&gt;

&lt;p&gt;Once someone experiences Instagram with a real pipeline behind it, they don't go back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Built with &lt;strong&gt;Next.js (App Router)&lt;/strong&gt; and &lt;strong&gt;TypeScript&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL + Drizzle ORM&lt;/strong&gt; for structured data and deal tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instagram API&lt;/strong&gt; for account connection, comments, and DMs&lt;/li&gt;
&lt;li&gt;Event-driven workflows using &lt;strong&gt;Inngest&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;AI-powered assistant built with &lt;strong&gt;Vercel AI SDK + Google AI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Fully typed forms, tables, and dashboards using &lt;strong&gt;shadcn/ui&lt;/strong&gt; and &lt;strong&gt;TanStack Table&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Deployed on &lt;strong&gt;Vercel&lt;/strong&gt;, production-ready with Sentry monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A key focus was personalisation.&lt;br&gt;&lt;br&gt;
The AI assistant works off the user's actual business data, contacts, and deal history, not generic prompts or canned replies.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;By submitting this project, I confirm that my video adheres to Mux's terms of service: &lt;a href="https://www.mux.com/terms" rel="noopener noreferrer"&gt;https://www.mux.com/terms&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>muxchallenge</category>
      <category>showandtell</category>
      <category>video</category>
    </item>
    <item>
      <title>I Built a Zero-Miss Cancer Screening Model Using Routine Blood Tests</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Mon, 05 Jan 2026 07:50:30 +0000</pubDate>
      <link>https://forem.com/arjuncodess/i-built-a-zero-miss-cancer-screening-model-using-routine-blood-tests-5703</link>
      <guid>https://forem.com/arjuncodess/i-built-a-zero-miss-cancer-screening-model-using-routine-blood-tests-5703</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mux-2025-12-03"&gt;DEV's Worldwide Show and Tell Challenge Presented by Mux&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I developed the &lt;strong&gt;MEN2 Predictor&lt;/strong&gt;, a machine learning screening tool for a rare hereditary cancer syndrome called MEN2, which is caused by mutations in the RET gene.&lt;/p&gt;

&lt;p&gt;MEN2 often leads to medullary thyroid cancer if it's not caught early. In India, confirmation typically requires genetic testing, which costs around ₹20,000; as a result, many families delay or skip it.&lt;/p&gt;

&lt;p&gt;This project explores whether routine blood markers and basic clinical features can act as a first screening layer before sequencing.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Pitch Video
&lt;/h2&gt;

&lt;p&gt;

&lt;iframe src="https://player.mux.com/Uc02omls5kFgnuB61sqv5vkN01y22bhxviStEL92PhXyQ" width="710" height="399"&gt;
&lt;/iframe&gt;



&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;GitHub repository: &lt;a href="https://github.com/ArjunCodess/men2-predictor" rel="noopener noreferrer"&gt;https://github.com/ArjunCodess/men2-predictor&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Live demo (Gradio / Hugging Face): &lt;a href="https://huggingface.co/spaces/arjuncodess/men2-predictor" rel="noopener noreferrer"&gt;https://huggingface.co/spaces/arjuncodess/men2-predictor&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The demo lets you enter clinical features like calcitonin, CEA, age, and RET risk level and see the predicted cancer risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Story Behind It
&lt;/h2&gt;

&lt;p&gt;This started with a simple question: why does a life-saving diagnosis cost so much?&lt;/p&gt;

&lt;p&gt;MEN2 is rare, but missing it has serious consequences. Most screening pipelines assume access to genetic sequencing, which isn't realistic in many settings. Meanwhile, clinicians already collect blood markers like calcitonin and CEA and track basic clinical features.&lt;/p&gt;

&lt;p&gt;I wanted to see if that existing data could be used better.&lt;/p&gt;

&lt;p&gt;I built this project by aggregating real patient data from published studies and testing whether a model could prioritise safety over performance optics. The key requirement was clear: missing a cancer case was unacceptable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Trained on &lt;strong&gt;152 real patients&lt;/strong&gt; from &lt;strong&gt;20 peer-reviewed studies&lt;/strong&gt; across *&lt;em&gt;24 RET variants&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Implemented &lt;strong&gt;five different ML models&lt;/strong&gt; for cross-validation and comparison&lt;/li&gt;
&lt;li&gt;Focused on &lt;strong&gt;recall (sensitivity)&lt;/strong&gt; instead of headline accuracy&lt;/li&gt;
&lt;li&gt;Achieved &lt;strong&gt;100% recall on real patient data&lt;/strong&gt;, with zero documented cancers missed&lt;/li&gt;
&lt;li&gt;Explicitly tested how synthetic data augmentation affects recall&lt;/li&gt;
&lt;li&gt;End-to-end reproducible pipeline in Python with clear evaluation artefacts&lt;/li&gt;
&lt;li&gt;Deployed an interactive demo using Gradio for transparency&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project intentionally favours interpretability and safety over complexity.&lt;/p&gt;




&lt;h2&gt;
  
  
  Participants
&lt;/h2&gt;

&lt;p&gt;This project was not built in isolation, and I want to acknowledge the people who contributed meaningfully to it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Harnoor Kaur&lt;/strong&gt;&lt;br&gt;
A class 12 student from my school. She is not on dev[dot]to.&lt;br&gt;
Harnoor helped extensively with the research side of this project, including locating and compiling relevant peer-reviewed studies and assisting in sourcing and organising the clinical data used for model development.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shashwat Misra&lt;/strong&gt;&lt;br&gt;
Mentor on this project.&lt;br&gt;
Shashwat provided guidance throughout the development process, helped review the approach, and offered feedback on both the technical and research decisions that shaped the final pipeline.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Their support played an important role in turning this from an idea into a working, validated project.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;By submitting this project, I confirm that my video adheres to Mux's terms of service: &lt;a href="https://www.mux.com/terms" rel="noopener noreferrer"&gt;https://www.mux.com/terms&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>muxchallenge</category>
      <category>showandtell</category>
      <category>video</category>
    </item>
    <item>
      <title>What If Your Chat History Could Tell You the Truth?</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Mon, 05 Jan 2026 07:49:27 +0000</pubDate>
      <link>https://forem.com/arjuncodess/what-if-your-chat-history-could-tell-you-the-truth-1bg3</link>
      <guid>https://forem.com/arjuncodess/what-if-your-chat-history-could-tell-you-the-truth-1bg3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/mux-2025-12-03"&gt;DEV's Worldwide Show and Tell Challenge Presented by Mux&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;ChemistryCheck&lt;/strong&gt;, an AI-powered tool that analyses chat exports from WhatsApp, Telegram, and Instagram to show what's actually happening in a conversation.&lt;/p&gt;

&lt;p&gt;You upload a chat file, and it breaks down communication patterns: who initiates more, response delays, effort imbalance, message volume, word usage, emojis, and consistency over time.&lt;/p&gt;

&lt;p&gt;The goal is simple: turn vague feelings into clear signals.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Pitch Video
&lt;/h2&gt;

&lt;p&gt;

&lt;iframe src="https://player.mux.com/yABm00dtViRSeX53RSFYImxkHqy8WldXVu8hLGnwXofU" width="710" height="399"&gt;
&lt;/iframe&gt;



&lt;/p&gt;

&lt;p&gt;In the video, I explain the problem, why people miss red flags in chats, and how ChemistryCheck makes those patterns visible instead of emotional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Live app: &lt;a href="https://chemistrycheck.vercel.app" rel="noopener noreferrer"&gt;https://chemistrycheck.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;GitHub repo: &lt;a href="https://github.com/ArjunCodess/chemistrycheck" rel="noopener noreferrer"&gt;https://github.com/ArjunCodess/chemistrycheck&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Here's a sample chat analysis link:&lt;/strong&gt; &lt;a href="https://chemistrycheck.vercel.app/analysis/00d311b9-8619-4bae-8367-029aea4eeae6" rel="noopener noreferrer"&gt;https://chemistrycheck.vercel.app/analysis/00d311b9-8619-4bae-8367-029aea4eeae6&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to try it yourself:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sign up or log in&lt;/li&gt;
&lt;li&gt;Upload a WhatsApp (.txt), Telegram (.json), or Instagram (.json) chat export&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;[for the judges, I have uploaded three of my chat exports &lt;a href="https://github.com/ArjunCodess/chemistrycheck/tree/main/sample-messages" rel="noopener noreferrer"&gt;here&lt;/a&gt; so they can download it and test the product right away]&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait for the analysis to complete&lt;/li&gt;
&lt;li&gt;View insights on the dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Story Behind It
&lt;/h2&gt;

&lt;p&gt;This project came from personal experience.&lt;/p&gt;

&lt;p&gt;When a conversation starts hurting, people often rename the pain. We call it "trauma bonding," "mixed signals," or "bad timing." But the red flags usually show up much earlier in the chat itself.&lt;/p&gt;

&lt;p&gt;Uneven effort. Long gaps. One person is always initiating. Warm one day, cold the next.&lt;/p&gt;

&lt;p&gt;I built ChemistryCheck because I kept rereading chats and still couldn't tell what was real. I wanted something that looked at patterns instead of excuses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Highlights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Built with &lt;strong&gt;Next.js 16&lt;/strong&gt;, &lt;strong&gt;React 19&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt; and &lt;strong&gt;shadcn/ui&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Custom parsers for WhatsApp, Telegram, and Instagram chat exports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostgreSQL(Neon) + Drizzle ORM&lt;/strong&gt; for structured analysis storage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Gemini&lt;/strong&gt; for AI-generated insights and summaries&lt;/li&gt;
&lt;li&gt;Visual dashboards using &lt;strong&gt;Recharts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Secure file uploads with &lt;strong&gt;Vercel Blob&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Shareable, public analysis pages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The focus was on correctness, clarity, and explainability rather than flashy output.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;By submitting this project, I confirm that my video adheres to Mux's terms of service: &lt;a href="https://www.mux.com/terms" rel="noopener noreferrer"&gt;https://www.mux.com/terms&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>muxchallenge</category>
      <category>showandtell</category>
      <category>video</category>
    </item>
    <item>
      <title>Anthropic Bought Bun: Here's What It Really Means for Us</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Wed, 03 Dec 2025 20:30:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/anthropic-bought-bun-heres-what-it-really-means-for-us-kj2</link>
      <guid>https://forem.com/arjuncodess/anthropic-bought-bun-heres-what-it-really-means-for-us-kj2</guid>
      <description>&lt;p&gt;Anthropic didn't just buy a fast JavaScript runtime.&lt;/p&gt;

&lt;p&gt;They bought the one missing piece that turns Claude Code from a clever tool into a full-stack engine for how software will be built in the next decade.&lt;/p&gt;

&lt;p&gt;Yes, it's true. It's about control of the runtime layer at the exact moment AI agents begin writing, testing and shipping most of the world's code.&lt;/p&gt;

&lt;p&gt;Let's get straight to the point.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Anthropic acquired Bun because Claude Code hit &lt;strong&gt;a billion dollars&lt;/strong&gt; in revenue in &lt;strong&gt;six months&lt;/strong&gt; but depended on a &lt;strong&gt;runtime&lt;/strong&gt; they didn't control.&lt;/p&gt;

&lt;p&gt;Bun needed Anthropic because despite &lt;strong&gt;7 million monthly downloads&lt;/strong&gt;, it made &lt;strong&gt;zero&lt;/strong&gt; revenue.&lt;/p&gt;

&lt;p&gt;This deal creates &lt;strong&gt;agent-native infrastructure&lt;/strong&gt; where &lt;strong&gt;AI agents&lt;/strong&gt; write code using a fast, single-binary &lt;strong&gt;runtime&lt;/strong&gt;, fundamentally changing how software is built.&lt;/p&gt;

&lt;p&gt;Anthropic now controls both the &lt;strong&gt;runtime&lt;/strong&gt; and &lt;strong&gt;agent layer&lt;/strong&gt;, giving them leverage over competitors like OpenAI, Cursor, and Vercel.&lt;/p&gt;

&lt;p&gt;The risks include vendor lock-in, ecosystem fragmentation, and the closed-source nature of Claude Code.&lt;/p&gt;




&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Why Anthropic Needed Bun&lt;/li&gt;
&lt;li&gt;Why Bun Needed Anthropic&lt;/li&gt;
&lt;li&gt;The Bigger Shift&lt;/li&gt;
&lt;li&gt;The Competition&lt;/li&gt;
&lt;li&gt;Pros&lt;/li&gt;
&lt;li&gt;Cons&lt;/li&gt;
&lt;li&gt;Future of Software&lt;/li&gt;
&lt;li&gt;Final Thoughts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Anthropic Needed Bun
&lt;/h2&gt;

&lt;p&gt;Claude Code hit &lt;strong&gt;a billion dollars&lt;/strong&gt; in run-rate revenue in &lt;strong&gt;six months&lt;/strong&gt;. That growth created a bottleneck they couldn't ignore anymore: their entire product depended on a &lt;strong&gt;runtime&lt;/strong&gt; they didn't own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7md80ul85zjye9pc00v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp7md80ul85zjye9pc00v.png" alt="Image" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;
https://www.anthropic.com/news/anthropic-acquires-bun-as-claude-code-reaches-usd1b-milestone



&lt;p&gt;Bun is fast, but that's not the real reason it matters. The real reason is this: &lt;strong&gt;AI agents&lt;/strong&gt; need a &lt;strong&gt;runtime&lt;/strong&gt; that doesn't slow them down or break under pressure.&lt;/p&gt;

&lt;p&gt;Node is messy. It's slow to start. It depends on dozens of tools glued together.&lt;br&gt;
Bun is &lt;strong&gt;one binary&lt;/strong&gt;. It starts instantly. It runs tests fast. It bundles code tightly. It simplifies everything that slows agents down.&lt;/p&gt;

&lt;p&gt;When an &lt;strong&gt;AI agent&lt;/strong&gt; writes code, tests it, fixes it, retests it and repeats that loop a hundred times, a fast &lt;strong&gt;runtime&lt;/strong&gt; compounds into hours saved. Claude Code depends on that.&lt;/p&gt;

&lt;p&gt;Anthropic was already shipping Bun inside Claude Code as the runtime. That alone tells you how deep the dependency had become.&lt;/p&gt;

&lt;p&gt;So yes, we can conclude that buying Bun was kind of like survival for Anthropic.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Bun Needed Anthropic
&lt;/h2&gt;

&lt;p&gt;Bun was loved already.&lt;br&gt;
It was fast. It was growing. It had &lt;strong&gt;7 million downloads&lt;/strong&gt; a month.&lt;br&gt;
But it had one massive problem: &lt;strong&gt;it made no money&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The team had raised &lt;strong&gt;$26 million&lt;/strong&gt;. They had a runway, yes, but no real business model.&lt;br&gt;
They didn't want to run a cloud hosting service. They didn't want to build an enterprise plan. They didn't want to do the boring parts. They wanted to ship code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshb4k8sqbngmb6ucfg9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshb4k8sqbngmb6ucfg9l.png" alt="Image" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;
https://bun.com/blog/bun-joins-anthropic



&lt;p&gt;If Bun stayed independent, every year would become more stressful. More users. More features. More expectations.&lt;/p&gt;

&lt;p&gt;Same revenue: &lt;strong&gt;zero&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enterprise companies asked a fair question:&lt;br&gt;
&lt;em&gt;If we bet our org on Bun, will it even exist in five years?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now the answer is yes. Anthropic pays the bills. Bun stays &lt;strong&gt;open source&lt;/strong&gt;. The team keeps shipping. The existential risk disappears.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Shift
&lt;/h2&gt;

&lt;p&gt;Forget the corporate story. Think about the everyday workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbyy4s0acq7mtwjehno0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbyy4s0acq7mtwjehno0.png" alt="Image" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;
https://bun.com/blog/bun-joins-anthropic



&lt;h3&gt;
  
  
  1. Faster feedback loops
&lt;/h3&gt;

&lt;p&gt;Claude Code runs on Bun. This means every time Claude generates or tests code, it gets answers faster. Developers feel that as instant scaffolding, quicker tests and shorter debugging cycles.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. One runtime instead of ten tools
&lt;/h3&gt;

&lt;p&gt;Modern JavaScript development is a mess of npm, node, webpack, jest and other tools.&lt;br&gt;
Bun turns it into one command. AI agents love this because they hate complexity. Humans love this because complexity steals time.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Single-binary everything
&lt;/h3&gt;

&lt;p&gt;Bun can bundle code into &lt;strong&gt;one executable&lt;/strong&gt;. No Node installed. No juggling versions.&lt;br&gt;
This solves the biggest pain point in enterprise environments and in agent sandboxes.&lt;/p&gt;

&lt;p&gt;This is why Anthropic didn't build its CLI in &lt;strong&gt;Rust&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They didn't need to.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bun made &lt;strong&gt;single-binary&lt;/strong&gt; possible without the rewrite.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Node compatibility becomes optional
&lt;/h3&gt;

&lt;p&gt;AI-generated code doesn't care about the past. It cares about what works best now.&lt;br&gt;
If Bun becomes the default environment for Claude Code, developers slowly shift habits. They start writing for Bun first. Node second.&lt;/p&gt;

&lt;p&gt;That shift matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Competition
&lt;/h2&gt;

&lt;p&gt;This deal hits every major player in the dev tools world.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI
&lt;/h3&gt;

&lt;p&gt;They rewrote their CLI in &lt;strong&gt;Rust&lt;/strong&gt;. That slowed the iteration.&lt;/p&gt;

&lt;p&gt;Bun would've prevented that. Now they're behind on &lt;strong&gt;runtime&lt;/strong&gt; speed and developer experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cursor and Windsurf
&lt;/h3&gt;

&lt;p&gt;Both depend on Claude models. Neither controls a &lt;strong&gt;runtime&lt;/strong&gt;.&lt;br&gt;
Anthropic now controls the &lt;strong&gt;runtime&lt;/strong&gt; and the &lt;strong&gt;agent layer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's leverage. And some damn good leverage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Replit
&lt;/h3&gt;

&lt;p&gt;They own their cloud. Now Anthropic owns the runtime that powers AI-native dev flows. Replit will feel this pressure hard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vercel
&lt;/h3&gt;

&lt;p&gt;Next.js is tied to Node. Bun is faster and more future-proof for &lt;strong&gt;AI agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If developers shift toward &lt;strong&gt;agent-first workflows&lt;/strong&gt;, Vercel must adapt or lose relevance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pros
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Bun becomes the default AI-native runtime
&lt;/h3&gt;

&lt;p&gt;You won't need to think about Node versions or dependency hell.&lt;/p&gt;

&lt;p&gt;Claude Code will generate code that runs in Bun out of the box.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Agent workflows take over early development
&lt;/h3&gt;

&lt;p&gt;Scaffolding, wiring, testing, rewriting. These tasks shift entirely to Claude Code.&lt;/p&gt;

&lt;p&gt;Humans focus on architecture, taste and decisions. Machines handle the repetitive parts.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. More Bun-native tools and frameworks
&lt;/h3&gt;

&lt;p&gt;Think "Next.js for agents."&lt;/p&gt;

&lt;p&gt;New frameworks will rise around Bun because it's the fastest path for &lt;strong&gt;AI-assisted development&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Enterprises standardise on Bun for internal tools
&lt;/h3&gt;

&lt;p&gt;It's a safer bet now. &lt;strong&gt;Anthropic backing&lt;/strong&gt; removes the fear of collapse.&lt;/p&gt;




&lt;h2&gt;
  
  
  Cons
&lt;/h2&gt;

&lt;p&gt;Even with all the optimism, there are real dangers.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Vendor trust
&lt;/h3&gt;

&lt;p&gt;If Anthropic ever twists Bun toward Claude Code's needs at the cost of the wider community, &lt;strong&gt;trust&lt;/strong&gt; won't just weaken; it will collapse instantly.&lt;/p&gt;

&lt;p&gt;Developers don't wait around when a core tool feels captured. They fork, they migrate, and they warn everyone else.&lt;/p&gt;

&lt;p&gt;That kind of fracture can split an ecosystem for years.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Ecosystem fragmentation
&lt;/h3&gt;

&lt;p&gt;You could end up with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bun for &lt;strong&gt;AI-driven work&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Node for legacy systems&lt;/li&gt;
&lt;li&gt;Deno in niche spaces&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not the cleanest world, but a likely one.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Closed-source Claude Code
&lt;/h3&gt;

&lt;p&gt;Bun is open, Claude Code is &lt;strong&gt;not&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That alone creates a structural imbalance where one half of the stack is transparent, and the other is locked away.&lt;/p&gt;

&lt;p&gt;If Anthropic keeps the core agent tooling closed, suspicion will grow fast.&lt;/p&gt;

&lt;p&gt;Developers hate black boxes, and pressure to open the chain will only intensify.&lt;/p&gt;

&lt;p&gt;Maybe this won't matter much in the end, or maybe it will become a real problem. Honestly, it's impossible to say right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Future of Software
&lt;/h2&gt;

&lt;p&gt;This deal marks the beginning of &lt;strong&gt;agent-native infrastructure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The old world looked like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;humans write code&lt;/li&gt;
&lt;li&gt;tools help&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The new world looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;agents&lt;/strong&gt; write code&lt;/li&gt;
&lt;li&gt;humans guide, approve and design&lt;/li&gt;
&lt;li&gt;the &lt;strong&gt;runtime&lt;/strong&gt; must be fast, simple and predictable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bun fits that world perfectly.&lt;/p&gt;

&lt;p&gt;Bun removes friction. Together, they make software development faster than any team of humans alone.&lt;/p&gt;

&lt;p&gt;This is the first clear sign that the &lt;strong&gt;runtime layer&lt;/strong&gt; and the &lt;strong&gt;AI layer&lt;/strong&gt; will merge.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;At the end of the day, this move is just about &lt;strong&gt;momentum&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Anthropic grabbed the one piece of the stack that turns Claude Code from a cool tool into something that can reshape how software is built.&lt;/p&gt;

&lt;p&gt;Bun gets &lt;strong&gt;stability&lt;/strong&gt;.&lt;br&gt;
Anthropic gets &lt;strong&gt;speed&lt;/strong&gt;.&lt;br&gt;
Developers get a cleaner path into an &lt;strong&gt;AI-native workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If Anthropic handles this with care, everyone wins. If they don't, the community will push back hard. Simple as that.&lt;/p&gt;

&lt;p&gt;And that's it for today, folks!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;br&gt;
Have a great day! Until next time :)&lt;/p&gt;

</description>
      <category>news</category>
      <category>performance</category>
      <category>architecture</category>
      <category>discuss</category>
    </item>
    <item>
      <title>wrote this breakdown of the best proxy and scraper apis for 2025. simple, honest and actually useful. check it out if you want 👇</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Wed, 03 Dec 2025 08:30:44 +0000</pubDate>
      <link>https://forem.com/arjuncodess/wrote-this-breakdown-of-the-best-proxy-and-scraper-apis-for-2025-simple-honest-and-actually-4b2i</link>
      <guid>https://forem.com/arjuncodess/wrote-this-breakdown-of-the-best-proxy-and-scraper-apis-for-2025-simple-honest-and-actually-4b2i</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no" class="crayons-story__hidden-navigation-link"&gt;11 Powerful Proxy &amp;amp; Web Scraper APIs You Should Use in 2025 🤯&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/arjuncodess" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F867577%2F37aa027f-4b4e-4a99-8b22-8f4533ed960e.png" alt="arjuncodess profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/arjuncodess" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Arjun Vijay Prakash
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Arjun Vijay Prakash
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-3079243" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/arjuncodess" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F867577%2F37aa027f-4b4e-4a99-8b22-8f4533ed960e.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Arjun Vijay Prakash&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Dec 3 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no" id="article-link-3079243"&gt;
          11 Powerful Proxy &amp;amp; Web Scraper APIs You Should Use in 2025 🤯
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/news"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;news&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webscraping"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webscraping&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;18&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>webdev</category>
      <category>webscraping</category>
      <category>productivity</category>
      <category>news</category>
    </item>
    <item>
      <title>11 Powerful Proxy &amp; Web Scraper APIs You Should Use in 2025 🤯</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Wed, 03 Dec 2025 08:30:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no</link>
      <guid>https://forem.com/arjuncodess/11-powerful-proxy-web-scraper-apis-you-should-use-in-2025-12no</guid>
      <description>&lt;p&gt;Web scraping has changed completely in the last few years.&lt;/p&gt;

&lt;p&gt;Anti-bot systems got smarter. Websites got heavier. And AI teams suddenly needed way more &lt;strong&gt;real-time, clean, structured data.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're building anything related to AI training, RAG pipelines, SEO monitoring, e-commerce analytics, or market research, &lt;strong&gt;the quality of your proxy + scraping stack matters more than your code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This guide walks you through 11 services worth checking out in 2025.&lt;/p&gt;

&lt;p&gt;[If you're short on time, jump to the TL;DR section directly.]&lt;/p&gt;

&lt;p&gt;Each one solves a different problem. Each one fits a different scale.&lt;/p&gt;

&lt;p&gt;Let's jump in!&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Table of Contents&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;ThorData&lt;/li&gt;
&lt;li&gt;Bright Data&lt;/li&gt;
&lt;li&gt;Oxylabs&lt;/li&gt;
&lt;li&gt;Decodo (Smartproxy)&lt;/li&gt;
&lt;li&gt;Zyte&lt;/li&gt;
&lt;li&gt;Crawlbase&lt;/li&gt;
&lt;li&gt;Apify&lt;/li&gt;
&lt;li&gt;Webshare&lt;/li&gt;
&lt;li&gt;SOAX&lt;/li&gt;
&lt;li&gt;ScraperAPI&lt;/li&gt;
&lt;li&gt;IPRoyal&lt;/li&gt;
&lt;li&gt;TL;DR // How to Choose the Right Tool&lt;/li&gt;
&lt;li&gt;Final Thoughts&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. ThorData: The All-in-One Web Data Stack (My Top Pick)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhbrv44vwzvc7h1t2yxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhbrv44vwzvc7h1t2yxu.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want something that "just works," this is the one to start with.&lt;/p&gt;

&lt;p&gt;ThorData gives you 60M+ residential proxies, 120+ scraper APIs, and ready-to-use datasets, all packed into a clean interface that feels far less painful than most scraping tools.&lt;/p&gt;

&lt;p&gt;Try it here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.thordata.com/products/web-scraper/?ls=EDBORvrR&amp;amp;lk=wb" rel="noopener noreferrer"&gt;ThorData Web Scraper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thordata.com/products/residential-proxies/?ls=EDBORvrR&amp;amp;lk=wb" rel="noopener noreferrer"&gt;ThorData Residential Proxies&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why it's strong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;60M+ residential IPs across 190+ countries&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;99.9% uptime and 99.7% success rate&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;120+ pre-built scraper APIs&lt;/strong&gt; for Google, Amazon, YouTube, Zillow, and more&lt;/li&gt;
&lt;li&gt;Real mobile IPs for tough targets&lt;/li&gt;
&lt;li&gt;Structured JSON, CSV, XLSX output&lt;/li&gt;
&lt;li&gt;No-code scraper builder&lt;/li&gt;
&lt;li&gt;Ready-to-use datasets for AI training and RAG&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bonus: Mention &lt;em&gt;Thordata&lt;/em&gt; when registering to get free residential proxies + 2000 SERP API calls.&lt;/p&gt;

&lt;h3&gt;
  
  
  A few extra perks:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;💰 Use code THOR66 for 30% off your first purchase&lt;/li&gt;
&lt;li&gt;🔗 Register with invitation code 0HSUJ23G or
click here: &lt;a href="https://dashboard.thordata.com/register?invitation_code=0HSUJ23G" rel="noopener noreferrer"&gt;https://dashboard.thordata.com/register?invitation_code=0HSUJ23G&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building AI apps or scraping at scale, start here. It's the fastest way to skip the annoying setup phase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.thordata.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Bright Data: Enterprise-Level Everything
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30430c3e8x9fi5h2dnfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30430c3e8x9fi5h2dnfc.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bright Data is basically the "AWS of web data." Huge infrastructure. Lots of control. Tons of features. If you're an enterprise team with compliance needs and &lt;strong&gt;a massive budget&lt;/strong&gt;, this is your playground.&lt;/p&gt;

&lt;p&gt;Where it excels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;150M+ proxies&lt;/li&gt;
&lt;li&gt;Strong compliance framework&lt;/li&gt;
&lt;li&gt;Web Unblocker handles CAPTCHAs automatically&lt;/li&gt;
&lt;li&gt;High reliability, high throughput&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great for large companies, not small budgets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brightdata.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Oxylabs: AI-Smart Web Scraping
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj0eujxkivbtnh0jqhv0m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj0eujxkivbtnh0jqhv0m.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oxylabs built an AI assistant called OxyCopilot that lets you describe what you want scraped in plain English. It figures out selectors and parsing logic for you.&lt;/p&gt;

&lt;p&gt;Why it's good:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;100M+ IPs&lt;/li&gt;
&lt;li&gt;AI-powered scraping and parsing&lt;/li&gt;
&lt;li&gt;Strong SERP and e-commerce scraping tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of this as the "smart" version of Bright Data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://oxylabs.io" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Decodo (Smartproxy): Easy Scraper APIs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsj9tlxpbj43u2n064brt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsj9tlxpbj43u2n064brt.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Smartproxy recently rebranded to Decodo, but the idea is the same: simple, clean scraping APIs that work without setup headaches.&lt;/p&gt;

&lt;p&gt;Best parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;125M+ IPs&lt;/li&gt;
&lt;li&gt;Ready-made APIs for Google, Amazon, social media, and e-commerce&lt;/li&gt;
&lt;li&gt;Friendly pricing&lt;/li&gt;
&lt;li&gt;Very easy for beginners&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good if you want instant structured data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://decodo.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Zyte: Built for Complicated Websites
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc0jj5c6a4suzt2qlvod.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc0jj5c6a4suzt2qlvod.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Zyte (old Scrapinghub) is still the most "serious" scraping company for enterprises. If you're dealing with complex, dynamic sites that break your crawlers every week, Zyte is worth it.&lt;/p&gt;

&lt;p&gt;Why people use it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI Extraction that reads pages without selectors&lt;/li&gt;
&lt;li&gt;Smart Proxy Manager&lt;/li&gt;
&lt;li&gt;Compliance help from actual experts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's more expensive but gives you peace of mind.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zyte.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Crawlbase: AI-Driven Proxy Gateway
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56chc5s4jdq5rbwsdac1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56chc5s4jdq5rbwsdac1.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Crawlbase is underrated. Simple API. Smart proxy rotation. AI-powered retry logic. Zero configuration headaches.&lt;/p&gt;

&lt;p&gt;Highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mix of datacenter + residential&lt;/li&gt;
&lt;li&gt;AI that detects blocks and retries automatically&lt;/li&gt;
&lt;li&gt;Pay only for successful requests&lt;/li&gt;
&lt;li&gt;Built-in cloud storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Low stress, high success rate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crawlbase.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Apify: Full Automation Cloud
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mbn79hz2yc7v8u5rghe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4mbn79hz2yc7v8u5rghe.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apify is not "just a scraper." It's basically a platform where you run scraper scripts in the cloud, schedule them, store results, and even automate browser tasks.&lt;/p&gt;

&lt;p&gt;Why it's useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;200+ ready-made scrapers ("actors")&lt;/li&gt;
&lt;li&gt;Crawlee, great Node.js library&lt;/li&gt;
&lt;li&gt;Built-in proxy rotation&lt;/li&gt;
&lt;li&gt;Cloud scheduling and job monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perfect for developers who like full control.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apify.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Webshare: Best Low-Budget Option
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6td1k76or3mtv6vfo0ix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6td1k76or3mtv6vfo0ix.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're new to scraping or building something small, Webshare is the easiest and cheapest way to get started.&lt;/p&gt;

&lt;p&gt;What stands out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free tier with 10 proxies&lt;/li&gt;
&lt;li&gt;Datacenter proxies starting at $2.99/month&lt;/li&gt;
&lt;li&gt;Simple dashboard, zero friction&lt;/li&gt;
&lt;li&gt;Good speeds for the price&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great for beginners or budget projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.webshare.io" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  9. SOAX: Extreme Geo Targeting
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w7ypxiflf42fo6p4hv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w7ypxiflf42fo6p4hv9.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SOAX is the first tool I recommend to anyone who needs exact locations, ISP targeting, or mobile carrier-specific scraping.&lt;/p&gt;

&lt;p&gt;What it's good at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8.5M+ IPs&lt;/li&gt;
&lt;li&gt;ASN targeting&lt;/li&gt;
&lt;li&gt;Carrier targeting&lt;/li&gt;
&lt;li&gt;Strong concurrency support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useful for advanced experiments, ad verification, or regional testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://soax.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  10. ScraperAPI: Plug-and-Play Simplicity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftslnqosylnnv61zmo36t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftslnqosylnnv61zmo36t.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ScraperAPI is built for people who want scraping without learning scraping.&lt;/p&gt;

&lt;p&gt;One endpoint. That's it.&lt;/p&gt;

&lt;p&gt;Why it's popular:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic proxy rotation&lt;/li&gt;
&lt;li&gt;Built-in CAPTCHA solving&lt;/li&gt;
&lt;li&gt;JavaScript rendering&lt;/li&gt;
&lt;li&gt;Simple pricing&lt;/li&gt;
&lt;li&gt;Super easy to integrate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to get data fast without thinking, this is the one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.scraperapi.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  11. IPRoyal: Best for the Lowest Prices
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1fr22c7144e81bureyx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1fr22c7144e81bureyx.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IPRoyal is the "cheapest-but-still-decent" provider. Great for people experimenting or running smaller-scale workflows.&lt;/p&gt;

&lt;p&gt;What makes it appealing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Residential proxies from $1.75/GB&lt;/li&gt;
&lt;li&gt;Datacenter and ISP options&lt;/li&gt;
&lt;li&gt;Good for multi-accounting&lt;/li&gt;
&lt;li&gt;Simple dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If cost is the priority, this is the one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://iproyal.com" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check it out 🔥&lt;/a&gt;
&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR // How to Choose the Right Tool
&lt;/h2&gt;

&lt;p&gt;No tool is "the best." It depends on what you're building.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Use Case&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Best Options&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI and RAG pipelines&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ThorData, Oxylabs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Enterprise-scale + compliance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Bright Data, Zyte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Zero-stress setup&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ScraperAPI, Decodo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Custom scrapers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Apify, Crawlbase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Budget scraping&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Webshare, IPRoyal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Precise geo-targeting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SOAX&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;2025 is the year scraping finally stopped being "a hacky developer thing" and became a real data infrastructure layer.&lt;/p&gt;

&lt;p&gt;Every one of these tools has its own use case, and most offer trials, so test freely before you commit.&lt;/p&gt;

&lt;p&gt;But if you want to start with something powerful, simple, and friendly for AI workflows… &lt;strong&gt;start with ThorData.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They give you an instant way to scrape at scale, 120+ APIs you don't have to build, and a huge residential proxy network to keep things stable.&lt;/p&gt;

&lt;p&gt;If you want to try it, here's everything again:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.thordata.com/products/web-scraper/?ls=EDBORvrR&amp;amp;lk=wb" rel="noopener noreferrer"&gt;ThorData Web Scraper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thordata.com/products/residential-proxies/?ls=EDBORvrR&amp;amp;lk=wb" rel="noopener noreferrer"&gt;ThorData Residential Proxies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🎁 Free trial included&lt;/li&gt;
&lt;li&gt;💰 Use code THOR66 for 30% off&lt;/li&gt;
&lt;li&gt;🔗 Invitation code 0HSUJ23G or &lt;a href="https://dashboard.thordata.com/register?invitation_code=0HSUJ23G" rel="noopener noreferrer"&gt;https://dashboard.thordata.com/register?invitation_code=0HSUJ23G&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

&lt;p&gt;Have a great day! Until next time :)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>webscraping</category>
      <category>productivity</category>
      <category>news</category>
    </item>
    <item>
      <title>How I Built an AI-Powered SERP Tracker Using n8n &amp; Bright Data</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Tue, 26 Aug 2025 18:30:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/how-i-built-an-ai-powered-serp-tracker-using-n8n-bright-data-3604</link>
      <guid>https://forem.com/arjuncodess/how-i-built-an-ai-powered-serp-tracker-using-n8n-bright-data-3604</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata-n8n-2025-08-13"&gt;AI Agents Challenge powered by n8n and Bright Data&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Checking where your site ranks for a keyword shouldn't feel like torture.&lt;/p&gt;

&lt;p&gt;Yet every SEO still burns hours hopping between Google, Bing, Yahoo, DuckDuckGo, copy-pasting, scrolling, and guessing.&lt;/p&gt;

&lt;p&gt;It's slow. It's messy. And it's killing momentum.&lt;/p&gt;

&lt;p&gt;That's why I built RankSniper: a Telegram bot that does the grunt work in seconds and gives you clean, instant rankings across all major search engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bbghm8bydv7kcy9xj3x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bbghm8bydv7kcy9xj3x.png" alt="Image" width="626" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this challenge, I built &lt;strong&gt;RankSniper&lt;/strong&gt;, &lt;em&gt;a Telegram bot designed to track keyword rankings across multiple search engines: Google, Bing, Yahoo, and DuckDuckGo.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The problem it solves is simple but crucial for digital marketers, SEO specialists, and webmasters: manually checking keyword positions for domains is tedious, inconsistent, and time-consuming.&lt;/p&gt;

&lt;p&gt;RankSniper automates this process, allowing users to instantly find where their domain ranks for any keyword, either across all supported search engines or on a specific one.&lt;/p&gt;

&lt;p&gt;With RankSniper, you no longer have to switch tabs, copy-paste keywords, or deal with browser restrictions.&lt;/p&gt;

&lt;p&gt;The bot accepts natural language queries like "Check example.com for best shoes" or "How does vercel.com rank for vercel?"&lt;/p&gt;

&lt;p&gt;This is powered by n8n's AI Agent node connected with Gemini 2.5 Flash, which parses free-form text into structured domain/keyword/engine instructions for the rest of the workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;You can interact with the bot on Telegram using &lt;a href="https://t.me/RankSniperBot" rel="noopener noreferrer"&gt;this link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once started, you can run natural language commands like "Check example.com for best shoes" or "How does vercel.com rank for vercel?".&lt;/p&gt;

&lt;p&gt;Some screenshots:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6o2r93yc8s5l14dn2qv7.png" alt="Image" width="800" height="1459"&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40nrm1wou14yrku4sa46.png" alt="Image" width="800" height="1521"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  n8n Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1pfz30mz82odjo3art4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft1pfz30mz82odjo3art4.png" alt="Image" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The full n8n workflow JSON is &lt;a href="https://gist.github.com/ArjunCodess/74cb564b6083b34d0a32410117b641a8" rel="noopener noreferrer"&gt;here&lt;/a&gt; for anyone interested in inspecting or reusing the setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  Technical Implementation
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrcmn1v2dz445d0e4lvt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrcmn1v2dz445d0e4lvt.png" alt="Image" width="800" height="1411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RankSniper is built entirely within &lt;strong&gt;n8n&lt;/strong&gt;, using a combination of code nodes, the AI Agent node, Bright Data's Verified Node, Airtable logging nodes and Telegram nodes for the full process.&lt;/p&gt;

&lt;p&gt;Here's the breakdown of the configuration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;System Instructions&lt;/strong&gt;: The bot operates as a query processor for domain-keyword pairs. It receives input from Telegram, interprets user queries via the AI Agent, and constructs the search engine URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Choice&lt;/strong&gt;: The system combines AI-driven natural language parsing (Gemini) with rule-based ranking extraction. The AI handles messy human input.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt;: Each query is stateless, processed in real time. We do not persist data beyond the current request, but the structure can be extended to store historical rankings in a database for trend analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tools Used&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;n8n&lt;/strong&gt;: Orchestrates the workflow, triggers on Telegram commands, and splits batch requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Agent Node&lt;/strong&gt;: &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bright Data Verified Node&lt;/strong&gt;: Handles the extraction of raw HTML from search engines, bypassing potential anti-bot restrictions and ensuring consistent data retrieval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Telegram Nodes&lt;/strong&gt;: Sends start messages, help messages, and structured rank results back to the user.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Airtable&lt;/strong&gt;: Stores every query result (domain, keyword, rank, search engine, timestamp) to build a historical record of rankings.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  Bright Data Verified Node
&lt;/h3&gt;

&lt;p&gt;Bright Data's Verified Node is crucial in this workflow because direct scraping of search engines is often blocked or rate-limited.&lt;/p&gt;

&lt;p&gt;The node allows RankSniper to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetch search engine results reliably for Google, Bing, Yahoo, and DuckDuckGo.&lt;/li&gt;
&lt;li&gt;Handle dynamic pages that require JavaScript rendering, especially DuckDuckGo and Yahoo.&lt;/li&gt;
&lt;li&gt;Maintain speed and accuracy across multiple concurrent requests.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Without Bright Data, the bot would struggle to provide accurate rankings and would be prone to IP bans, resulting in unreliable output.&lt;/p&gt;




&lt;h3&gt;
  
  
  Airtable Logging
&lt;/h3&gt;

&lt;p&gt;Airtable acts as the memory layer for RankSniper.&lt;br&gt;
Each time a query is run, the results are written into an Airtable base with fields for domain, keyword, rank, engine, and timestamp.&lt;/p&gt;

&lt;p&gt;This unlocks two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;History tracking&lt;/strong&gt;: users (or me) can analyse how rankings evolve over days/weeks instead of just checking one-off results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual dashboards&lt;/strong&gt;: Airtable views and charts allow quick trend analysis and competitor comparisons.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the future, this foundation will also enable the triggering of alerts when a rank changes significantly.&lt;/p&gt;

&lt;p&gt;I also kept the base public for inspection, check it out &lt;a href="https://airtable.com/apprGnAcfjvuFiqPN/shrSwk0Pk4OYcTSLq" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Journey + Thoughts
&lt;/h2&gt;

&lt;p&gt;Building RankSniper was an eye-opening journey in automation, search engine quirks, and parsing HTML structures reliably.&lt;/p&gt;

&lt;p&gt;I started with Google only, but I quickly realised the potential of supporting multiple search engines to make the bot genuinely useful.&lt;/p&gt;

&lt;p&gt;Initially, the bot required specific command formats. Adding the AI Agent transformed it into a natural language assistant.&lt;/p&gt;

&lt;p&gt;And also, in V1, RankSniper only returned the current rank in Telegram. That was useful, but short-lived; the data vanished after every check. &lt;/p&gt;

&lt;p&gt;By adding Airtable logging, I turned RankSniper from a "momentary rank checker" into a real tracking tool.&lt;/p&gt;

&lt;p&gt;Now I (or any user) can look back at trends, visualise rank movements, and even set up alerts for major jumps or drops.&lt;/p&gt;

&lt;p&gt;That felt like the missing piece.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Quirks of Each Engine
&lt;/h3&gt;

&lt;p&gt;Each engine posed unique challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google&lt;/strong&gt;: Required filtering out internal Google links (&lt;code&gt;webcache&lt;/code&gt;, &lt;code&gt;/search?&lt;/code&gt;) and using regex to identify actual result URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bing&lt;/strong&gt;: Needed extraction specifically from &lt;code&gt;&amp;lt;cite&amp;gt;&lt;/code&gt; tags to avoid ads and irrelevant URLs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Yahoo&lt;/strong&gt;: Was tricky because result URLs are wrapped in multiple layers; fallback parsing with spans and regex was necessary.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DuckDuckGo&lt;/strong&gt;: Needed careful handling of lightweight pages and ignoring redirect links.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest challenge was standardising the extraction process while respecting each engine's quirks and ensuring accurate ranking calculations.&lt;/p&gt;

&lt;p&gt;I implemented deduplication and normalisation to make sure results were consistent, regardless of variations in URL formatting or capitalisation.&lt;/p&gt;

&lt;p&gt;Another key part was designing the &lt;strong&gt;Telegram interface&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Designing the Telegram Experience (Updated)
&lt;/h3&gt;

&lt;p&gt;With the AI Agent integrated, RankSniper now understands &lt;strong&gt;plain-language queries&lt;/strong&gt; from users, no rigid command formats required.&lt;/p&gt;

&lt;p&gt;Users can type naturally, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Check example.com for the best running shoes"&lt;/li&gt;
&lt;li&gt;"How does vercel.com rank for vercel?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The bot interprets the domain, keyword, and optional search engine automatically, so there's &lt;strong&gt;no need to remember specific commands or input orders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This makes the experience intuitive, quick, and accessible even for users unfamiliar with technical SEO tools.&lt;/p&gt;

&lt;p&gt;The AI Agent handles parsing, while the backend rule-based nodes extract ranking data reliably across all supported search engines.&lt;/p&gt;

&lt;p&gt;Users get clean, instant results without worrying about syntax, formatting, or engine-specific quirks.&lt;/p&gt;




&lt;h3&gt;
  
  
  What I Took Away
&lt;/h3&gt;

&lt;p&gt;Ultimately, this project solidified my understanding of search engine behaviours, n8n automation, and real-time query handling.&lt;/p&gt;

&lt;p&gt;RankSniper demonstrates that with a carefully constructed workflow and the right tools, even complex multi-engine ranking checks can be automated efficiently for anyone in the SEO or digital marketing space.&lt;/p&gt;

&lt;p&gt;🚀 Ready to stop wasting time on manual rank checks?&lt;br&gt;
👉 Start using RankSniper on &lt;a href="https://t.me/RankSniperBot" rel="noopener noreferrer"&gt;Telegram&lt;/a&gt; right now.&lt;/p&gt;

&lt;p&gt;Drop a comment if there's a search engine you'd like to see added.&lt;br&gt;
I'm building this to grow with the community.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>n8nbrightdatachallenge</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built an Interactive Asteroid Dashboard with NASA's Data</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Tue, 26 Aug 2025 07:00:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/how-i-built-an-interactive-asteroid-dashboard-with-nasas-data-12li</link>
      <guid>https://forem.com/arjuncodess/how-i-built-an-interactive-asteroid-dashboard-with-nasas-data-12li</guid>
      <description>&lt;p&gt;I was scrolling through Instagram the other day and stumbled on a reel.&lt;/p&gt;

&lt;p&gt;The creator was listing "APIs you shouldn't miss," and the very first one? NASA.&lt;/p&gt;

&lt;p&gt;I paused. NASA. Space. Data.&lt;br&gt;
That was enough to pull me down a rabbit hole.&lt;/p&gt;

&lt;p&gt;I dug into their &lt;strong&gt;NeoWs API&lt;/strong&gt; and before I knew it, I had an idea: &lt;em&gt;why not make a dashboard that tracks near-Earth asteroids, highlights risks, and makes sense of all this space data?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What started as a casual scrolling session turned into a full-on data science and analysis project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check out the project for yourself: &lt;a href="https://astroscope.streamlit.app/" rel="noopener noreferrer"&gt;https://astroscope.streamlit.app/&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;GitHub repository: &lt;a href="https://github.com/ArjunCodess/astroscope" rel="noopener noreferrer"&gt;https://github.com/ArjunCodess/astroscope&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here is a quick demo of the dashboard:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/VmNRG0jzy6o"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Some screenshots:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jo9sjm7xnigf2hmchhn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jo9sjm7xnigf2hmchhn.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63rn6ya9obbltayjx799.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63rn6ya9obbltayjx799.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5ig47rur7p6r9n85cli.png" alt="Image"&gt;&lt;/th&gt;
&lt;th&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fokfklrk2c1246u3n0b0c.png" alt="Image"&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Breaking It Down
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Planning What I Wanted
&lt;/h3&gt;

&lt;p&gt;Before writing a single line of code, I had to figure out what this project should actually do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fetch real asteroid data from NASA.&lt;/li&gt;
&lt;li&gt;Show size, speed, and how close each asteroid comes to Earth.&lt;/li&gt;
&lt;li&gt;Highlight which asteroids might be risky.&lt;/li&gt;
&lt;li&gt;Visualise everything in charts and tables, not walls of JSON.&lt;/li&gt;
&lt;li&gt;Make it smooth enough to work on both desktop and mobile.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gave me a blueprint for tools, features, and project structure.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Pulling Data from NASA's NeoWs API
&lt;/h3&gt;

&lt;p&gt;NeoWs is powerful, but it has limits.&lt;br&gt;
You can only fetch up to 7 days of data at a time.&lt;/p&gt;

&lt;p&gt;So I had to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Break the total range (like 30 days) into 7-day chunks.&lt;/li&gt;
&lt;li&gt;Call the API for each chunk sequentially.&lt;/li&gt;
&lt;li&gt;Save all the results locally so I wouldn't keep hammering NASA’s servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was all handled in &lt;strong&gt;data_fetcher.py&lt;/strong&gt; using Python's &lt;code&gt;requests&lt;/code&gt; library.&lt;br&gt;
I added retries and error handling because API calls fail, always.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 3: Cleaning Up NASA’s Raw Data
&lt;/h3&gt;

&lt;p&gt;NASA sends massive JSON files, and most of it is noise.&lt;br&gt;
I needed only the essentials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ID, name, size&lt;/li&gt;
&lt;li&gt;Approach date&lt;/li&gt;
&lt;li&gt;Velocity&lt;/li&gt;
&lt;li&gt;Miss distance&lt;/li&gt;
&lt;li&gt;Hazard flag&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wrote &lt;strong&gt;data_processing.py&lt;/strong&gt; to flatten everything into neat tables. &lt;code&gt;pandas&lt;/code&gt; handled the heavy lifting.&lt;br&gt;
I also converted units (like velocity into km/h) and saved the cleaned data as CSVs for faster loading later.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 4: Making Sense of It
&lt;/h3&gt;

&lt;p&gt;Once the data was clean, I wanted to give it meaning. In &lt;strong&gt;analysis.py&lt;/strong&gt;, I built a risk scoring system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;risk score&lt;/strong&gt; combining size, speed, and distance.&lt;/li&gt;
&lt;li&gt;A threshold (0.6 by default) for high-risk asteroids.&lt;/li&gt;
&lt;li&gt;Time series to show how risk changes over days.&lt;/li&gt;
&lt;li&gt;Rankings for “closest approach” days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This let me highlight outliers, giant rocks flying closer than usual.&lt;br&gt;
&lt;code&gt;pandas&lt;/code&gt; made all of this easy.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 5: Building the Dashboard
&lt;/h3&gt;

&lt;p&gt;I used &lt;strong&gt;Streamlit&lt;/strong&gt; because it lets you build web apps in Python without the headache of traditional frameworks.&lt;/p&gt;

&lt;p&gt;Here’s what I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date picker&lt;/strong&gt; and &lt;strong&gt;risk slider&lt;/strong&gt; for filtering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub-style heatmap&lt;/strong&gt; showing average daily risk scores (brighter = scarier).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top-10 closest approaches table&lt;/strong&gt; with details.&lt;/li&gt;
&lt;li&gt;Charts for asteroid sizes, speeds, and risk distributions.&lt;/li&gt;
&lt;li&gt;Responsive layout for phones and laptops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also used &lt;code&gt;plotly&lt;/code&gt; to make the graphs interactive and visually appealing.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 6: Configuration and Setup
&lt;/h3&gt;

&lt;p&gt;I kept the app flexible with a &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;NASA_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="nv"&gt;DATA_FETCH_DAYS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30
&lt;span class="nv"&gt;DATA_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"data"&lt;/span&gt;
&lt;span class="nv"&gt;API_CHUNK_SIZE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;7
&lt;span class="nv"&gt;RISK_THRESHOLD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This keeps sensitive info like the API key safe and allows easy changes to the project's parameters.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Putting Everything Together
&lt;/h3&gt;

&lt;p&gt;When you run the app:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It checks if the data for the chosen days is already saved.&lt;/li&gt;
&lt;li&gt;If not, it fetches it from NASA.&lt;/li&gt;
&lt;li&gt;Then it processes and analyses the data.&lt;/li&gt;
&lt;li&gt;Finally, it serves the dashboard.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also made it possible to run individual steps separately for debugging and testing.&lt;/p&gt;

&lt;p&gt;Here's a high-level flow of how the app works:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F088xw2c24quldrzmtwx1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F088xw2c24quldrzmtwx1.png" alt="Image"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;It's crazy how a 15-second reel led me to a full-fledged data project.&lt;/p&gt;

&lt;p&gt;This dashboard is my little window to the space.&lt;br&gt;
It's not perfect, but it works, it's extendable, and it's fun to explore.&lt;/p&gt;

&lt;p&gt;If you're a coder or just a space nerd, try building your own.&lt;br&gt;
Start small, play with real data, then push it further.&lt;br&gt;
The universe is massive, unpredictable, and full of surprises.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>nasa</category>
      <category>python</category>
      <category>api</category>
      <category>datascience</category>
    </item>
    <item>
      <title>SaaS Pain Point Hunting with Runner H</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Mon, 16 Jun 2025 03:00:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/saas-pain-point-hunting-with-runner-h-229b</link>
      <guid>https://forem.com/arjuncodess/saas-pain-point-hunting-with-runner-h-229b</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/runnerh"&gt;Runner H "AI Agent Prompting" Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Every builder hits that wall: "What should I build next?"&lt;/p&gt;

&lt;p&gt;You scroll Twitter. You stalk indie hackers. You even ask ChatGPT for ideas, but nothing feels real. Nothing feels urgent.&lt;/p&gt;

&lt;p&gt;That's the gap I wanted to close.&lt;/p&gt;

&lt;p&gt;Instead of pulling ideas out of thin air, I made a system to go where the real problems are: inside user comments on Product Hunt.&lt;/p&gt;

&lt;p&gt;Because let's be honest - launch pages lie. Comments don't.&lt;/p&gt;

&lt;p&gt;People drop gold when they're frustrated. That's where the pain lives.&lt;br&gt;
And pain = opportunity.&lt;/p&gt;

&lt;p&gt;So I built a workflow with Runner H that finds those pain points fast, organises them clearly, and gives you actual SaaS ideas backed by real user frustration.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I made a simple but powerful workflow to find real problems people face with new SaaS tools.&lt;/p&gt;

&lt;p&gt;I used Runner H to build a step-by-step process that scrapes through &lt;strong&gt;Product Hunt comments&lt;/strong&gt; - but only looks at the &lt;em&gt;top launches of this year&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The goal is simple. To &lt;strong&gt;spot pain points&lt;/strong&gt;, complaints, and problems that show up again and again - and use those to find &lt;strong&gt;new SaaS ideas&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/k0E9WQkXtmw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Run link:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://hcompany.ai/surfer-2" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fframerusercontent.com%2Fassets%2F7eFHjmJeoNnvAhCSfhNTx0E8Njc.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://hcompany.ai/surfer-2" rel="noopener noreferrer" class="c-link"&gt;
            Surfer 2: The Next Generation of Cross-Platform Computer-Use Agents - H Company
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            We are a frontier AI research company that designs, builds, and deploys cost-efficient agentic AI systems directly into enterprises’ core workflows and processes.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fframerusercontent.com%2Fimages%2FqVilPhQQTJzvgGDNLjrYwa5xQ.png"&gt;
          hcompany.ai
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Document it generated:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://docs.google.com/document/d/1GAIA0dvmCfylVJHiUu3N0lEZwIiLQDEEBl9B0k3XCmI/edit?usp=sharing" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh7-us.googleusercontent.com%2Fdocs%2FAHkbwyIWAlC5KaGQMfj3CXaNa48JpLGXprGi5DPOZX52yjFq3Q3HYk9XGgXDUANv50I1Rp4W3ymM7IVzSvW27eeHR6zUpjTo5FUFkTKODl4ABtIruIjxEmq9%3Dw1200-h630-p" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://docs.google.com/document/d/1GAIA0dvmCfylVJHiUu3N0lEZwIiLQDEEBl9B0k3XCmI/edit?usp=sharing" rel="noopener noreferrer" class="c-link"&gt;
            SaaS Pain Points from Product Hunt - Google Docs
          &lt;/a&gt;
        &lt;/h2&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fssl.gstatic.com%2Fdocs%2Fdocuments%2Fimages%2Fkix-favicon-2023q4.ico"&gt;
          docs.google.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  How I Used Runner H
&lt;/h2&gt;

&lt;p&gt;I created a workflow inside Runner H that does this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It opens a &lt;strong&gt;Google Doc&lt;/strong&gt; and names it based on today's date.&lt;/li&gt;
&lt;li&gt;It searches &lt;strong&gt;Product Hunt's top SaaS launches from this year&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It is included in each product's &lt;strong&gt;comments&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It pulls out only &lt;strong&gt;critical feedback&lt;/strong&gt;, comments that discuss what's broken, missing, confusing, or annoying.&lt;/li&gt;
&lt;li&gt;For each pain point, write down:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Product Name&lt;/li&gt;
&lt;li&gt;Type of tool&lt;/li&gt;
&lt;li&gt;The actual complaint or quote&lt;/li&gt;
&lt;li&gt;A link to the comment&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Upvotes on that comment (if there are any)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It keeps going until it has &lt;strong&gt;5 real pain points&lt;/strong&gt; from different products.&lt;/li&gt;
&lt;li&gt;At the end, it writes a summary showing:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Common patterns across comments&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What users are struggling with&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2-3 solid product ideas you could build from this&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of it goes into a clean Google Doc.&lt;br&gt;
No spreadsheets. No code. No scraping tools.&lt;br&gt;
Just data, sorted by hand, with Runner H as the assistant.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a SaaS Idea Hunter. Your job is to read through *Product Hunt's top SaaS launches of this year*, and collect *real user pain points* from the comment sections. These pain points must come from critical, constructive feedback, not vague complaints or shallow praise.

You must then *analyse each pain point* and explain why it could become the seed of a good SaaS idea.

*Workflow:*

1. Open a new Google Doc titled:
   `SaaS Pain Points from Product Hunt`

2. Visit Product Hunt and find the *top SaaS products launched this year*. Filter by date. URL: https://www.producthunt.com/leaderboard/yearly/2025

3. For each product, go through all user comments and reviews.

4. Extract only comments that include clear *negative feedback* or *constructive criticism*. Skip low-effort, generic, or praise-only comments.

5. For every useful pain point you find, add it to the Doc as a bullet point in this format:

   - *Product Name:*
   - *Category (if known):*
   - *Pain Point (exact excerpt or a clean summary):*
   - *Link to the original comment:*
   - *Upvotes on the comment (if visible):*
   - *Why this is a solid SaaS idea (your reasoning):*

6. Repeat for at least *5 unique, useful* pain points from different products.

7. After all bullets, write a short *300-word summary* including:

   - Common themes or recurring issues across comments
   - What this says about where SaaS still sucks
   - 2–3 idea directions founders could explore

*Rules:*

- Use *Google Docs only*. No spreadsheets, no tools, no automation.
- Focus on being *data-heavy, insight-rich*.
- Don't overgeneralize. Stay specific.
- Your final output should be so useful that a founder could open it and start building tomorrow.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Use Case &amp;amp; Impact
&lt;/h2&gt;

&lt;p&gt;If you're a builder, solo founder, or just someone with an itch to launch something new, this helps you &lt;strong&gt;find ideas that already have demand&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of building something no one needs, you're finding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What annoys real users&lt;/li&gt;
&lt;li&gt;What current tools fail to do&lt;/li&gt;
&lt;li&gt;What people are asking for, over and over again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This saves time. It sharpens your focus.&lt;br&gt;
And it gives you a &lt;strong&gt;real chance to build something useful&lt;/strong&gt;, not just another clone.&lt;/p&gt;

&lt;p&gt;Imagine finding your next startup idea just by reading through what real people hate about a tool like Notion, Linear, or some new AI tool. This is that - but on autopilot.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This isn't magic. It's just smart, focused listening.&lt;/p&gt;

&lt;p&gt;Too many founders chase trends. This workflow helps you chase the truth.&lt;/p&gt;

&lt;p&gt;What people really need.&lt;br&gt;
What tools actually suck.&lt;br&gt;
What gaps are wide open.&lt;/p&gt;

&lt;p&gt;You don't need a billion-dollar vision.&lt;br&gt;
You need one sharp idea that solves one sharp pain.&lt;br&gt;
This workflow gives you 5.&lt;/p&gt;

&lt;p&gt;Run it. Read the doc. Sit with the pain.&lt;br&gt;
And then? Build the fix.&lt;br&gt;
You'll be 10 steps ahead of everyone still guessing.&lt;/p&gt;

&lt;p&gt;Let's stop building noise. Let's build what matters.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;br&gt;
Made with ❤️ by &lt;a class="mentioned-user" href="https://dev.to/arjuncodess"&gt;@arjuncodess&lt;/a&gt; for the &lt;a href="https://dev.to/challenges/runnerh"&gt;DEV.to Runner H "AI Agent Prompting" Challenge.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>runnerhchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Introducing the Storyblok MCP Server: Talk to Your CMS</title>
      <dc:creator>Arjun Vijay Prakash</dc:creator>
      <pubDate>Sat, 14 Jun 2025 09:30:00 +0000</pubDate>
      <link>https://forem.com/arjuncodess/introducing-the-storyblok-mcp-server-1cdd</link>
      <guid>https://forem.com/arjuncodess/introducing-the-storyblok-mcp-server-1cdd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/storyblok"&gt;Storyblok Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I've always hated boring dashboards.&lt;/p&gt;

&lt;p&gt;Clicking around. Waiting for things to load.&lt;br&gt;
Forgetting where that one damn setting was.&lt;br&gt;
It's slow. It's clunky. And it kills flow.&lt;/p&gt;

&lt;p&gt;So I built something better.&lt;/p&gt;

&lt;p&gt;A MCP server that lets AI talk to your Storyblok CMS directly - with no dashboards, no clicks, no code. &lt;strong&gt;Just plain language.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tell the AI what to do - "Translate this story," "Upload these assets," "Rollback that release" - and it just does it.&lt;/p&gt;

&lt;p&gt;This is not a toy. It's not a wrapper. It's a fully working MCP server made for people who want to ship faster and think less.&lt;/p&gt;

&lt;p&gt;Let me walk you through how I built it, what it can do, and why it matters.&lt;/p&gt;
&lt;h3&gt;
  
  
  Table of Contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;🧠 Introduction&lt;/li&gt;
&lt;li&gt;🚀 What I Built&lt;/li&gt;
&lt;li&gt;🎥 Demo&lt;/li&gt;
&lt;li&gt;🛠 Tech Stack&lt;/li&gt;
&lt;li&gt;🧩 How I Used Storyblok&lt;/li&gt;
&lt;li&gt;🤖 AI Integration&lt;/li&gt;
&lt;li&gt;📓 Learnings and Takeaways&lt;/li&gt;
&lt;li&gt;🏁 Final Thoughts&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Storyblok MCP Server serves as a bridge between Storyblok and Claude AI-based tools, such as Cursor.&lt;/p&gt;

&lt;p&gt;It lets you manage your CMS through plain language - no dashboards, no manual clicks, no code changes.&lt;/p&gt;

&lt;p&gt;It currently has &lt;strong&gt;42 tools (4 of them being AI tools)&lt;/strong&gt; covering stories, assets, releases, tags, components, and more.&lt;/p&gt;

&lt;p&gt;Just tell the AI what you want:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Please generate the metadata for this story: 123456789"&lt;br&gt;
"Please translate this story to Spanish: 123456789"&lt;br&gt;
"Please get all of my assets and generate alt texts for each one of them"&lt;br&gt;
"Please create a tag named Test and add it to story: 123456789"&lt;br&gt;
"Please auto-tag this story: 123456789"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...and it does it, instantly.&lt;/p&gt;

&lt;p&gt;This isn't just a wrapper over Storyblok's API - it's a fully featured, extensible &lt;strong&gt;MCP server&lt;/strong&gt; that lets any compatible AI tool &lt;strong&gt;reason about your content structure&lt;/strong&gt;, &lt;strong&gt;fetch and edit stories&lt;/strong&gt;, &lt;strong&gt;manage assets&lt;/strong&gt;, &lt;strong&gt;roll back versions&lt;/strong&gt;, and more.&lt;/p&gt;

&lt;p&gt;My goal was to make managing a headless CMS feel less like dev work and more like magic.&lt;/p&gt;


&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Images&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fe3f3ae2b-2774-406d-a952-8994b9618202" alt="Demo Image 1" width="300"&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F3d6b6a34-70eb-4c57-99b7-c81d091f47ff" alt="Demo Image 2" width="300"&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F960ff18e-537a-4a82-89bc-0f5b0e56f68f" alt="Demo Image 3" width="300"&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fcae92c66-43c7-4b64-a08d-d868f50566b5" alt="Demo Image 4" width="300"&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2F2ecffada-e5ea-4008-8070-c579e0d28b10" alt="Demo Image 5" width="300"&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fuser-attachments%2Fassets%2Fe49d6c52-a805-4044-91dc-e1ed6d19df68" alt="Demo Image 6" width="300"&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Code Repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ArjunCodess" rel="noopener noreferrer"&gt;
        ArjunCodess
      &lt;/a&gt; / &lt;a href="https://github.com/ArjunCodess/storyblok-mcp" rel="noopener noreferrer"&gt;
        storyblok-mcp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Connect AI tools to Storyblok instantly - use natural language to manage your CMS like magic.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Storyblok MCP Server&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Connect AI tools to Storyblok instantly - use natural language to manage your CMS like magic.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/137415649/455142420-e3f3ae2b-2774-406d-a952-8994b9618202.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDIwLWUzZjNhZTJiLTI3NzQtNDA2ZC1hOTUyLTg5OTRiOTYxODIwMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MmUzNDBiMjkzNWU5MjBiNTJkZjBmZTAzMDc2MzgwZjQ1OGUzZmU2MjFkMDBkZTVlN2JhYzNjNDM0OWZkNTU1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.T3kO9-j0ZHSLzJGGJkL6QNH6orho4nHfOFoW1SjjT1w"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F137415649%2F455142420-e3f3ae2b-2774-406d-a952-8994b9618202.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDIwLWUzZjNhZTJiLTI3NzQtNDA2ZC1hOTUyLTg5OTRiOTYxODIwMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MmUzNDBiMjkzNWU5MjBiNTJkZjBmZTAzMDc2MzgwZjQ1OGUzZmU2MjFkMDBkZTVlN2JhYzNjNDM0OWZkNTU1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.T3kO9-j0ZHSLzJGGJkL6QNH6orho4nHfOFoW1SjjT1w" alt="Demo Image 1" width="300"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/137415649/455142419-3d6b6a34-70eb-4c57-99b7-c81d091f47ff.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDE5LTNkNmI2YTM0LTcwZWItNGM1Ny05OWI3LWM4MWQwOTFmNDdmZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZTJlYjg5NGRhNmFhZjNmOWRkYmNmN2MzN2ZlMTgxN2IzZmYwMDVhNjFjOWI1NDZiZjYyNmM3YTMxZTkwOWZlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Jn1XksYo1FhvYzGaE90iZK9vaIsitz5TDEZHR0nAK78"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F137415649%2F455142419-3d6b6a34-70eb-4c57-99b7-c81d091f47ff.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDE5LTNkNmI2YTM0LTcwZWItNGM1Ny05OWI3LWM4MWQwOTFmNDdmZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zZTJlYjg5NGRhNmFhZjNmOWRkYmNmN2MzN2ZlMTgxN2IzZmYwMDVhNjFjOWI1NDZiZjYyNmM3YTMxZTkwOWZlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Jn1XksYo1FhvYzGaE90iZK9vaIsitz5TDEZHR0nAK78" alt="Demo Image 2" width="300"&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/137415649/455142417-960ff18e-537a-4a82-89bc-0f5b0e56f68f.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDE3LTk2MGZmMThlLTUzN2EtNGE4Mi04OWJjLTBmNWIwZTU2ZjY4Zi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MDk1ZTk2Y2EzYzFlNzcxZmVkMzgxZDQ0ZDUyYTkwMDk0M2RmMWYzNDM3YThjOWNiMjQ0YTUwOTBhMmQwZTZjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DUDehb5O9cHDDNKrLN1NPIBSPPSlvRxxmtGiPOA0ifs"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F137415649%2F455142417-960ff18e-537a-4a82-89bc-0f5b0e56f68f.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDE3LTk2MGZmMThlLTUzN2EtNGE4Mi04OWJjLTBmNWIwZTU2ZjY4Zi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00MDk1ZTk2Y2EzYzFlNzcxZmVkMzgxZDQ0ZDUyYTkwMDk0M2RmMWYzNDM3YThjOWNiMjQ0YTUwOTBhMmQwZTZjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DUDehb5O9cHDDNKrLN1NPIBSPPSlvRxxmtGiPOA0ifs" alt="Demo Image 3" width="300"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/137415649/455142415-cae92c66-43c7-4b64-a08d-d868f50566b5.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDE1LWNhZTkyYzY2LTQzYzctNGI2NC1hMDhkLWQ4NjhmNTA1NjZiNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MTFkN2I0YWQyMmIzYjRhMzNkNzMxYTk5MDkyYjVjYmM5YWFhYzNjODlhZmNjN2Y4NTEwNGVkYzgxYWE5NTIwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.8ca1D__ruoANl94qKQ6fzUFcwW-OSPnGQy6U3v6x9V8"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F137415649%2F455142415-cae92c66-43c7-4b64-a08d-d868f50566b5.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDE1LWNhZTkyYzY2LTQzYzctNGI2NC1hMDhkLWQ4NjhmNTA1NjZiNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01MTFkN2I0YWQyMmIzYjRhMzNkNzMxYTk5MDkyYjVjYmM5YWFhYzNjODlhZmNjN2Y4NTEwNGVkYzgxYWE5NTIwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.8ca1D__ruoANl94qKQ6fzUFcwW-OSPnGQy6U3v6x9V8" alt="Demo Image 4" width="300"&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/137415649/455142413-2ecffada-e5ea-4008-8070-c579e0d28b10.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDEzLTJlY2ZmYWRhLWU1ZWEtNDAwOC04MDcwLWM1NzllMGQyOGIxMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MTkyYmJkOTUwOGRjNThmOWJjNjk3OGQ2YWI2YzIzZDA5MzA3MGY2ZGVkOWUzZTBhOGZhNzIxMjQ1NjAxYTM2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.WSVdFSZkKIozjW-N2X_zCN7FoDo9ZbOfVw4kY5YYDkA"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F137415649%2F455142413-2ecffada-e5ea-4008-8070-c579e0d28b10.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDEzLTJlY2ZmYWRhLWU1ZWEtNDAwOC04MDcwLWM1NzllMGQyOGIxMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MTkyYmJkOTUwOGRjNThmOWJjNjk3OGQ2YWI2YzIzZDA5MzA3MGY2ZGVkOWUzZTBhOGZhNzIxMjQ1NjAxYTM2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.WSVdFSZkKIozjW-N2X_zCN7FoDo9ZbOfVw4kY5YYDkA" alt="Demo Image 5" width="300"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/137415649/455142412-e49d6c52-a805-4044-91dc-e1ed6d19df68.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDEyLWU0OWQ2YzUyLWE4MDUtNDA0NC05MWRjLWUxZWQ2ZDE5ZGY2OC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lNjFjY2YwYjI1MTNmMTJkN2NhMWRkOWE4MWYyMjQ5ZTQ2YTZhNGJmNjU0NjRkOGVmY2U4NmNmY2FiZmFlNzZmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.dUzq_m5Iq3CnFQGeqPth0oUQdicYh71mUX0tHiklfSE"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F137415649%2F455142412-e49d6c52-a805-4044-91dc-e1ed6d19df68.png%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzQ2NDk4MTIsIm5iZiI6MTc3NDY0OTUxMiwicGF0aCI6Ii8xMzc0MTU2NDkvNDU1MTQyNDEyLWU0OWQ2YzUyLWE4MDUtNDA0NC05MWRjLWUxZWQ2ZDE5ZGY2OC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwMzI3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDMyN1QyMjExNTJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lNjFjY2YwYjI1MTNmMTJkN2NhMWRkOWE4MWYyMjQ5ZTQ2YTZhNGJmNjU0NjRkOGVmY2U4NmNmY2FiZmFlNzZmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.dUzq_m5Iq3CnFQGeqPth0oUQdicYh71mUX0tHiklfSE" alt="Demo Image 6" width="300"&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#demo" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#why-this-project" rel="noopener noreferrer"&gt;Why This Project?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#what-is-storyblok" rel="noopener noreferrer"&gt;What is Storyblok?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#whats-an-mcp-server" rel="noopener noreferrer"&gt;What's an MCP Server?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#challenges-i-faced" rel="noopener noreferrer"&gt;Challenges I Faced&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#how-to-set-up-for-contributors" rel="noopener noreferrer"&gt;How to Set Up (For Contributors)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#how-to-use-for-users" rel="noopener noreferrer"&gt;How to Use (For Users)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#tools" rel="noopener noreferrer"&gt;Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#how-to-contribute" rel="noopener noreferrer"&gt;How to Contribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#useful-links" rel="noopener noreferrer"&gt;Useful Links&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#thanks" rel="noopener noreferrer"&gt;Thanks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ArjunCodess/storyblok-mcp#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why This Project?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/storyblok" rel="nofollow"&gt;Storyblok Headless CMS Challenge&lt;/a&gt; on DEV.to.&lt;/p&gt;
&lt;p&gt;The goal: push AI and Storyblok's power together, make something fresh and useful.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Storyblok?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Storyblok is a powerful headless CMS. API-first. Easy for devs and content creators to work together.&lt;/p&gt;
&lt;p&gt;It's modular, super flexible, and fits with any frontend or workflow you want.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What's an MCP Server?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;MCP = a protocol that connects AI, tools, and data.&lt;/p&gt;
&lt;p&gt;The MCP server acts as a middleman, showing AI what it can do and what data it has.&lt;/p&gt;
&lt;p&gt;This enables AI clients, such…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ArjunCodess/storyblok-mcp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Connected to Cursor&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzw44h4gwcbbvwuqq85i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuzw44h4gwcbbvwuqq85i.png" alt="Image"&gt;&lt;/a&gt;&lt;br&gt;
Watch the video: &lt;a href="https://git.new/storyblok-mcp#readme" rel="noopener noreferrer"&gt;README&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js&lt;/strong&gt; + &lt;strong&gt;TypeScript&lt;/strong&gt; - Core server and tool handling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pnpm&lt;/strong&gt; - Fast, reliable package management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP TypeScript SDK&lt;/strong&gt; - To implement the MCP protocol&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storyblok API&lt;/strong&gt; - To control your CMS programmatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini 2.0 Flash&lt;/strong&gt; via &lt;strong&gt;Vercel's AI SDK&lt;/strong&gt; – To generate text for the 4 AI tools.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  How I Used Storyblok
&lt;/h2&gt;

&lt;p&gt;Storyblok is a great CMS platform that was the backbone of this entire experience.&lt;/p&gt;

&lt;p&gt;Its powerful APIs, modular content approach, and management tokens gave me the flexibility to treat &lt;strong&gt;stories, assets, tags, releases, and components&lt;/strong&gt; as first-class, programmable elements.&lt;/p&gt;

&lt;p&gt;I exposed nearly every critical Storyblok capability as a callable AI tool, so the AI could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create and update stories&lt;/li&gt;
&lt;li&gt;Manage tags, components, and releases&lt;/li&gt;
&lt;li&gt;Upload assets and move them across folders&lt;/li&gt;
&lt;li&gt;Query and restore past versions&lt;/li&gt;
&lt;li&gt;Interact with slugs, folder structures, and datasources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storyblok's API-first nature made this possible and a joy to build.&lt;/p&gt;


&lt;h2&gt;
  
  
  AI Integration
&lt;/h2&gt;

&lt;p&gt;This project is built for both the &lt;strong&gt;Build Any Digital Experience With Storyblok&lt;/strong&gt; and &lt;strong&gt;Awesome AI&lt;/strong&gt; categories.&lt;/p&gt;

&lt;p&gt;It uses the &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; to make Storyblok content accessible to local AI tools.&lt;/p&gt;

&lt;p&gt;Once plugged into tools like Cursor, the AI can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand what content exists in your space&lt;/li&gt;
&lt;li&gt;Call functions like &lt;code&gt;update_story&lt;/code&gt;, &lt;code&gt;fetch_assets&lt;/code&gt;, &lt;code&gt;create_release&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;Take natural commands like "Publish all stories in the 'June Campaign' folder" and convert them to precise API calls&lt;/li&gt;
&lt;li&gt;Maintain context, handle rollbacks, and even search using fuzzy slugs or tags&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Learnings and Takeaways
&lt;/h2&gt;

&lt;p&gt;This wasn't easy. It was messy. It was slow.&lt;/p&gt;

&lt;p&gt;I had &lt;strong&gt;never built an MCP server&lt;/strong&gt; before.&lt;br&gt;
Didn't even know what "MCP" stood for until I googled it five times.&lt;br&gt;
Tried setting it up in Cursor for 2-3 hours straight. Failed every time. Lol.&lt;/p&gt;

&lt;p&gt;And let me be honest, wiring that thing to Storyblok's API took me way longer than I want to admit.&lt;/p&gt;

&lt;p&gt;Thankfully, this article by &lt;a class="mentioned-user" href="https://dev.to/anmolbaranwal"&gt;@anmolbaranwal&lt;/a&gt; saved me.&lt;br&gt;
Without it, I'd have lost another 2 hours just understanding the basics:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/composiodev/the-guide-to-mcp-i-never-had-1ked" class="crayons-story__hidden-navigation-link"&gt;The guide to MCP I never had.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;
          &lt;a class="crayons-logo crayons-logo--l" href="/composiodev"&gt;
            &lt;img alt="Composio logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F9157%2Fdf89ab52-2d48-474b-a971-087232b09f19.png" class="crayons-logo__image"&gt;
          &lt;/a&gt;

          &lt;a href="/anmolbaranwal" class="crayons-avatar  crayons-avatar--s absolute -right-2 -bottom-2 border-solid border-2 border-base-inverted  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F950976%2F69363f37-b7c5-4f1e-a2fe-29b4e4e33e92.png" alt="anmolbaranwal profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/anmolbaranwal" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Anmol Baranwal
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Anmol Baranwal
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2399551" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/anmolbaranwal" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F950976%2F69363f37-b7c5-4f1e-a2fe-29b4e4e33e92.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Anmol Baranwal&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

            &lt;span&gt;
              &lt;span class="crayons-story__tertiary fw-normal"&gt; for &lt;/span&gt;&lt;a href="/composiodev" class="crayons-story__secondary fw-medium"&gt;Composio&lt;/a&gt;
            &lt;/span&gt;
          &lt;/div&gt;
          &lt;a href="https://dev.to/composiodev/the-guide-to-mcp-i-never-had-1ked" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 22 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/composiodev/the-guide-to-mcp-i-never-had-1ked" id="article-link-2399551"&gt;
          The guide to MCP I never had.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/mcp"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;mcp&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/composiodev/the-guide-to-mcp-i-never-had-1ked" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;254&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/composiodev/the-guide-to-mcp-i-never-had-1ked#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              15&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            22 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


&lt;p&gt;Then came the &lt;strong&gt;security part&lt;/strong&gt;. Giving AI access to a CMS isn't a joke. Tokens, scopes, permissions - one mistake, and it's all open.&lt;/p&gt;

&lt;p&gt;So instead of asking you to give me the keys... I made it so &lt;strong&gt;you give them directly to Cursor&lt;/strong&gt;.&lt;br&gt;
Cursor handles setup. Cursor stores the keys.&lt;br&gt;
So if anything leaks, it's on them. Not you. Not me.&lt;br&gt;
Might sound like an insane idea, but it's safer. Cleaner. Smarter.&lt;/p&gt;

&lt;p&gt;Also, I built this with &lt;strong&gt;developers&lt;/strong&gt; &lt;em&gt;like me&lt;/em&gt; in mind.&lt;br&gt;
No black boxes. Just code you can download, extend if you want, and plug into whatever stack you've got.&lt;/p&gt;

&lt;p&gt;If you've ever used a messy integration like the other MCPs, you'll feel the difference here.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I'm proud of:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;A fully working AI-powered Storyblok CMS server, end-to-end.&lt;/li&gt;
&lt;li&gt;A project that &lt;em&gt;actually&lt;/em&gt; saves time.&lt;/li&gt;
&lt;li&gt;Something that could be used by devs, marketers, creators, literally anyone using Storyblok as their CMS.&lt;/li&gt;
&lt;li&gt;A great learning experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built this because I believe the future of tooling is &lt;strong&gt;invisible&lt;/strong&gt;, and AI should do more than answer questions.&lt;/p&gt;

&lt;p&gt;It should build, edit, and manage EVERYTHING &lt;strong&gt;effectively.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This server helps make that future real.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Managing content shouldn't be painful. It shouldn't take 10 clicks to do 1 thing.&lt;br&gt;
It should feel like magic. Fast. Clean. Invisible.&lt;/p&gt;

&lt;p&gt;That's what this project tries to do.&lt;/p&gt;

&lt;p&gt;If you're a dev working with Storyblok - or just someone tired of clicking around a CMS - this server is for you.&lt;/p&gt;

&lt;p&gt;You can download it. Plug it into Cursor. Make it your own.&lt;br&gt;
And if you want to see exactly how it works, every piece is explained in the &lt;a href="https://git.new/storyblok-mcp#readme" rel="noopener noreferrer"&gt;README&lt;/a&gt; of the repo.&lt;/p&gt;

&lt;p&gt;This is just the start.&lt;br&gt;
I'm gonna keep improving it.&lt;br&gt;
But for now, it works - and it works well.&lt;/p&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

&lt;p&gt;And if you build something cool on top of it, I'd love to see it.&lt;/p&gt;

&lt;p&gt;Made with ❤️ by &lt;a class="mentioned-user" href="https://dev.to/arjuncodess"&gt;@arjuncodess&lt;/a&gt; for the &lt;a href="https://dev.to/challenges/storyblok"&gt;DEV.to Storyblok Challenge&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>storyblokchallenge</category>
      <category>mcp</category>
      <category>api</category>
    </item>
  </channel>
</rss>
