[{"data":1,"prerenderedAt":474},["ShallowReactive",2],{"seo-audit-navigation":3,"mdc-o8y00b-key":46,"seo-audit-version":88,"\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fratings":91,"\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fratings-surround":470},[4,15,29],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fdocs\u002Fseo-audit\u002Fgetting-started","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F1.index",[9,11],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Installation","\u002Fdocs\u002Fseo-audit\u002Fgetting-started\u002Finstallation","1.docs\u002F3.seo-audit\u002F1.getting-started\u002F2.installation",{"title":16,"path":17,"stem":18,"children":19,"page":28},"Configuration","\u002Fdocs\u002Fseo-audit\u002Fconfiguration","1.docs\u002F3.seo-audit\u002F2.configuration",[20,24],{"title":21,"path":22,"stem":23},"Global Configuration","\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Fglobal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F1.global",{"title":25,"path":26,"stem":27},"View Button & Section Configuration","\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Flocal","1.docs\u002F3.seo-audit\u002F2.configuration\u002F2.local",false,{"title":30,"path":31,"stem":32,"children":33,"page":28},"Guide","\u002Fdocs\u002Fseo-audit\u002Fguide","1.docs\u002F3.seo-audit\u002F3.guide",[34,38,42],{"title":35,"path":36,"stem":37},"Assessments for SEO and Readability","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fassessments","1.docs\u002F3.seo-audit\u002F3.guide\u002F1.assessments",{"title":39,"path":40,"stem":41},"Preview URL","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fpreview-url","1.docs\u002F3.seo-audit\u002F3.guide\u002F2.preview-url",{"title":43,"path":44,"stem":45},"Ratings","\u002Fdocs\u002Fseo-audit\u002Fguide\u002Fratings","1.docs\u002F3.seo-audit\u002F3.guide\u002F3.ratings",{"data":47,"body":48},{},{"type":49,"children":50},"root",[51],{"type":52,"tag":53,"props":54,"children":55},"element","p",{},[56,59,68,70,77,79,86],{"type":57,"value":58},"text","Kirby Tools is built on ",{"type":52,"tag":60,"props":61,"children":65},"a",{"href":62,"rel":63},"https:\u002F\u002Fgetkirby.com",[64],"nofollow",[66],{"type":57,"value":67},"Kirby",{"type":57,"value":69}," – with gratitude to the team and community who make it. Help me improve the plugins: share feedback in ",{"type":52,"tag":60,"props":71,"children":74},{"href":72,"rel":73},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fdiscussions",[64],[75],{"type":57,"value":76},"Discussions",{"type":57,"value":78}," or report bugs via ",{"type":52,"tag":60,"props":80,"children":83},{"href":81,"rel":82},"https:\u002F\u002Fgithub.com\u002Fkirby-tools\u002Fcommunity\u002Fissues",[64],[84],{"type":57,"value":85},"Issues",{"type":57,"value":87},".",{"title":89,"date":90},"v3.5.0","2026-09-16",{"id":92,"title":43,"body":93,"description":464,"extension":465,"meta":466,"navigation":467,"path":44,"seo":468,"stem":45,"__hash__":469},"docs\u002F1.docs\u002F3.seo-audit\u002F3.guide\u002F3.ratings.md",{"type":94,"value":95,"toc":456},"minimark",[96,99,104,107,118,126,130,133,137,160,270,378,383,392,433,436,445,449,452],[53,97,98],{},"Every analysis leaves a rating behind: one traffic light for SEO, one for readability, how many results came out good, OK, or bad, the analyzed version, and the time. The plugin keeps one rating per page and language, and one for the site.",[100,101,103],"h2",{"id":102},"dot-on-the-view-button","Dot on the View Button",[53,105,106],{},"The view button carries the rating as a colored dot: green for good, orange for OK, and red for needs improvement. The dot takes the color of the worse of the two lights, so a page with a good SEO light and a bad readability light shows red. Gray means the page has been analyzed but neither category could be scored. A page that was never analyzed shows no dot.",[53,108,109,110,117],{},"Once the page is published again after the analysis, the rating is stale. The dot then shows an exclamation mark in the color of the rating it no longer stands for. The section marks the same state below its report with \"Content changed since\". Run the analysis again, or let ",[60,111,113],{"href":112},"\u002Fdocs\u002Fseo-audit\u002Fconfiguration\u002Fglobal#analyzeon",[114,115,116],"code",{},"analyzeOn: publish"," do it after every publish.",[119,120,121],"panel-mock",{},[122,123],"panel-view-header",{":buttons":124,"title":125},"[{\"text\":\"SEO Audit\",\"icon\":\"seo-audit-analyze\",\"theme\":\"positive-icon\",\"responsive\":true,\"badge\":{\"theme\":\"negative\",\"text\":\"!\"}},{\"icon\":\"window\"},{\"icon\":\"cog\",\"dropdown\":true},{\"text\":\"Public\",\"icon\":\"status-listed\",\"theme\":\"positive-icon\"}]","Our Studio",[100,127,129],{"id":128},"who-stores-a-rating","Who Stores a Rating",[53,131,132],{},"An analysis stores its rating when the editor may update the page. An editor whose role can preview but not update still runs the analysis and sees the report and the dot, but nothing is stored for others.",[100,134,136],{"id":135},"page-method","Page Method",[53,138,139,140,143,144,147,148,151,152,155,156,159],{},"The ",[114,141,142],{},"seoAuditRating()"," method returns the rating of a page in the current language, and ",[114,145,146],{},"$site->seoAuditRating()"," the site's. Used as a string, the rating reads as its worse light: ",[114,149,150],{},"good",", ",[114,153,154],{},"ok",", or ",[114,157,158],{},"bad",". A page that was never analyzed reads as an empty string.",[161,162,168],"pre",{"className":163,"code":164,"filename":165,"language":166,"meta":167,"style":167},"language-php shiki shiki-themes github-light github-light github-dark","\u003C?php if ($page->seoAuditRating()->isStale()): ?>\n  \u003Cp>The SEO rating of this page is stale.\u003C\u002Fp>\n\u003C?php endif ?>\n","site\u002Ftemplates\u002Fdefault.php","php","",[114,169,170,213,258],{"__ignoreMap":167},[171,172,175,179,182,185,189,192,196,199,201,204,207,210],"span",{"class":173,"line":174},"line",1,[171,176,178],{"class":177},"s8jYJ","\u003C?",[171,180,166],{"class":181},"sBjJW",[171,183,184],{"class":177}," if",[171,186,188],{"class":187},"sxrX7"," ($page",[171,190,191],{"class":177},"->",[171,193,195],{"class":194},"snPdu","seoAuditRating",[171,197,198],{"class":187},"()",[171,200,191],{"class":177},[171,202,203],{"class":194},"isStale",[171,205,206],{"class":187},"())",[171,208,209],{"class":177},":",[171,211,212],{"class":177}," ?>\n",[171,214,216,219,221,224,227,230,233,236,239,242,245,248,250,253,255],{"class":173,"line":215},2,[171,217,218],{"class":177},"  \u003C",[171,220,53],{"class":181},[171,222,223],{"class":177},">",[171,225,226],{"class":181},"The",[171,228,229],{"class":181}," SEO",[171,231,232],{"class":181}," rating",[171,234,235],{"class":181}," of",[171,237,238],{"class":181}," this",[171,240,241],{"class":181}," page",[171,243,244],{"class":181}," is",[171,246,247],{"class":181}," stale",[171,249,87],{"class":177},[171,251,252],{"class":177},"\u003C\u002F",[171,254,53],{"class":181},[171,256,257],{"class":177},">\n",[171,259,261,263,265,268],{"class":173,"line":260},3,[171,262,178],{"class":177},[171,264,166],{"class":181},[171,266,267],{"class":177}," endif",[171,269,212],{"class":177},[271,272,273,286],"table",{},[274,275,276],"thead",{},[277,278,279,283],"tr",{},[280,281,282],"th",{},"Method",[280,284,285],{},"Returns",[287,288,289,304,316,326,336,350,368],"tbody",{},[277,290,291,297],{},[292,293,294],"td",{},[114,295,296],{},"seo()",[292,298,299,300,303],{},"The SEO light, ",[114,301,302],{},"none"," when it could not be scored, empty when there were no results or before the first analysis",[277,305,306,311],{},[292,307,308],{},[114,309,310],{},"readability()",[292,312,313,314,303],{},"The readability light, ",[114,315,302],{},[277,317,318,323],{},[292,319,320],{},[114,321,322],{},"score()",[292,324,325],{},"The rating as a number: 0 unrated, 1 bad, 2 OK, and 3 good",[277,327,328,333],{},[292,329,330],{},[114,331,332],{},"isStale()",[292,334,335],{},"Whether the page was published since the analysis",[277,337,338,343],{},[292,339,340],{},[114,341,342],{},"timestamp()",[292,344,345,346,349],{},"When the analysis ran, as a UNIX timestamp, ",[114,347,348],{},"null"," before the first analysis",[277,351,352,357],{},[292,353,354],{},[114,355,356],{},"version()",[292,358,359,360,363,364,367],{},"The analyzed content version, ",[114,361,362],{},"latest"," or ",[114,365,366],{},"changes",", empty before the first analysis",[277,369,370,375],{},[292,371,372],{},[114,373,374],{},"counts()",[292,376,377],{},"How many results were good, OK, and bad",[379,380,382],"h3",{"id":381},"in-blueprints","In Blueprints",[53,384,385,386,389,390,209],{},"The rating works in Kirby queries, so a pages section can show it per page. To sort by it, use ",[114,387,388],{},"seoAuditScore",", the rating's ",[114,391,322],{},[161,393,398],{"className":394,"code":395,"filename":396,"language":397,"meta":167,"style":167},"language-yaml shiki shiki-themes github-light github-light github-dark","type: pages\ninfo: \"{{ page.seoAuditRating }}\"\nsortBy: seoAuditScore asc\n","sections\u002Farticles.yml","yaml",[114,399,400,413,423],{"__ignoreMap":167},[171,401,402,406,409],{"class":173,"line":174},[171,403,405],{"class":404},"sovSZ","type",[171,407,408],{"class":187},": ",[171,410,412],{"class":411},"sIIMD","pages\n",[171,414,415,418,420],{"class":173,"line":215},[171,416,417],{"class":404},"info",[171,419,408],{"class":187},[171,421,422],{"class":411},"\"{{ page.seoAuditRating }}\"\n",[171,424,425,428,430],{"class":173,"line":260},[171,426,427],{"class":404},"sortBy",[171,429,408],{"class":187},[171,431,432],{"class":411},"seoAuditScore asc\n",[53,434,435],{},"Sorted ascending, pages without a rating come first, followed by the ones that need work.",[437,438,439],"note",{},[53,440,441,442,444],{},"Only pages that have been analyzed carry a rating. To rate every page of a site, an editor has to open each one and run the analysis, or publish it with ",[114,443,116],{}," enabled.",[100,446,448],{"id":447},"where-ratings-live","Where Ratings Live",[53,450,451],{},"Ratings are stored in the plugin's cache, not in the content files, so an analysis never counts as a content change. Clearing the cache removes the ratings; the next analysis of a page restores its rating. Deleting a page removes its ratings. On a site without UUIDs, moving or renaming a page loses its ratings.",[453,454,455],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sovSZ, html code.shiki .sovSZ{--shiki-light:#22863A;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":167,"searchDepth":215,"depth":215,"links":457},[458,459,460,463],{"id":102,"depth":215,"text":103},{"id":128,"depth":215,"text":129},{"id":135,"depth":215,"text":136,"children":461},[462],{"id":381,"depth":260,"text":382},{"id":447,"depth":215,"text":448},"A rating per page and language – shown as a dot on the view button, kept until the next analysis, and available to blueprints and templates.","md",{},true,{"title":43,"description":464},"sjaeKkmlbPRAQOCMSWqvSLcfhaYRvGnokQ_fCiXTXmw",[471,473],{"title":39,"path":40,"stem":41,"description":472,"children":-1},"The analysis reads the page's preview URL, unsaved changes included – override the target per blueprint when you need a different one.",null,1789567383775]