[{"data":1,"prerenderedAt":541},["ShallowReactive",2],{"blog-cat-product-updates":3},[4,312],{"id":5,"title":6,"author":7,"body":8,"category":293,"cover":294,"coverAlt":295,"description":296,"draft":297,"extension":298,"featured":297,"meta":299,"navigation":294,"path":300,"publishedAt":301,"seo":302,"stem":303,"tags":304,"updatedAt":310,"__hash__":311},"blog/blog/json-export-ai-prompt.md","What's New: JSON Reports and a One-Click AI Prompt","SeoSitemap.app",{"type":9,"value":10,"toc":278},"minimark",[11,15,24,29,37,40,43,65,77,80,84,87,94,97,102,109,117,121,128,132,143,158,161,165,168,184,187,193,197,200,214,217,220,224,240,244],[12,13,14],"p",{},"A scan gives you a table. A table tells you that forty pages are missing an H1 — it doesn't tell you whether that's forty separate jobs or one line in a template, which problem to fix first, or what any of it means to somebody who doesn't do SEO for a living.",[12,16,17,18,23],{},"This update is about closing that gap. There are two new items in the Export menu, and the existing CSV export got sharper. Everything below is live now, on every tool — point the ",[19,20,22],"a",{"href":21},"/sitemap-checker","sitemap checker"," at a sitemap and open Export.",[25,26,28],"h2",{"id":27},"copy-ai-prompt","Copy AI prompt",[12,30,31,32,36],{},"This is the one we're most pleased with. Run a scan, click ",[33,34,35],"strong",{},"Export → Copy AI prompt",", then paste into ChatGPT, Claude, Gemini or whatever you already have open. You get back an explanation of your own scan, written for a human.",[12,38,39],{},"What lands on your clipboard is a set of instructions plus a condensed version of your results: the issue counts, the per-template breakdown, and your twenty worst pages. Deliberately not the full page list — on a 500-page scan that runs to hundreds of kilobytes, it won't fit in a chat box, and it isn't what the answer depends on anyway.",[12,41,42],{},"The instructions matter as much as the data. Left to itself, a model handed a pile of scan results tends to do three unhelpful things, so we tell it not to:",[44,45,46,53,59],"ul",{},[47,48,49,52],"li",{},[33,50,51],{},"Don't invent numbers."," The report contains no traffic, rankings or conversion data, so any figure of that kind would be fabricated. We say so explicitly.",[47,54,55,58],{},[33,56,57],{},"Don't present a partial scan as the whole site."," If the 500-page cap cut your sitemap short, the prompt tells the model to say that out loud rather than quietly describing half a site.",[47,60,61,64],{},[33,62,63],{},"Don't write for an SEO specialist."," The answer is meant for whoever owns the site, which is usually not the person who knows what a canonical tag is.",[12,66,67,68,72,73,76],{},"We also explain our own vocabulary to the model, which is what makes the answers genuinely useful. It's told that a fix marked ",[69,70,71],"code",{},"template-edit"," is one change that covers every affected page, while ",[69,74,75],{},"page-content"," means each page needs its own edit — and that anything marked low confidence should widen its estimate rather than be trusted. That's the difference between \"you have 71 problems\" and \"you have one template to fix, plus seven pages to rewrite by hand\".",[12,78,79],{},"Nothing is sent anywhere. The prompt is built in your browser and copied to your clipboard; where you paste it is entirely up to you.",[25,81,83],{"id":82},"report-json","Report (JSON)",[12,85,86],{},"The second new item downloads your scan as a structured JSON file. It's aimed at anyone wiring our output into something else — a script, a spreadsheet pipeline, a report generator, an internal dashboard.",[12,88,89,90,93],{},"The most important thing about it is the version stamp at the top: ",[69,91,92],{},"\"schema\": \"seositemap/v1\"",". We've been burned by tools that quietly restructure their exports, and we're not going to do that to you. If the shape ever changes in a way that breaks parsers, the version changes with it.",[12,95,96],{},"A few decisions inside the file are worth calling out, because they're the ones that make it more useful than a CSV.",[98,99,101],"h3",{"id":100},"h1-is-an-array","H1 is an array",[12,103,104,105,108],{},"A page with eight H1 tags is a real thing we find often, usually on a homepage built from stacked sections. Flattened into a single string, that page is indistinguishable from one with a single correct H1 — the \"multiple H1\" problem simply vanishes from your data. So ",[69,106,107],{},"h1"," is a list, always, even when there's one item in it.",[12,110,111,112,116],{},"If you want the background on why that matters, we wrote about it in ",[19,113,115],{"href":114},"/blog/multiple-h1-tags","multiple H1 tags",".",[98,118,120],{"id":119},"counters-sit-apart-from-the-data","Counters sit apart from the data",[12,122,123,124,127],{},"The file opens with a ",[69,125,126],{},"summary"," block: how many pages have each kind of issue. You shouldn't have to iterate a thousand objects to learn the scale of a problem, and now you don't.",[98,129,131],{"id":130},"work-is-grouped-by-template","Work is grouped by template",[12,133,134,135,138,139,142],{},"This is the part that took the longest to get right. Alongside the per-page results, the report groups your URLs into the templates that produced them — ",[69,136,137],{},"/blog/*",", ",[69,140,141],{},"/services/*"," and so on — and for each template says how much work each issue actually represents.",[12,144,145,146,149,150,153,154,157],{},"Each item carries a ",[69,147,148],{},"units"," count and a ",[69,151,152],{},"unitKind",", plus a plain-English ",[69,155,156],{},"why"," explaining how we reached that conclusion. Seventy-one over-long titles on one blog template, all built from the same title pattern, come through as a single template edit rather than seventy-one rewrites. Seven missing descriptions scattered across unrelated pages come through as seven separate jobs, because that's what they are.",[12,159,160],{},"We think this is the number most audit tools quietly get wrong. A list of problems isn't an estimate; the same hundred issues can be an afternoon or a fortnight depending on how they cluster, and nothing downstream can work that out once the grouping is lost.",[25,162,164],{"id":163},"sharper-issue-exports","Sharper issue exports",[12,166,167],{},"The issue-centric CSV — one row per problem rather than one per page — picked up two new columns.",[12,169,170,173,174,138,177,138,180,183],{},[33,171,172],{},"Code"," is a stable identifier for each kind of issue: ",[69,175,176],{},"missing-h1",[69,178,179],{},"title-too-long",[69,181,182],{},"canonical-mismatch",". Previously the only identity an issue had was its English sentence, which meant anything filtering or grouping our export was matching on prose that could change whenever we reworded a message. Now the wording is presentation and the code is the contract.",[12,185,186],{},"That change fixed a bug we hadn't noticed. The old categoriser only knew the messages it had been taught, so several checks — canonical mismatches and the AI-readability findings among them — were quietly landing in a bucket labelled \"Other\". They're properly categorised now, which may make your next export look like it found new problems. It didn't; it just stopped hiding them.",[12,188,189,192],{},[33,190,191],{},"Source"," is the other new column, and it leads into the last change.",[25,194,196],{"id":195},"saying-what-we-dont-know","Saying what we don't know",[12,198,199],{},"Two kinds of line used to look identical in an export: a real problem on your site, and a page we simply failed to read. A timeout on our end is not a missing H1 on yours, and counting the two together makes a report claim problems that don't exist.",[12,201,202,203,205,206,209,210,213],{},"They're separated now. The ",[69,204,191],{}," column marks each row as ",[69,207,208],{},"Site"," or ",[69,211,212],{},"Scan",", the JSON report keeps them in different fields, and the summary counts only your site's actual issues. Pages we couldn't read are still reported — you should know about them — but they no longer inflate your problem count.",[12,215,216],{},"The same thinking applies to coverage. Free scans are capped at 500 pages, which is plenty for most sites but not for all of them. The report now states how many URLs your sitemap offered, how many we scanned, and how many were skipped. If you send that report to a client or a colleague, it says on its face which part of the site it describes.",[12,218,219],{},"A 404 or a redirect listed in your sitemap, incidentally, stays a genuine finding — that's your site telling search engines about pages that aren't there, and it's worth fixing. It's our own failures we've stopped counting against you.",[25,221,223],{"id":222},"where-to-find-it","Where to find it",[12,225,226,227,229,230,234,235,239],{},"All of this lives in the Export button above your results, on every tool: the ",[19,228,22],{"href":21},", the ",[19,231,233],{"href":232},"/meta-tags-checker","meta tags checker"," and ",[19,236,238],{"href":237},"/content-analysis","content analysis",". No account, no settings to change. Run a scan and the menu is there.",[25,241,243],{"id":242},"key-takeaways","Key takeaways",[44,245,246,251,260,263,269,275],{},[47,247,248,250],{},[33,249,28],{}," puts your scan plus a carefully-worded prompt on your clipboard, so any AI chat can explain the findings in plain language — with instructions not to invent traffic figures or overstate a partial scan.",[47,252,253,255,256,259],{},[33,254,83],{}," exports a versioned ",[69,257,258],{},"seositemap/v1"," document, so parsers built against it won't break when we ship changes.",[47,261,262],{},"H1s are exported as an array, so pages with several of them stay visible in your data instead of flattening into one.",[47,264,265,266,268],{},"Issues are grouped by template with a ",[69,267,148],{}," count, which distinguishes a one-line template fix from two hundred individual edits.",[47,270,271,272,274],{},"Every issue now carries a stable ",[69,273,172],{},", and canonical and AI findings no longer fall into an \"Other\" bucket.",[47,276,277],{},"Our own scan failures are separated from your site's real problems, and the report states how much of your sitemap it actually covered.",{"title":279,"searchDepth":280,"depth":280,"links":281},"",2,[282,283,289,290,291,292],{"id":27,"depth":280,"text":28},{"id":82,"depth":280,"text":83,"children":284},[285,287,288],{"id":100,"depth":286,"text":101},3,{"id":119,"depth":286,"text":120},{"id":130,"depth":286,"text":131},{"id":163,"depth":280,"text":164},{"id":195,"depth":280,"text":196},{"id":222,"depth":280,"text":223},{"id":242,"depth":280,"text":243},"product-updates",true,"What's New: JSON Reports and a One-Click AI Prompt — SeoSitemap.app blog cover","Export your scan as a versioned JSON report, or copy a ready-made prompt that gets any AI chat to explain your findings in plain language.",false,"md",{},"/blog/json-export-ai-prompt","2026-08-26",{"title":6,"description":296},"blog/json-export-ai-prompt",[305,306,307,308,309],"product-update","json-export","ai-prompt","reporting","changelog",null,"USFKPui36Xa0c1i3XWkoYTNtfBxYx3IOE35tiiaMb00",{"id":313,"title":314,"author":7,"body":315,"category":293,"cover":294,"coverAlt":529,"description":530,"draft":297,"extension":298,"featured":297,"meta":531,"navigation":294,"path":532,"publishedAt":533,"seo":534,"stem":535,"tags":536,"updatedAt":310,"__hash__":540},"blog/blog/product-update-ai-friendly-checker.md","What's New: The AI-Friendly Checker, Smarter Meta Audits and Canonical Checks",{"type":9,"value":316,"toc":519},[317,320,323,327,335,342,375,382,386,397,401,408,411,415,422,438,442,451,455,466,473,475],[12,318,319],{},"We've shipped a run of updates over the last few weeks, and rather than let them disappear silently into production, we want to start writing them up. This is the first of what will be a regular changelog: the fixes and features that are already live, what they do, and why we built them.",[12,321,322],{},"Most of this batch points in one direction — making the tool useful in a world where AI assistants, not just search engines, read your pages. But there are some sharper audit checks in here too. Everything below is live right now; point the scanner at your sitemap and you'll see it.",[25,324,326],{"id":325},"the-big-one-an-ai-friendly-checker","The big one: an AI-Friendly Checker",[12,328,329,330,334],{},"The headline addition is a brand-new tool: the ",[19,331,333],{"href":332},"/ai-friendly-checker","AI-Friendly Checker",". It scores how well each page on your site can be read, understood and cited by AI crawlers and answer engines like ChatGPT, Perplexity and Google's AI Overviews.",[12,336,337,338,341],{},"The key insight it's built around is that ",[33,339,340],{},"most AI crawlers don't run JavaScript"," — they read the raw HTML your server returns. So the checker fetches each page the same way, without executing scripts, and scores what it can actually extract. Each page gets a 0–100 readiness score broken down across the signals that matter:",[44,343,344,350,360,369],{},[47,345,346,349],{},[33,347,348],{},"Extractable content"," — how much real text is in the raw HTML. A near-empty body is the biggest red flag, because it usually means the page is client-rendered and invisible to crawlers that don't run JavaScript.",[47,351,352,355,356,359],{},[33,353,354],{},"Structured data"," — whether the page ships JSON-LD (",[69,357,358],{},"schema.org",") for machines to lift clean facts from.",[47,361,362,368],{},[33,363,364,365],{},"Title and description, heading outline, and a semantic ",[69,366,367],{},"\u003Cmain>"," — the structure a model uses to parse and represent your page.",[47,370,371,374],{},[33,372,373],{},"A declared language and a freshness signal"," — so assistants can answer in the right language and favour current content.",[12,376,377,378,116],{},"Click any score and it expands into a per-check breakdown so you can see exactly what passed, what's borderline, and what failed. If you want the full background on why these signals matter, we wrote a companion guide on ",[19,379,381],{"href":380},"/blog/generative-engine-optimization","generative engine optimisation",[98,383,385],{"id":384},"site-wide-ai-signals-too","Site-wide AI signals too",[12,387,388,389,392,393,396],{},"Two things that matter for AI can't be seen on any single page, so the checker handles them once per scan at the domain level. It reports whether you publish an ",[69,390,391],{},"llms.txt"," (a curated map for language models), and whether your ",[69,394,395],{},"robots.txt"," allows the major AI crawlers — GPTBot, ClaudeBot, PerplexityBot, Google-Extended and others — or blocks them. Plenty of sites block AI bots by accident in a copied robots file; now you can see at a glance whether yours does.",[25,398,400],{"id":399},"smarter-meta-audits-at-a-glance","Smarter meta audits at a glance",[12,402,403,404,407],{},"The meta audit got a usability upgrade that we'd wanted for a while. Previously, when you ran a ",[19,405,406],{"href":232},"meta tags audit",", the results table just showed a flat \"Yes\" to say metadata had been collected — which told you nothing about whether it was any good.",[12,409,410],{},"Now that column is a colour-coded summary chip for each page: green when everything's clean, amber when there are warnings, red when something critical is missing. Click it and it expands into a full per-field breakdown — title, description, canonical, robots, Open Graph and Twitter — each with its own status and a short note (for example, \"Title — 72 chars, over the 60 limit\"). It's the difference between knowing metadata exists and knowing whether it's actually working, without having to export a CSV to find out.",[25,412,414],{"id":413},"canonical-checks-that-actually-catch-problems","Canonical checks that actually catch problems",[12,416,417,418,421],{},"This one started as a gap a user spotted, and they were right. The scanner was reading each page's ",[69,419,420],{},"\u003Clink rel=\"canonical\">"," but never actually checking it — so a missing canonical, or one pointing at the wrong URL, passed completely silently.",[12,423,424,425,428,429,432,433,437],{},"That's fixed. The meta audit now validates canonicals two ways. First, ",[33,426,427],{},"presence",": pages with no canonical tag get flagged. Second, and more importantly, ",[33,430,431],{},"self-reference",": if a page's canonical points at a ",[434,435,436],"em",{},"different"," URL than the page itself, we flag it — because that's how a page quietly hands its ranking signals to another address, or disappears from the index entirely. The comparison is deliberately forgiving about the things that don't matter (an http-to-https upgrade, a trailing slash, a dropped tracking parameter all count as self-referential) so you only see the mismatches that are genuinely worth investigating.",[25,439,441],{"id":440},"we-made-the-site-itself-ai-friendly","We made the site itself AI-friendly",[12,443,444,445,447,448,450],{},"In the spirit of eating our own cooking, we also applied the advice to ourselves. SeoSitemap.app now publishes its own ",[69,446,391],{},", and our ",[69,449,395],{}," explicitly welcomes the major AI crawlers. It's a small thing, but it would be a bit awkward to ship an AI-friendliness checker and score badly on our own tool — and now we don't.",[25,452,454],{"id":453},"getting-the-data-out","Getting the data out",[12,456,457,458,461,462,465],{},"A quick reminder on exports, since they pair well with the new checks. Every scan can be exported three ways: a full per-URL CSV inventory, an ",[33,459,460],{},"issues-only CSV"," with one row per problem (handy for filtering and assigning work in a spreadsheet), and a shareable ",[33,463,464],{},"HTML report",". The AI readiness score and its per-check results now ride along in the CSV export too, so you can track readiness across a whole site over time.",[12,467,468,469,472],{},"If you're auditing a large site, remember the scanner pulls every URL from your ",[19,470,471],{"href":21},"sitemap"," and audits up to 500 pages per run — so a complete, valid sitemap is the thing that determines how much of your site actually gets checked.",[25,474,243],{"id":242},[44,476,477,490,496,502,513],{},[47,478,479,484,485,234,487,489],{},[33,480,481,482],{},"The new ",[19,483,333],{"href":332}," scores every page for how readable it is to AI crawlers — extractable text, structured data, semantics and freshness — plus site-wide ",[69,486,395],{},[69,488,391],{}," checks.",[47,491,492,495],{},[33,493,494],{},"The meta audit results"," now show a colour-coded summary chip per page that expands into a full per-field breakdown, instead of a flat \"collected\" flag.",[47,497,498,501],{},[33,499,500],{},"Canonical tags are now validated"," for presence and self-reference, catching missing canonicals and ones that point at the wrong URL.",[47,503,504,507,508,510,511,116],{},[33,505,506],{},"We made our own site AI-friendly"," with an ",[69,509,391],{}," and explicit AI-crawler access in ",[69,512,395],{},[47,514,515,518],{},[33,516,517],{},"Exports now include the AI readiness score",", alongside the existing CSV inventory, issues CSV and shareable HTML report.",{"title":279,"searchDepth":280,"depth":280,"links":520},[521,524,525,526,527,528],{"id":325,"depth":280,"text":326,"children":522},[523],{"id":384,"depth":286,"text":385},{"id":399,"depth":280,"text":400},{"id":413,"depth":280,"text":414},{"id":440,"depth":280,"text":441},{"id":453,"depth":280,"text":454},{"id":242,"depth":280,"text":243},"What's New: The AI-Friendly Checker, Smarter Meta Audits and Canonical Checks — SeoSitemap.app blog cover","A roundup of what we've shipped recently — a new AI-Friendly Checker, an interactive meta summary, real canonical validation, and AI-crawler discoverability.",{},"/blog/product-update-ai-friendly-checker","2026-06-21",{"title":314,"description":530},"blog/product-update-ai-friendly-checker",[305,537,538,539,309],"ai-friendly-checker","meta-tags","canonical","1sNaYldXmd01a-EzM09Sik-4TPMbyKLPaMB4TwduQyk",1787779427818]