I spent two weeks assuming my website had a technical problem.
That is what every article tells you. Check your robots.txt. Check your schema. Check whether your CMS is stripping your content. So I did all of it, carefully, on my own Blogspot site, expecting to find something broken.
The technical layer came back clean. Seven checks out of seven.
The problem was somewhere I had not thought to look: 282 headings across 93,270 words, and only fifteen of them were questions.
This post is the audit, the numbers, and the three changes I am making as a result.
The site I audited
arhashirbooks.blogspot.com — thirteen published posts, 93,270 words, written between late October and early November 2026. Topics are mostly AI search, structured data, and a few straight how-to guides. Nothing unusual. A standard Blogspot blog with a custom theme.
My hypothesis was that the platform was the problem. Blogspot has a reputation for being technically limited compared to a self-hosted site, and I assumed that reputation had cost me citations.
It had not.
What I measured
Every number below came from the live site, not from a dashboard. Blogspot publishes a full JSON feed of every post and its raw HTML content at a predictable URL, which makes this auditable by anyone.
curl -s "https://arhashirbooks.blogspot.com/feeds/posts/default?alt=json&max-results=500" -o feed.json That single request returns every post, its publish date, its permalink, and the complete HTML body. No scraping, no rendering, no third-party tool. If you are on Blogspot, you can run exactly the same audit on your own blog in about a minute.
From that feed I extracted seven technical checks and four content checks.
Finding 1: the technical layer was fine
| Check | Result | Status |
|---|---|---|
robots.txt allows crawling | Yes, only /search and /share-widget disallowed | ✅ |
| XML sitemap exists and is reachable | 200, listed in robots.txt | ✅ |
| Canonical tag present on posts | Yes, self-referencing | ✅ |
| JSON-LD structured data | BlogPosting, Organization, Person, WebPage | ✅ |
Single <h1> per page | 1 | ✅ |
| Mobile viewport meta | width=device-width, initial-scale=1 | ✅ |
| Open Graph image | Present on posts | ✅ |
Seven for seven. The platform ships a reasonable default template, and nothing was blocking anything.
This matters because it kills the most common diagnosis. If your site is on a mainstream platform, the technical foundation is almost certainly not your problem. You are not being ignored because of a missing tag.
You are being ignored because of what the crawler finds after it gets in.
Finding 2: 282 headings, 15 questions
I pulled every <h2> from every post and counted how many were phrased as an actual question — meaning they ended in a question mark and were asking something a reader might type.
15 out of 282. That is 5.3%.
Here is every post, sorted by length, with its heading count and question count:
| Post | Words | H2 | Questions |
|---|---|---|---|
| 25 AI Workflows for Small Business | 20,713 | 59 | 0 |
| Personal AI Assistant: 15 Best AI Agents | 11,371 | 25 | 3 |
| Fractional Chief AI Officer (CAIO) | 8,019 | 19 | 2 |
| How to Focus Better at Work | 7,743 | 27 | 0 |
| Structured Data for AI Search | 7,066 | 17 | 0 |
| What Is an SBOM? | 6,823 | 23 | 3 |
| How to Read Body Language | 6,611 | 21 | 3 |
| AI Visibility Audit | 6,263 | 15 | 1 |
| EU Cyber Resilience Act Deadlines | 5,293 | 17 | 2 |
| AI Search Optimization | 3,914 | 17 | 1 |
| Which Task Is a Generative AI Task? | 3,707 | 14 | 0 |
| Crawled – Currently Not Indexed on Blogger | 3,490 | 17 | 0 |
| How to Track AI Search Visibility | 2,257 | 11 | 0 |
| Total | 93,270 | 282 | 15 |
Look at the top row. My longest post — 20,713 words, 59 headings — has zero question headings. It is the most thorough thing I have written and it is structurally the least retrieval-friendly.
Six of the thirteen posts had zero question headings. Not one.
Here is what my headings actually look like, taken directly from the feed:
- "Start with visible facts, not code"
- "What structured data can and cannot do"
- "The 100-point AI visibility scorecard"
- "Choose schema by the page's job"
These are not bad headings. They are clear, specific, and useful to a human reading top to bottom. I was proud of them.
They are also invisible to a retrieval system that is trying to match a user's question to a passage of text.
Why question headings matter more than they sound
When someone asks ChatGPT or Perplexity a question, the system does not read your whole page. It retrieves passages, and it matches them against the shape of the query.
If the query is "does schema help AI search", a passage sitting under the heading "Does schema help AI search?" is a near-exact match. A passage sitting under "Start with visible facts, not code" might contain the same information and might be equally true — but the system has to infer that. Inference is work. Retrieval systems prefer not to work.
That is the whole mechanism. It is not a trick and it is not a ranking factor in Google's classic sense. It is about making the match obvious instead of making the machine guess.
One post on my blog already did this correctly, by accident. It has a heading that reads "Why is my website not showing up in ChatGPT? Start with this 60-second triage" and it remains the post with the most question-shaped structure I have written. That is the pattern to copy deliberately rather than land on by luck.
The three heading mistakes I was making
Rewriting 282 headings taught me that I had three specific habits, and all three are common.
Habit 1: clever headings instead of plain ones.
"Start with visible facts, not code" is a nice line. It also requires the reader to already know what the section is about. A plain heading — "Should you fix visible content before adding schema?" — tells the system what question lives underneath, in the words the searcher would use.
Clever headings are written for a human who is already reading. Plain question headings are written for a human who is still deciding whether to read.
Habit 2: compound headings that merge two ideas.
Several of mine did two jobs at once: "Structured data, schema and JSON-LD: three different jobs." That is a definition, a comparison, and a heading all crammed into one line. When a passage underneath a compound heading is retrieved, the system cannot tell which part you are answering.
One heading, one question. If a section answers two questions, it should be two sections.
Habit 3: navigational labels dressed up as headings.
"On this page" appeared as an <h2> on more than one post. So did "The 10-minute map: where to start." Those are page furniture. They burn one of your heading slots on something that will never match a query.
Page furniture belongs in a list, or as bold text, or as an actual table of contents component — not as a heading competing with your content headings.
What a matching query actually looks like
Concrete example, using a real section from my own blog.
A searcher types: "does schema help AI search".
My original heading: "What structured data can and cannot do".
The paragraph underneath said something close to: schema does not directly make AI systems cite you, but it removes ambiguity about entities and facts, and the measurable benefit shows up in disambiguation rather than citation count.
Everything needed to answer "does schema help AI search" was in that paragraph. Nothing in the heading matched the query.
The rewrite: "Does schema help AI search? The honest evidence."
Same paragraph. Same claim. Now the heading contains every word of the query, in the same order, ending as a question. A retrieval system scanning for a passage about whether schema helps AI search no longer has to infer anything — the match is explicit.
This is not clever. It is closer to janitorial work. But it is the specific work that most sites skip, because it is boring and because the old headings already felt finished.
The rewrite, before and after
I did not have to change any content. Only the headings.
| Before | After |
|---|---|
| Start with visible facts, not code | Should you fix your visible content before adding schema? |
| What structured data can and cannot do | What does structured data actually do for AI search? |
| The 100-point AI visibility scorecard | How do you score AI visibility out of 100? |
| Choose schema by the page's job | Which schema type should you use for each page? |
| Validate in five passes | How do you validate JSON-LD without breaking existing markup? |
Same content underneath. Same claims, same evidence, same order. The heading now names the question the passage answers.
There is a limit on this. Do not turn every heading into a question, because that reads like a FAQ page and humans hate it. In a 3,000-word post, five or six question headings is enough to give the retrieval system clear anchors without turning the article into a quiz.
Finding 3: eight of thirteen posts never linked to the thing I sell
This one was worse than the heading problem, and it had nothing to do with AI.
Of thirteen posts:
- 8 had no link to my product page at all
- 5 had at least one
- 0 linked to anywhere else I publish
I had 93,000 words of content that people were reading, and in most of it there was no next step. A reader who finished a 7,000-word guide on structured data had nowhere to go.
That is not an SEO problem. That is a basic editorial mistake, and I had made it on sixty percent of my own library.
The fix is not to stuff links everywhere. It is to add exactly one relevant next step per post, placed where the reader has just finished the problem you described. If the post is about AI visibility audits, the next step is the checklist. If it is about schema templates, the next step is the full set of templates.
Finding 4: zero posts pointed at my other platform
Every post linked internally to other posts on the same blog. Good. None of them linked out to where I also publish.
That is a missed connection, not a disaster. Cross-linking between your own properties does two things: it gives readers a second place to find you, and it makes the relationship between your entities explicit to anything reading the web.
What I am changing
Three changes, in this order.
1. Rewrite the headings on the five posts that already rank. Not new content. Five or six question-shaped headings per post, using the actual questions those sections answer. This is a two-hour job across five posts and it touches nothing else — no title changes, no URL changes, no republishing.
2. Add one next step to every post. For the eight posts with no product link, one relevant link, placed after the section that solves the problem. For the five that already have one, check that it is in the right place rather than bolted onto the end.
3. Add a link back from every post to the main blog and to my other writing. Two lines at most. Intrusive link blocks at the bottom of posts do nothing; a sentence in context does something.
I will report back with numbers. The honest expectation is that none of this moves anything for four to twelve weeks, and I would rather say that now than pretend otherwise.
Which posts to fix first
You cannot rewrite 282 headings in an afternoon, and you should not. The order matters more than the volume.
I ranked my thirteen posts on three questions, and fixed them in that order.
1. Does this post already get impressions from Google?
Check Search Console, not your feelings. A post with 400 impressions and a 0.4% click-through rate is a post Google already considers relevant but not compelling. That is the cheapest fix available to you: better headings on a page that already ranks.
A post with zero impressions is a different problem entirely. Rewriting its headings will not create demand that does not exist.
2. Does the post answer a question someone would actually type?
Not "would a reader find this useful" — literally, is there a search query that maps to this section. If the section is "How to Focus Better at Work", the queries are real and specific. If it is "The decision that matters before choosing a tool", the query is probably something like "how to choose an AI tool for my business", which is close but not the same.
3. Does the post end anywhere?
A post that solves a problem and then stops is a dead end. A post that solves a problem and then offers the next step is a funnel, and it does not require you to be pushy. It requires you to notice that the reader who just finished your 7,000-word guide on structured data might want the templates.
My ranking, once I applied all three: the five AI-search posts first, because they have the clearest queries, the highest commercial intent, and they already rank for something. The generic how-to posts (focus, body language, generative AI tasks) last, because they bring traffic that has nothing to do with what I sell, and converting them is a different project.
That last point is worth sitting with. Two of my thirteen posts are about body language and focus at work. They are fine posts. They will never sell a developer checklist, no matter how good the headings are.
What I expect, and when
It would be easy to end this post with the implication that fixing headings will get me cited next week. It will not.
Here is what I actually expect, with the reasoning attached.
| Timeframe | What I expect to see |
|---|---|
| Week 1–2 | Nothing. Google has to recrawl. Citations will not move. |
| Week 3–4 | Possible movement on exact long-tail queries where I already rank. |
| Week 6–8 | First honest signal. Either some queries start returning my pages, or they do not. |
| Week 12 | Enough data to say whether this worked, with a real before-and-after. |
The reason for the delay is not mysterious. Recrawling is not instant, retrieval indexes are rebuilt on their own schedule, and the queries I care about are ones where I currently rank nowhere. Even a perfect heading rewrite cannot shortcut a site that has no authority yet.
Which is the part I want to be honest about: headings are a fix for a site that is already being found and not being chosen. They will not make a site get found in the first place. If nobody knows your site exists, better headings change nothing, because there is no query reaching your pages at all.
My site has been found — it has traffic and it has indexed pages. My headings were costing me the second step. That is the specific problem I am fixing.
How to run this on your own blog
If you are on Blogspot, the whole audit is three commands.
Get the feed:
curl -s "https://yourblog.blogspot.com/feeds/posts/default?alt=json&max-results=500" -o feed.json Count your headings and your questions:
import json, re feed = json.load(open("feed.json")) total_h2 = total_q = 0 for entry in feed["feed"]["entry"]: html = entry["content"]["$t"] headings = re.findall(r"<h2[^>]*>(.*?)</h2>", html, re.S) total_h2 += len(headings) total_q += sum(1 for h in headings if re.sub(r"<[^>]+>", "", h).strip().endswith("?")) print(f"{total_q} of {total_h2} headings are questions") Check what your headings actually say:
for entry in feed["feed"]["entry"]: print("\n#", entry["title"]["$t"]) for h in re.findall(r"<h2[^>]*>(.*?)</h2>", entry["content"]["$t"], re.S): print(" -", re.sub(r"<[^>]+>", "", h).strip()) That is it. If you are not on Blogspot, the same idea works with any sitemap and a loop over your <h2> tags.
If you want the full version, with the technical checks and the scoring, I put the whole thing into a checklist:
Free AI Search Readiness Checklist (20 pages, no email gate) →
And if you want the complete system — the 238-page handbook, the audit script, the schema templates and the scoring workbook:
Structured for Answers: the full AI Search & SEO Vault →
What I still do not know
Three things I want to be clear about, because the numbers above are easy to over-read.
I have not measured whether question headings increase citations. I changed mine and I am watching. I do not have before-and-after data yet. The reasoning is sound and the mechanism is visible, but reasoning is not evidence, and I would rather say so than dress up a hypothesis as a result.
Thirteen posts is a small sample. One blog, one niche, one author. It is a case study, not a study.
The heading count may not matter at all on its own. It could be that question headings matter only when the content underneath them is genuinely good. My content was fine and my headings were not, which is a very specific starting condition. Yours may be the reverse.
If you run the same audit on your own blog, I would like to see the number. Drop your question-heading percentage in the comments. I will collect them and publish the range, whatever it turns out to be.
I write about AI search and what actually moves citations, mostly by testing things on my own sites and publishing the numbers either way. The longer guides live at arhashirbooks.blogspot.com.
