Every Post on This Blog Is an SEO Experiment. I'll Publish the Ranking Data Monthly, Wins or Losses.
You have read a hundred posts that say "write consistently and the rankings will come." None of them ever showed you the rankings.
Garvit Sharma
25 June 2026 · 6 MIN READ
Every Post on This Blog Is an SEO Experiment. I'll Publish the Ranking Data Monthly, Wins or Losses.
webight.comOn this page
You have read a hundred posts that say "write consistently and the rankings will come." None of them ever showed you the rankings.
That is the whole game. Everyone teaches SEO. Almost nobody opens their Search Console and lets you watch the queries that died. So you read tips, you nod, you have no idea if any of it worked for the person who wrote it.
I am going to do the opposite. Every post on this blog is a live SEO experiment. Each one targets a specific query I picked on purpose. And on the first week of every month, I am publishing the raw Search Console data for all of them. Impressions, average position, clicks. Including the posts that rank at position 84 and get two impressions from someone in a country I have never worked in.
Wins and losses. Both go up.
The setup, so you know it is real
Here is the plan I committed to. 30 articles. One a day. Each article is built around a single query someone actually types into Google, the kind a person searching for a developer or wrestling with a slow Next.js site would search.
Not 30 random posts. 30 targeted shots. "next.js lcp render delay framer motion." "supabase blocked in india." "landing page price india." Real strings, real intent.
Then the part that scares most people. On the first Monday of each month I open Google Search Console, export the data for every URL on this blog, and publish it. A table. URL, target query, impressions, average position, clicks. No editing out the embarrassing rows.
If post 14 is sitting at position 91 with zero clicks after 30 days, that row stays in the table with everything else. You get to watch it fail in public.
Why I am doing it this way, and it is not bravery
I am doing this for two reasons, and both are about psychology, not SEO.
The first one is public commitment. There is a thing in behavioral psychology called the commitment and consistency principle. Cialdini wrote about it. Once you state something publicly, you feel pressure to act in line with it, because going back on a public word costs you more than keeping it. I have lived this. The days I told Utsav "I am shipping this tonight" are the days it shipped. The days I kept the plan in my head, it slipped to tomorrow.
So I am weaponizing that against my own laziness. By telling you, today, that 30 posts are coming and the numbers go public monthly, I have made quitting expensive. If I ghost this blog after 6 posts, you will see the gap. The empty table will be the evidence. That fear is the engine.
See, motivation is a liar. It shows up some days and not others. A public deadline does not care how I feel.
The second reason is that honesty is rare enough to be a moat.
Think about the last SEO "case study" you read. It showed you a green line going up and to the right and a screenshot cropped so tight you could not check anything. You did not believe it. I did not believe it. Screenshots can be edited in two minutes.
Now picture someone handing you the full export, the good rows and the dead rows in the same table, month after month. The dead rows are what make the live rows believable. When I show you post 9 hit position 4 for its query, you will trust it, because three rows above it post 6 is rotting at position 88 and I left it there.
That is the moat. Anyone can fake a win. Almost nobody will publish a loss. The losses are the proof.
What I am actually tracking, copy this
If you want to run the same experiment, here is the exact query I run against the Search Console API export to build the monthly table. I pull the data into a small Postgres table on Supabase and query it. Nothing fancy.
-- table: gsc_rows
-- columns: url text, query text, impressions int,
-- clicks int, position numeric, captured_on date
-- one row per target post, latest snapshot, ranked worst to best
-- so the failures sit at the top where I can't hide them
select
url,
query as target_query,
impressions,
clicks,
round(position, 1) as avg_position,
captured_on
from gsc_rows
where captured_on = (select max(captured_on) from gsc_rows)
order by position desc; -- worst rank first, on purpose
And here is the tiny script that hits the Search Console API and dumps the rows. Service account, one site, last 28 days. Drop in your own credentials and property URL.
// npm i googleapis
import { google } from "googleapis";
const auth = new google.auth.GoogleAuth({
keyFile: "./service-account.json",
scopes: ["https://www.googleapis.com/auth/webmasters.readonly"],
});
const searchconsole = google.searchconsole({ version: "v1", auth });
const SITE = "sc-domain:webight.com"; // your verified property
async function pullRows() {
const today = new Date();
const start = new Date(today);
start.setDate(start.getDate() - 28);
const fmt = (d) => d.toISOString().slice(0, 10);
const res = await searchconsole.searchanalytics.query({
siteUrl: SITE,
requestBody: {
startDate: fmt(start),
endDate: fmt(today),
dimensions: ["page", "query"],
rowLimit: 500,
},
});
const rows = (res.data.rows || []).map((r) => ({
url: r.keys[0],
query: r.keys[1],
clicks: r.clicks,
impressions: r.impressions,
position: Number(r.position.toFixed(1)),
}));
// sort worst rank first, so losses lead the table
rows.sort((a, b) => b.position - a.position);
console.table(rows);
return rows;
}
pullRows().catch((e) => {
console.error("GSC pull failed:", e.message);
process.exit(1);
});
Run that on the first of the month, paste the output, done. No dashboard, no SaaS, no excuse. The whole point is that the data is boring and checkable.
The part that is going to hurt
I already know what happens here, because I have audited my own site and it was ugly.
When I ran a real audit on webight.com, I found canonicals pointing to webight.com while the server was 307-redirecting every request to www.webight.com. I found 12 deleted case-study URLs still sitting in the sitemap, telling Google to crawl pages that no longer existed. My hero headline had a 4,190ms LCP render delay because a framer-motion opacity animation was waiting for hydration before it would paint. I fixed it with a transform-only CSS animation and the render delay dropped to 382ms.
My own house was not clean. So I am not coming into this experiment pretending I have it figured out. Some of these 30 posts are going to flop for reasons I will only understand after I publish the numbers and stare at them.
And here is the thing I have to be honest about upfront. Out of 30 posts, my real expectation is that maybe 8 to 10 ever crack the first two pages within 90 days. The rest will sit deep, quiet, getting a trickle of impressions. That is what SEO actually looks like when you are a new domain with little authority. If anyone tells you all 30 will rank, they are selling you something.
The wins fund the belief. The losses fund the trust. I need both tables full.
Your move
I picked the first batch of queries from my own work, the slow sites, the blocked databases, the pricing questions clients ask me. But I would rather test what you are actually stuck on.
So tell me a query. Something you would genuinely type into Google about web dev, AI builds, Next.js performance, or hiring a small studio. Drop it in a reply or DM it to me. I will add the strongest ones to the experiment, write the post, and when the monthly data comes out, your query will be a row in the table, ranking somewhere or ranking nowhere, in full view.
Most people guard their numbers because the numbers might embarrass them. So go find one person in your field who shows you the losses next to the wins. That is the only one worth learning SEO from, and if you cannot find them, that is the gap you should fill yourself.
We build custom platforms, websites, and automation.
The two people who build it are the two you talk to, and every price is on the page.

Garvit Sharma
Full-stack developer and co-founder of Webight, a two-person web and AI studio in India. He writes these from real client work. More about us.
Keep reading
// RELATEDI Generate 30 Local Landing Pages From One JSON File in Next.js. Code Included.
webight.comI Generate 30 Local Landing Pages From One JSON File in Next.js. Code Included.
8 MIN READ
Google Search Console Reports on WhatsApp Every Monday. n8n Plus 199 Rupees a Month.
webight.comGoogle Search Console Reports on WhatsApp Every Monday. n8n Plus 199 Rupees a Month.
9 MIN READ
I Built an n8n Workflow That Audits Any Website's SEO and Emails the Report. Full JSON Inside.
webight.comI Built an n8n Workflow That Audits Any Website's SEO and Emails the Report. Full JSON Inside.
11 MIN READ