Google Rejected My Site for 'Low-Value Content.' Here's What I Actually Fixed.
I applied for Google AdSense and got rejected for 'low-value content.' Instead of guessing what went wrong, I deployed four AI agents to audit the entire site. Here's what they found and what I fixed first.
Series: VIBE.LOG
- 1. The Layout Vocabulary Cheat Sheet: What to Call That Thing on Your Screen
- 2. I Spent 3 Hours Trying to Proxy a Blog Subdomain. Here's My Descent Into Madness.
- 3. The Complete SEO Guide: How to Make Google Actually Notice Your Website
- 4. Why Your Next.js Favicon Isn't Showing (And the Three Ways to Actually Fix It)
- 5. GitHub Keeps Telling Me My Branch Is Fine. And Also Not Fine. At the Same Time.
- 6. Mobile-First Playground: Making an Astrology Grid Actually Work on a Phone (And Go Viral While Doing It)
- 7. Playground Is Live: The Destiny Grid, Real Astrology, and Why I'm Shipping a Toy Every Month
- 8. The Interactive Component Cheat Sheet: What to Call That Clickable Thing
- 9. Google Rejected My Site for 'Low-Value Content.' Here's What I Actually Fixed. โ you are here
- 10. I Actually Fixed Everything. Here's What That Looked Like.
- 11. I Hired 131 AI Employees Today. Here's How.
- 12. I Let My AI Run 72 Backtests While I Watched. It Picked the Winner.
- 13. I Taught My AI to Stop Asking Questions. It Took Five Rewrites.
- 14. Obsidian Turned My Scattered Notes Into a Second Brain. Here's How to Set It Up.
- 15. The Destiny Grid Gets Its East Wing: I Rebuilt Saju (ๅๆฑๅ ซๅญ) in TypeScript
- 16. Molecule Me: Your Personality, Encoded in Chemistry
I opened my email expecting the AdSense approval. I got this instead:
Your site doesn't meet Google AdSense Program Policies. Reason: Low-value content.
Low-value content.
Thirty-three blog posts. A custom-built Next.js site with structured data, OpenGraph tags, a sitemap, and a robots.txt. A privacy policy. Terms of service. An FAQ page. A contact form. I'd even written a 2,500-word SEO guide and a complete UI component glossary.
And Google looked at all of it and said: low value.
That stung.
๐ฎ The Temptation: Just Reapply and Hope
My first instinct was to click "Request review" again and hope a different reviewer would be kinder. Lots of people online say they got approved on the second or third try with zero changes.
But I'm the kind of person who once spent four hours debugging a favicon just to understand why it was broken. I wasn't going to blindly reapply. I wanted to know exactly what was wrong.
The problem? Google's rejection email is comically vague. "Low-value content" could mean:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ "Low-Value Content" could mean: โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข Your posts are too short โ
โ โข Your site looks untrustworthy โ
โ โข You're missing critical pages โ
โ โข Your content is AI-generated slop โ
โ โข Your site is too new โ
โ โข Some technical issue Google won't tell you โ
โ โข All of the above โ
โ โข None of the above โ
โ โข Yes โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโHelpful, right?
So instead of guessing, I did what any reasonable person would do: I called in a team of AI agents to audit my entire site.
๐ ๏ธ Deploying Four Agents to Find the Problem
I use Claude Code for basically everything I build. It has this feature where you can launch specialized sub-agents โ think of them as consultants you can hire instantly, each with a different expertise.
I deployed four of them, all running in parallel:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SITE AUDIT TEAM โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโค
โ SEO โ Content โ Next.js โ Research โ
โ Specialist โ Marketer โ Dev โ Analyst โ
โโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโผโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโค
โ Read Google'sโ Read all 33 โ Inspect โ Search for โ
โ actual rules โ blog posts โ every โ people who got โ
โ and compare โ and grade โ source โ rejected and โ
โ to my site โ each one โ file โ later approved โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโ
โ โ โ โ
โผ โผ โผ โผ
Gap analysis Quality audit Code review Case studiesEach agent had a specific job. None of them knew what the others were doing. I wanted independent opinions.
Here's what came back.
๐ Agent #1: SEO Specialist โ "Where Is Your About Page?"
This agent fetched Google's actual AdSense documentation (the four links from the rejection email) and compared every requirement against my site structure.
Its very first finding, marked severity: critical:
You don't have an
/aboutpage.
I thought I did. My homepage has an "Our Story" section. The navigation bar has an "About" link. But here's the thing โ that link pointed to /#story, which is just a scroll anchor on the homepage. There was no standalone /about URL.
Why does this matter? Because AdSense reviewers (human or bot) literally type yoursite.com/about to check if a real person runs the site. If that URL returns a 404, you fail the trust check immediately.
What I thought I had:
Nav: [Lab] [Playground] [About] [Blog]
โ
โผ
Homepage /#story section
(same page, just scrolls down)
What Google expected:
Nav: [Lab] [Playground] [About] [Blog]
โ
โผ
/about โ dedicated page
(separate URL, indexable, crawlable)The SEO agent also flagged something I hadn't considered: I build tools related to medicine (PKยทSwift) and finance (CryptoBacktest). Google classifies these as YMYL content โ "Your Money or Your Life." Sites in this category face stricter trust requirements. And my author bio was just "Jay." No last name. No credentials. No photo. No LinkedIn.
From Google's perspective, an anonymous person named "Jay" offering pharmacokinetic software is about as trustworthy as a Wikipedia article written by "TrustMeBro42."
๐ Agent #2: Content Marketer โ "6 of Your Posts Are Basically Empty"
This agent read all 33 blog posts and graded each one:
| Grade | Count | Criteria |
|---|---|---|
| GREEN | 13 (39%) | Solid โ 800+ words, educational value, original insights |
| YELLOW | 17 (52%) | Borderline โ under 800 words or lacks depth |
| RED | 3 (9%) | Thin content โ Google would flag these immediately |
The three RED posts:
1. "Hello World" (183 words) My very first post. Four paragraphs saying "hi, I'm Jay, I make things." That's an introduction, not content. Google sees 183 words and thinks: spam site with filler pages.
2. "Global UX Is 200 Tiny Fixes" (285 words) I wrote about removing two Korean words from a button to improve international UX. One example. 285 words. That's a tweet thread, not a blog post.
3. "Why I Shipped Before Backend" (425 words) Philosophy about shipping early. No code. No screenshots. No data. Just vibes. Appropriately, I suppose, for a site called Vibed Lab โ but Google doesn't grade on brand consistency.
The brutal part: more than half my posts (52%) were in the YELLOW zone. Not bad enough to be flagged individually, but collectively they bring the average quality down.
๐ป Agent #3: Next.js Developer โ "Your Contact Page Has No Metadata"
This agent went file-by-file through my source code. Most of the technical SEO was solid (I'd spent weeks on it after writing the SEO guide), but it found a sneaky bug:
My Contact page was a client component ("use client" at the top). I thought the metadata was missing because of this. Turns out I'd actually handled it correctly in a separate layout.tsx file โ so this was a false alarm.
But the agent caught real issues:
- Organization JSON-LD missing
logoโ Google's structured data validator throws a warning - BlogPosting
dateModifiedhardcoded โ every post shows the same publish and modified date, even if I update them later - AdSense script loading before approval โ the
adsbygoogle.jsscript was active on every page, even though I wasn't approved yet
๐ฌ Agent #4: Research Analyst โ "Your Site Is Two Weeks Old"
This agent searched the internet for other people's AdSense rejection stories. It found something I'd been ignoring:
Google typically expects 3โ6 months of consistent publishing before approving AdSense.
My site launched on February 15, 2026. I applied about two weeks later. All 33 posts were published within a 10-day window.
From Google's perspective:
What I see:
"I wrote 33 quality posts in 2 weeks!"
What Google sees:
"Brand new domain. 33 posts appeared overnight.
Possible content farm. Flag for review."The research agent also confirmed something important: public/ads.txt is mandatory, and I already had it. Small win.
โ What I Fixed First (And Why)
Four agents. Hundreds of findings. But I didn't try to fix everything at once. I picked the changes that were:
- Easy โ could be done in minutes
- High impact โ directly addressed trust signals Google checks
Here's what I changed in Round 1:
Fix 1: Nav "About" Link โ /about
One line. Changed /#story to /about.
Before: { href: "/#story", label: "About" }
After: { href: "/about", label: "About" }The actual /about page doesn't exist yet (I need to write real content about myself), but the infrastructure is ready. This is preparation, not procrastination.
Fix 2: Added "About" to Footer
The footer had Privacy Policy, Terms, FAQ, and Contact. No About link. AdSense reviewers check footers for trust signals. Added it as the first item.
Fix 3: Added /about to Sitemap
Priority 0.8 โ higher than FAQ (0.5), contact (0.5), and legal pages (0.3). Google needs to know this page exists and matters.
Fix 4: Told Google's Ad Crawler It's Welcome
Added an explicit rule in robots.ts for Mediapartners-Google (the AdSense crawler). The wildcard * rule already allowed it, but being explicit is a trust signal.
Before: After:
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
โ User-Agent: * โ โ User-Agent: * โ
โ Allow: / โ โ Allow: / โ
โ โ โ โ
โ โ โ User-Agent: โ
โ โ โ Mediapartners-Googleโ
โ โ โ Allow: / โ
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ๐ What's Still Left
Round 1 was the low-hanging fruit. Here's what's next, roughly in priority order:
| Priority | Task | Why |
|---|---|---|
| Now | Write an actual /about page |
The #1 trust signal Google checks |
| This week | Fix the 3 RED posts | Either expand to 800+ words or unpublish |
| Next 2 weeks | Add Author Box to blog posts | Shows a real human wrote this |
| Ongoing | Keep publishing weekly | Build the 3โ6 month track record Google wants |
| AprilโMay | Reapply for AdSense | With enough history to look credible |
๐ง The Real Lesson
I thought "low-value content" meant my writing wasn't good enough. It didn't.
It meant Google couldn't verify that a real, trustworthy person was behind the site. My technical SEO was excellent. My posts (well, most of them) had genuine educational value. But I was essentially an anonymous entity publishing content about medicine and finance with no visible identity.
The fix isn't "write better." The fix is "prove you're real."
If you're dealing with the same rejection, here's what to check first โ before touching a single blog post:
| You're thinking... | Check this first |
|---|---|
| "My content isn't good enough" | Do you have a dedicated /about page? |
| "I need more posts" | Are your existing posts over 800 words each? |
| "Maybe I should rewrite everything" | Is your author identity visible on every post? |
| "Google hates my niche" | Is your site older than 3 months? |
| "I'll just reapply and hope" | Did you actually fix anything? |
The agents didn't write a single line of content for me. They just showed me where to look. Sometimes the hardest part isn't fixing the problem โ it's finding it.
I'll update this post when I reapply. Hopefully the next email starts with "Congratulations."
2026.03.03
Written by
Jay
Licensed Pharmacist ยท Senior Researcher
Building production-grade AI tools across medicine, finance, and productivity โ without a CS degree. Domain expertise first, code second.
About the author โRelated posts