[{"data":1,"prerenderedAt":394},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fthe-plan":3,"docs-sib-\u002Fdocs\u002Fthe-plan":289,"docs-nav":368},{"id":4,"title":5,"body":6,"description":279,"extension":280,"meta":281,"navigation":282,"order":283,"path":284,"section":285,"seo":286,"stem":287,"__hash__":288},"docs\u002Fdocs\u002Fthe-plan.md","The plan",{"type":7,"value":8,"toc":268},"minimark",[9,14,20,24,40,44,47,53,59,70,74,77,99,106,111,122,126,133,140,144,149,168,171,203,211,215,258,264],[10,11,13],"h2",{"id":12},"why-a-plan-and-not-just-a-list","Why a plan and not just a list",[15,16],"screenshot",{"alt":17,"caption":18,"src":19},"The Plan tab with headline figures and a ranked list of jobs, each with a priority score, a page count and an effort label","Jobs, not rows: each one scored, sized and labelled with how many changes it takes.","\u002Fscreenshots\u002Fplan.png",[21,22,23],"p",{},"The Issues tab tells you what is wrong. It cannot tell you what to do on Monday morning, because severity alone does not say that: a missing title on your home page and a missing title on a page nobody links to are the same finding but not at all the same problem.",[21,25,26,27,31,32,35,36,39],{},"The ",[28,29,30],"strong",{},"Plan"," tab ranks every finding against the others in the same crawl, so the list reads top to bottom as the order to work in. Each job shows how many pages it touches, how many changes it takes and how much link value is at stake, with ",[28,33,34],{},"How to fix",", the worst affected pages, and ",[28,37,38],{},"See every page",", which opens the issue on the Issues tab.",[10,41,43],{"id":42},"what-the-ranking-is-made-of","What the ranking is made of",[21,45,46],{},"Three numbers, none of them invented.",[21,48,49,52],{},[28,50,51],{},"Severity"," decides the band: an error outranks a warning, and a warning outranks a notice. It is deliberately coarse. It sets the order of magnitude, not the order.",[21,54,55,58],{},[28,56,57],{},"Reach"," is the share of your site's internal link value sitting on the affected pages, taken from the link score CrawlStat already computes. This is the number that separates a problem on your home page from the same problem on an orphan at depth seven.",[21,60,61,64,65,69],{},[28,62,63],{},"Pages per fix"," is how many pages one change fixes, measured as affected pages divided by ",[66,67,68],"em",{},"distinct"," findings. 34 pages sharing one duplicated title is one job. 34 pages with 34 different missing titles is 34 jobs. Sorting by severity buries the first behind the second, which is exactly backwards.",[10,71,73],{"id":72},"reading-the-effort-label","Reading the effort label",[21,75,76],{},"Every job is marked with how much work it is, inferred from the data rather than guessed:",[78,79,80,87,93],"ul",{},[81,82,83,86],"li",{},[28,84,85],{},"One template:"," many pages, a handful of distinct findings. Almost certainly one include, one component or one setting. The best work on the list.",[81,88,89,92],{},[28,90,91],{},"Batch:"," several pages per distinct finding. A section, a pattern or a bad import.",[81,94,95,98],{},[28,96,97],{},"Page by page:"," one fix per page. Honest work, usually last.",[21,100,101,102,105],{},"On a real crawl of 1,929 pages the top job was an accessibility error affecting 823 pages that turned out to be ",[28,103,104],{},"two template changes",", while near duplicate content touched more of the site and ranked ninth, because it was 278 separate pieces of work.",[107,108,110],"h3",{"id":109},"where-the-effort-label-is-weaker-than-it-looks","Where the effort label is weaker than it looks",[21,112,113,114,117,118,121],{},"It reads the detail CrawlStat recorded for each finding as a ",[66,115,116],{},"cause",", and for most audits it is one: the duplicate's partner URL, a broken link's target, the offending template. For the handful where the detail is a ",[66,119,120],{},"measurement",", such as a character count or a response time, two pages sharing a value share nothing, so the count understates the work. Jobs with more than ten distinct findings are kept out of the \"one template\" category for that reason.",[10,123,125],{"id":124},"what-the-score-is-not","What the score is not",[21,127,128,129,132],{},"Impact is ",[28,130,131],{},"relative to one crawl",". The best job scores 100 and everything else is measured against it. Recrawl after fixing the top item and the scores redistribute, which is the point.",[21,134,135,136,139],{},"It is ",[28,137,138],{},"not a traffic forecast",". CrawlStat has never seen your analytics, and a number dressed up as \"+1,200 visits a month\" would be a guess wearing a lab coat.",[10,141,143],{"id":142},"writing-it-up","Writing it up",[15,145],{"alt":146,"caption":147,"src":148},"A written report in the Plan tab, titled “Titles need trimming to stop search results from cutting off”, with a fix this first box, a four step plan, quick wins and what can wait","Written in 48 seconds by a model on this Mac. The figures come from the crawl; the wording is the model’s.","\u002Fscreenshots\u002Fplan-written-report.png",[21,150,151,152,159,160,163,164,167],{},"If you have ",[153,154,158],"a",{"href":155,"rel":156},"https:\u002F\u002Follama.com",[157],"nofollow","Ollama"," running on your machine, the Plan tab can turn the ranking into a short write up, ready for clients. Click ",[28,161,162],{},"Write the report",". The model runs locally, so no crawl data is uploaded anywhere, and ",[28,165,166],{},"What is sent"," shows you the exact brief before it goes. Nothing here is required: the ranking is computed without it.",[21,169,170],{},"Once it's written, the report stays with the crawl until you quit CrawlStat, and you can:",[78,172,173,179,186,197],{},[81,174,175,178],{},[28,176,177],{},"Copy"," it, as Markdown, to paste into an email or a ticket.",[81,180,181,182,185],{},"Save it as a ",[28,183,184],{},"Markdown"," file.",[81,187,188,191,192,196],{},[28,189,190],{},"Export PDF",", which opens the ",[153,193,195],{"href":194},"\u002Fdocs\u002Fclient-reports","client report"," dialog with the written report already included as a summary page after the cover.",[81,198,199,202],{},[28,200,201],{},"Rewrite"," it, if you'd like another take.",[21,204,205,206,210],{},"See ",[153,207,209],{"href":208},"\u002Fdocs\u002Flocal-ai","Local AI"," to set up Ollama and pick a model.",[10,212,214],{"id":213},"from-the-command-line","From the command line",[216,217,222],"pre",{"className":218,"code":219,"language":220,"meta":221,"style":221},"language-bash shiki shiki-themes github-light","crawlstat-cli plan crawl.db\ncrawlstat-cli plan crawl.db --fail-above 60\n","bash","",[223,224,225,241],"code",{"__ignoreMap":221},[226,227,230,234,238],"span",{"class":228,"line":229},"line",1,[226,231,233],{"class":232},"s7eDp","crawlstat-cli",[226,235,237],{"class":236},"sYBdl"," plan",[226,239,240],{"class":236}," crawl.db\n",[226,242,244,246,248,251,255],{"class":228,"line":243},2,[226,245,233],{"class":232},[226,247,237],{"class":236},[226,249,250],{"class":236}," crawl.db",[226,252,254],{"class":253},"sYu0t"," --fail-above",[226,256,257],{"class":253}," 60\n",[21,259,260,263],{},[223,261,262],{},"--fail-above"," exits with a non zero code when any job scores higher than the threshold, which is how a deploy can be gated on \"this change introduced nothing serious\".",[265,266,267],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}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);}",{"title":221,"searchDepth":243,"depth":243,"links":269},[270,271,272,276,277,278],{"id":12,"depth":243,"text":13},{"id":42,"depth":243,"text":43},{"id":72,"depth":243,"text":73,"children":273},[274],{"id":109,"depth":275,"text":110},3,{"id":124,"depth":243,"text":125},{"id":142,"depth":243,"text":143},{"id":213,"depth":243,"text":214},"How CrawlStat ranks findings by impact (link value, pages per fix and severity) so you know what to fix first instead of staring at ten thousand rows.","md",{},true,7,"\u002Fdocs\u002Fthe-plan","Using CrawlStat",{"title":5,"description":279},"docs\u002Fthe-plan","xLAuBuaYem6spFpUoiaUkGbeTr3Tu7_IpCu6vEbemv8",[290,293,296,299,302,305,309,313,317,318,322,326,330,334,338,342,346,350,354,358,360,364],{"title":291,"path":194,"order":292},"Client reports",null,{"title":294,"path":295,"order":292},"UX testing","\u002Fdocs\u002Fux-testing",{"title":297,"path":298,"order":229},"Getting started","\u002Fdocs\u002Fgetting-started",{"title":300,"path":301,"order":243},"Installing CrawlStat","\u002Fdocs\u002Finstalling",{"title":303,"path":304,"order":275},"Your first crawl","\u002Fdocs\u002Fyour-first-crawl",{"title":306,"path":307,"order":308},"Watching a crawl","\u002Fdocs\u002Fwatching-a-crawl",4,{"title":310,"path":311,"order":312},"The Pages table","\u002Fdocs\u002Fresults-table",5,{"title":314,"path":315,"order":316},"Issues","\u002Fdocs\u002Fissues",6,{"title":5,"path":284,"order":283},{"title":319,"path":320,"order":321},"Journeys","\u002Fdocs\u002Fjourneys",8,{"title":323,"path":324,"order":325},"Competitor Intelligence","\u002Fdocs\u002Fcompetitor-intelligence",8.7,{"title":327,"path":328,"order":329},"Accessibility","\u002Fdocs\u002Faccessibility",9,{"title":331,"path":332,"order":333},"Comparing crawls","\u002Fdocs\u002Fcomparing-crawls",10,{"title":335,"path":336,"order":337},"Projects","\u002Fdocs\u002Fprojects",11,{"title":339,"path":340,"order":341},"Settings","\u002Fdocs\u002Fsettings",12,{"title":343,"path":344,"order":345},"Keyboard shortcuts","\u002Fdocs\u002Fkeyboard-shortcuts",13,{"title":347,"path":348,"order":349},"Open source and licence","\u002Fdocs\u002Flicensing",14,{"title":351,"path":352,"order":353},"Privacy and your data","\u002Fdocs\u002Fprivacy-and-data",15,{"title":355,"path":356,"order":357},"The crawler and robots.txt","\u002Fdocs\u002Fcrawler-and-robots",16,{"title":209,"path":208,"order":359},17,{"title":361,"path":362,"order":363},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting",18,{"title":365,"path":366,"order":367},"FAQ","\u002Fdocs\u002Ffaq",19,[369,370,371,373,374,375,376,377,378,379,380,381,382,383,384,385,386,388,389,390,391,393],{"title":291,"path":194,"section":292,"order":292},{"title":294,"path":295,"section":292,"order":292},{"title":297,"path":298,"section":372,"order":229},"Start here",{"title":300,"path":301,"section":372,"order":243},{"title":303,"path":304,"section":372,"order":275},{"title":306,"path":307,"section":285,"order":308},{"title":310,"path":311,"section":285,"order":312},{"title":314,"path":315,"section":285,"order":316},{"title":5,"path":284,"section":285,"order":283},{"title":319,"path":320,"section":285,"order":321},{"title":323,"path":324,"section":285,"order":325},{"title":327,"path":328,"section":285,"order":329},{"title":331,"path":332,"section":285,"order":333},{"title":335,"path":336,"section":285,"order":337},{"title":339,"path":340,"section":285,"order":341},{"title":343,"path":344,"section":285,"order":345},{"title":347,"path":348,"section":387,"order":349},"Account & data",{"title":351,"path":352,"section":387,"order":353},{"title":355,"path":356,"section":387,"order":357},{"title":209,"path":208,"section":387,"order":359},{"title":361,"path":362,"section":392,"order":363},"Help",{"title":365,"path":366,"section":392,"order":367},1793827597578]