[{"data":1,"prerenderedAt":457},["ShallowReactive",2],{"post-\u002F1m-impressions-per-month-0-revenue-a-programmatic-seo-post-mortem":3},{"page":4,"translation":410,"nav":412,"related":443,"random":450},{"id":5,"title":6,"body":7,"categories":388,"category":390,"date":391,"description":392,"draft":393,"extension":394,"image":395,"kind":396,"lang":397,"meta":398,"navigation":399,"path":400,"readingTime":401,"seo":402,"slug":403,"stem":403,"tags":404,"translationKey":407,"type":408,"updated":390,"__hash__":409},"posts\u002F1m-impressions-per-month-0-revenue-a-programmatic-seo-post-mortem.md","1M Impressions per Month, $0 Revenue: A Programmatic SEO Post-Mortem",{"type":8,"value":9,"toc":373},"minimark",[10,49,67,83,94,97,100,105,195,197,202,205,232,235,237,241,244,251,263,265,269,272,277,280,282,286,290,293,297,308,310,314,317,336,338,342,362,365],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Quick Summary (TL;DR):",[22,23,24,31,37,43],"ul",{},[25,26,27,30],"li",{},[18,28,29],{},"The Goal:"," Build an automated directory of every mosque in Turkey at scale using Diyanet's dataset, Google Maps, and OpenAI reviews summary.",[25,32,33,36],{},[18,34,35],{},"The Success:"," Perfect programmatic SEO execution yielding 1M monthly impressions and 10K+ clicks within months.",[25,38,39,42],{},[18,40,41],{},"The Failure:"," Zero revenue. Google AdSense rejected the programmatic content, and local informational searchers lacked commercial intent.",[25,44,45,48],{},[18,46,47],{},"The Lesson:"," Always validate monetizability and choose your niche based on the buyer, not just open search volume.",[14,50,51],{},[52,53,54,55],"em",{},"This article was originally published on ProductLog: ",[56,57,66],"a",{"className":58,"href":60,"rel":61,"target":65},[59],"dofollow","https:\u002F\u002Fproductlog.net\u002Fs\u002Fevrenbal\u002F1m-impressions-per-month-0-revenue-a-programmatic-seo-post-mortem",[62,63,64],"nofollow","noopener","noreferrer","_blank","A million of impressions per month and $0 in revenue. A programmatic SEO post-mortem.",[14,68,69,70,78,79,82],{},"Almost a year ago, I launched ",[18,71,72],{},[56,73,77],{"className":74,"href":75,"rel":76,"target":65},[59],"https:\u002F\u002Fcamiler.org",[62,63,64],"camiler.org",". Recently, the site reached a major milestone: ",[18,80,81],{},"1 million monthly impressions"," on Google Search with more than 10K clicks.",[14,84,85,86,89,90,93],{},"The total revenue generated from all of this traffic? ",[18,87,88],{},"Zero dollars."," Not ",[52,91,92],{},"\"not much yet.\""," Exactly zero.",[14,95,96],{},"Here is the honest post-mortem of this project, because the mistakes I made are ones I see makers, developers, and SEO enthusiasts fall into constantly.",[98,99],"hr",{},[101,102,104],"h3",{"id":103},"camilerorg-performance-retrospective","camiler.org Performance Retrospective",[106,107,108,128],"table",{},[109,110,111],"thead",{},[112,113,114,119,122,125],"tr",{},[115,116,118],"th",{"align":117},"left","Metric",[115,120,121],{"align":117},"Target",[115,123,124],{"align":117},"Actual Result",[115,126,127],{"align":117},"Status",[129,130,131,148,163,179],"tbody",{},[112,132,133,139,142,145],{},[134,135,136],"td",{"align":117},[18,137,138],{},"Monthly Impressions",[134,140,141],{"align":117},"100K",[134,143,144],{"align":117},"~1,000,000",[134,146,147],{"align":117},"🟢 Met (Exceeded)",[112,149,150,155,158,161],{},[134,151,152],{"align":117},[18,153,154],{},"Monthly Clicks",[134,156,157],{"align":117},"2K",[134,159,160],{"align":117},"~10K+",[134,162,147],{"align":117},[112,164,165,170,173,176],{},[134,166,167],{"align":117},[18,168,169],{},"CTR (Click-Through)",[134,171,172],{"align":117},"3.5%",[134,174,175],{"align":117},"~1.2%",[134,177,178],{"align":117},"🔴 Low (Due to Google Maps SERP widget)",[112,180,181,186,189,192],{},[134,182,183],{"align":117},[18,184,185],{},"Monthly Revenue",[134,187,188],{"align":117},"$100",[134,190,191],{"align":117},"$0",[134,193,194],{"align":117},"🔴 Failed (AdSense rejection & low intent)",[98,196],{},[198,199,201],"h2",{"id":200},"what-i-built","What I Built",[14,203,204],{},"The project was a directory of every mosque in Turkey. The automated pipeline was the most exciting part of the development process:",[206,207,208,214,220,226],"ol",{},[25,209,210,213],{},[18,211,212],{},"Data Ingestion:"," I pulled the official mosque registry list from the government religious authority (Diyanet).",[25,215,216,219],{},[18,217,218],{},"Location Verification:"," I verified and mapped each entry against Google Maps APIs semi-automatically.",[25,221,222,225],{},[18,223,224],{},"Review Collection:"," I pulled user reviews for each verified location.",[25,227,228,231],{},[18,229,230],{},"AI Summarization:"," I used OpenAI APIs to compile and write a clean, readable summary for every single mosque.",[14,233,234],{},"Thousands of pages, fully automated. The strategy was classic programmatic SEO: find a clear gap in Google's search results, and fill it at scale.",[98,236],{},[198,238,240],{"id":239},"it-worked-perfectly-as-seo","It Worked Perfectly as SEO...",[14,242,243],{},"In terms of SEO, the playbook worked flawlessly. The rankings started coming in quickly. If impressions and pageviews were the only scoreboard, this project would be a massive win.",[14,245,246,247,250],{},"However, the click-through rate (CTR) hovered around ",[18,248,249],{},"1.2%",". This is incredibly low, and the reason is highly instructive:",[14,252,253,254,258,259,262],{},"For local ",[255,256,257],"code",{},"[place] mosque"," or ",[255,260,261],{},"[neighborhood] mosque"," searches, Google's own Maps Local Pack panel sits right at the top of the viewport. My directory site was directly competing against Google's own built-in answer widget, losing the majority of the clicks before searchers ever scrolled down to the organic results.",[98,264],{},[198,266,268],{"id":267},"but-google-refused-to-let-me-monetize-it","...But Google Refused to Let Me Monetize It",[14,270,271],{},"Once the traffic stabilized, the obvious monetization path was to put display ads on the pages. I applied to Google AdSense.",[14,273,274],{},[18,275,276],{},"Rejected.",[14,278,279],{},"Sit with that paradox for a second. Google was perfectly happy to index my programmatic content and send a million search impressions my way, but their ad network judged the exact same content as \"low-value\" and refused to let me run ads. The simplest, most passive monetization path was closed by the very same company sending the traffic.",[98,281],{},[198,283,285],{"id":284},"the-lessons-learned-the-hard-way","The Lessons Learned the Hard Way",[101,287,289],{"id":288},"_1-traffic-is-not-money","1. Traffic is Not Money",[14,291,292],{},"I knew this intellectually as a sentence, but I didn't truly understand it in my bones until I looked at a graph curving sharply upward alongside a bank balance that hadn't moved a single cent.",[101,294,296],{"id":295},"_2-commercial-intent-is-everything","2. Commercial Intent is Everything",[14,298,299,300,303,304,307],{},"What converts traffic into actual revenue is a combination of ",[18,301,302],{},"commercial intent"," and ",[18,305,306],{},"monetizability",". My visitors had neither. Someone looking up a local mosque's address or checking prayer times is not in a buying mindset. There are no high-value advertisers or products to place in front of them. High search volume, zero wallet value.",[98,309],{},[198,311,313],{"id":312},"the-playbook-remains-the-real-asset","The Playbook Remains the Real Asset",[14,315,316],{},"Despite the lack of revenue, the experiment was not a waste. The pipeline machine itself is genuinely powerful:",[14,318,319,322,323,322,326,322,329,322,332,335],{},[18,320,321],{},"Find SERP Gap"," → ",[18,324,325],{},"Ingest Dataset",[18,327,328],{},"Verify via API",[18,330,331],{},"Generate Value at Scale",[18,333,334],{},"Rank","\nThis programmatic playbook works. I proved it. My only mistake was aiming it at a niche with no commercial buyers. If I point this exact same technical machine at an audience that actually spends money, the outcome will be entirely different.",[98,337],{},[198,339,341],{"id":340},"what-im-doing-now","What I'm Doing Now",[22,343,344,350,356],{},[25,345,346,349],{},[18,347,348],{},"No More Time Investment:"," I am not investing another hour into attempting to monetize this site.",[25,351,352,355],{},[18,353,354],{},"Frozen but Live:"," I am keeping the site live but frozen. It costs virtually nothing to run (just the domain renewal fee, hosted on a server I already run for other projects).",[25,357,358,361],{},[18,359,360],{},"Wallet-First Niches:"," For my next programmatic project, the niche will be selected based on the buyer's wallet, not just the open gap in the SERPs.",[14,363,364],{},"If you are building programmatic SEO projects, here is the entire post-mortem summarized in one line:",[11,366,367],{},[14,368,369,370],{},"🎯 ",[18,371,372],{},"Rankings are not the goal. Revenue is. Pick your niche by the buyer, not just by the opening in the SERP.",{"title":374,"searchDepth":375,"depth":375,"links":376},"",2,[377,379,380,381,382,386,387],{"id":103,"depth":378,"text":104},3,{"id":200,"depth":375,"text":201},{"id":239,"depth":375,"text":240},{"id":267,"depth":375,"text":268},{"id":284,"depth":375,"text":285,"children":383},[384,385],{"id":288,"depth":378,"text":289},{"id":295,"depth":378,"text":296},{"id":312,"depth":375,"text":313},{"id":340,"depth":375,"text":341},[389],"business",null,"2026-06-21","I reached a million Google Search impressions with more than 10K clicks a month, yet generated zero dollars. Here is the post-mortem of camiler.org.",false,"md","\u002Fimages\u002Fhero\u002Fseo-zero-revenue.avif","Building","en",{},true,"\u002F1m-impressions-per-month-0-revenue-a-programmatic-seo-post-mortem",4,{"title":6,"description":392},"1m-impressions-per-month-0-revenue-a-programmatic-seo-post-mortem",[405,406],"seo","projects","camiler-post-mortem","post","PP5LkUXeye4SIvCe5YWKJvS6wlAUT9zSpAL6z1PD4Uc",{"path":411},"\u002Ftr\u002Fayda-1-milyon-gosterim-sifir-gelir-programatik-seo-vaka-analizi",{"prev":390,"next":413,"others":416,"lucky":442,"readingTime":401},{"path":414,"title":415},"\u002Fthe-end-of-coding-or-a-new-renaissance-the-invisible-crisis-of-ai","The End of Coding or a New Renaissance? The Invisible Crisis of AI",[417,418,421,424,427,430,433,436,439],{"path":414,"title":415},{"path":419,"title":420},"\u002Fraising-children-in-the-age-of-artificial-intelligence","Raising Children in the Age of Artificial Intelligence",{"path":422,"title":423},"\u002Fpesintaksit-cash-vs-installments-a-turkish-inflation-aware-payment-comparison-tool","Cash or Installments? – The Story Behind PeşinTaksit",{"path":425,"title":426},"\u002Fredar-ai-powered-summaries-for-kap-disclosures-and-open-sources","Redar: AI-Powered Summaries for KAP Disclosures and Open Sources",{"path":428,"title":429},"\u002Fbeyond-the-bot-lessons-from-building-a-chat-system-for-global-patients","Beyond the bot: lessons from building a chat system for global patients",{"path":431,"title":432},"\u002Fhow-i-built-a-modern-infrastructure-using-open-source-tools-and-the-power-of-cloudflare","How I Built a Modern Infrastructure Using Open Source Tools and the Power of Cloudflare",{"path":434,"title":435},"\u002Ffrom-rules-to-decisions-the-real-time-sales-intelligence-platform-we-built-at-vanity","From Rules to Decisions: The Real-Time Sales Intelligence Platform We Built at Vanity",{"path":437,"title":438},"\u002Fan-seo-experiment-in-a-low-competition-serp-with-google-maps-and-openai","An SEO Experiment in a Low-Competition SERP with Google Maps and OpenAI",{"path":440,"title":441},"\u002Fwhy-im-building-rankextension-making-google-search-console-actually-make-sense","Why I’m Building RankExtension: Making Google Search Console Actually Make Sense",{"path":431,"title":432},[444,446,447,449],{"path":437,"title":438,"date":445},"2025-06-05",{"path":440,"title":441,"date":445},{"path":422,"title":423,"date":448},"2025-10-30",{"path":425,"title":426,"date":448},[451,453,455],{"path":419,"title":420,"date":452},"2025-11-14",{"path":414,"title":415,"date":454},"2025-11-20",{"path":431,"title":432,"date":456},"2025-07-02",1782141949390]