[{"data":1,"prerenderedAt":645},["ShallowReactive",2],{"docs-pages-en":3,"doc-en-seo":308},[4,9,15,20,25,30,35,41,52,60,69,77,84,92,96,105,109,117,122,127,132,138,143,148,153,158,163,169,174,179,184,189,194,199,204,209,214,219,224,229,234,239,244,249,254,260,265,269,273,278,283,288,293,298,303],{"path":5,"title":6,"description":7,"order":8,"group":8,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fpermissions","Who can do what","[object Object]",null,{"path":10,"title":11,"description":12,"order":13,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Finstallation","Installation","Install CloseYourIt on your own server with one command.",1,"start",{"path":16,"title":17,"description":18,"order":19,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fsettings","Settings","Every setting in the .env file, what it does and which ones you must never change.",2,{"path":21,"title":22,"description":23,"order":24,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fdatabase","Database","What the database is, what is inside, how long data stays and how much room it takes.",3,{"path":26,"title":27,"description":28,"order":29,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fupdates-and-backups","Updates and backups","Update to a new version, back up and restore the database, check the install.",4,{"path":31,"title":32,"description":33,"order":34,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Ftroubleshooting","Troubleshooting","What to check when the install, the certificate, email or incoming data do not work.",5,{"path":36,"title":37,"description":38,"order":39,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fconnect-your-apps","Connect your apps","Every tool that sends data to CloseYourIt, and what each one collects.",6,"connect",{"path":42,"title":43,"description":44,"order":45,"group":8,"parent":46,"package":47,"note":48,"collects":49,"status":8},"\u002Fdocs\u002Fsdk-ruby","Ruby \u002F Rails","The closeyourit-ruby gem sends errors, logs, slow queries and job metrics from a Rails app.",7,"connect-your-apps","closeyourit-ruby","Errors, logs, slow queries and methods, background jobs.",{"errors":50,"logs":50,"performance":50,"visits":51,"servers":51},"full","none",{"path":53,"title":54,"description":55,"order":56,"group":8,"parent":46,"package":57,"note":58,"collects":59,"status":8},"\u002Fdocs\u002Fsdk-javascript","JavaScript","The @bussolabs\u002Fcloseyourit-js package works in the browser and on Node 20.16 or newer.",8,"@bussolabs\u002Fcloseyourit-js","Browser and Node, framework adapters and database queries from 0.13.0.",{"errors":50,"logs":50,"performance":50,"visits":50,"servers":51},{"path":61,"title":62,"description":63,"order":64,"group":8,"parent":46,"package":65,"note":66,"collects":67,"status":8},"\u002Fdocs\u002Fsdk-dart","Dart \u002F Flutter","The closeyourit package captures the errors of Flutter apps, even when the phone is offline.",9,"closeyourit","Public errors, logs and metrics from 0.9.3.",{"errors":50,"logs":68,"performance":68,"visits":51,"servers":51},"partial",{"path":70,"title":71,"description":72,"order":73,"group":8,"parent":46,"package":65,"note":74,"collects":75,"status":76},"\u002Fdocs\u002Fsdk-python","Python","The closeyourit package sends errors, logs and metrics from server-side Python applications.",10,"Server side. SQLAlchemy; Django query monitoring and FastAPI\u002FStarlette from 0.4.0.",{"errors":50,"logs":50,"performance":68,"visits":51,"servers":51},"pre_alpha",{"path":78,"title":79,"description":80,"order":81,"group":8,"parent":46,"package":79,"note":82,"collects":83,"status":8},"\u002Fdocs\u002Fsdk-sentry","Sentry SDK","Send errors with a compatible Sentry SDK; sessions and crashes have separate profiles.",11,"Compatible errors; sessions and crashes require a verified profile.",{"errors":50,"logs":51,"performance":51,"visits":51,"servers":51},{"path":85,"title":86,"description":87,"order":88,"group":8,"parent":46,"package":89,"note":90,"collects":91,"status":8},"\u002Fdocs\u002Fagent-server","Server agent","A small program on the server that sends the state of the machine every 60 seconds.",12,"closeyourit-agent","CPU, memory, disks, network, containers and services.",{"errors":51,"logs":68,"performance":51,"visits":51,"servers":50},{"path":93,"title":94,"description":95,"order":88,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fnuxt","Vue and Nuxt","Connect Nuxt browser errors and Nitro server errors without exposing a server token.",{"path":97,"title":98,"description":99,"order":100,"group":8,"parent":46,"package":101,"note":102,"collects":103,"status":104},"\u002Fdocs\u002Fagent-kubernetes","Kubernetes","A read-only observer of the cluster: one copy per cluster.",13,"closeyourit-kube","Machines, apps and error events of the cluster.",{"errors":51,"logs":51,"performance":51,"visits":51,"servers":50},"coming",{"path":106,"title":107,"description":108,"order":100,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fopentelemetry","OpenTelemetry","Send server traces, metrics and logs through the optional OTLP receiver.",{"path":110,"title":111,"description":112,"order":113,"group":8,"parent":46,"package":114,"note":115,"collects":116,"status":8},"\u002Fdocs\u002Fcli","cyi CLI","The closeyourit command, cyi for short: manage projects, errors and tickets from the terminal.",14,"@bussolabs\u002Fcloseyourit-cli","It collects no data: it drives CloseYourIt from the terminal.",{"errors":51,"logs":51,"performance":51,"visits":51,"servers":51},{"path":118,"title":119,"description":120,"order":121,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fhttp-api","HTTP API","Send errors, logs, metrics and page views with plain HTTP requests, without an SDK.",15,{"path":123,"title":124,"description":125,"order":126,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fgithub-app","GitHub","Connect GitHub repositories to tickets and releases with your own GitHub App.",16,{"path":128,"title":129,"description":130,"order":131,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fingest-gateway","Ingest gateway","Keep incoming errors, logs and metrics safe when the app is slow or restarting.",17,{"path":133,"title":134,"description":135,"order":136,"group":137,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fai","AI","Turn on assistant, analysis, dictation and smart search with a CloseYourIt AI key or your own provider.",18,"automation",{"path":139,"title":140,"description":141,"order":142,"group":137,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fautomator","Automator","Let tickets be worked automatically on your own Linux machine, with Claude Code, Codex or both.",19,{"path":144,"title":145,"description":146,"order":147,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fstack-coverage","Frameworks and stack coverage","Choose a published SDK or understand the limits of a locally tested integration.",20,{"path":149,"title":150,"description":151,"order":152,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fmonitoring","Traces, measurements and sessions","Explore the new signals, compare releases and recover original error locations.",21,{"path":154,"title":155,"description":156,"order":157,"group":40,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fnode-database","Node databases","Monitor slow and repeated queries with pg, mysql2, Drizzle and Prisma PostgreSQL.",22,{"path":159,"title":160,"description":161,"order":162,"group":137,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fclaude-code","Claude Code","CloseYourIt inside Claude Code, in a column next to the conversation with production and your open tickets.",23,{"path":164,"title":165,"description":166,"order":167,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Ftickets","Tickets and ideas","Open and follow tickets on the board, group them into milestones, ask questions and turn voted ideas into work.",30,"use",{"path":170,"title":171,"description":172,"order":173,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Ferrors","Errors","How your apps' errors become single rows, and how to resolve, ignore, merge or turn them into tickets.",31,{"path":175,"title":176,"description":177,"order":178,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fperformance","Performance","Find slow queries and methods, read the problems detected automatically and get an alert when one appears.",32,{"path":180,"title":181,"description":182,"order":183,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Flogs","Logs","Search your apps' messages, follow a request from start to end and link a message to an error or a ticket.",33,{"path":185,"title":186,"description":187,"order":188,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fsecrets","Secrets","Passwords, keys and private files in one place, per project and environment, read by your app without a .env on disk.",34,{"path":190,"title":191,"description":192,"order":193,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fservers","Servers","The state of your machines on one page, with history and alerts when something breaks or fills up.",35,{"path":195,"title":196,"description":197,"order":198,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fuptime","Uptime","Check that your sites answer, keep count of outages and show them to customers on a status page.",36,{"path":200,"title":201,"description":202,"order":203,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fcrons","Scheduled jobs","Notice when a job that should run on its own stops running, or runs and ends badly.",37,{"path":205,"title":206,"description":207,"order":208,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Falerts","Alerts","The rules that create an alert, the notification center and where each person chooses to receive them.",38,{"path":210,"title":211,"description":212,"order":213,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fhelpdesk","Help desk","Visitors of a project's site write to the team with the \"Need help?\" button, and the request lands in the right project.",39,{"path":215,"title":216,"description":217,"order":218,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fanalytics","Site analytics","How many people visit the site, what they look at and where they come from, without cookies.",40,{"path":220,"title":221,"description":222,"order":223,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Freplays","Session replay","Record how people move through the site and watch it back like a video, even next to an error.",41,{"path":225,"title":226,"description":227,"order":228,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Freleases","Releases","The versions running in each environment, bound to GitHub tags, and the errors that come back after a fix.",42,{"path":230,"title":231,"description":232,"order":233,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fvulnerabilities","Vulnerabilities","Known security problems in your projects' libraries, and the languages that no longer get fixes.",43,{"path":235,"title":236,"description":237,"order":238,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fseo","SEO","CloseYourIt visits your sites like a search engine and tells you what keeps your pages from being found.",44,{"path":240,"title":241,"description":242,"order":243,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fknowledge","Knowledge base","Write notes, decisions and guides for your projects, find them by meaning and ask questions with sources.",45,{"path":245,"title":246,"description":247,"order":248,"group":168,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fagents","AI agents","Which tickets agents take, what they hand you, where you decide and how each machine is measured.",46,{"path":250,"title":251,"description":252,"order":253,"group":14,"parent":8,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog","Versions","Every CloseYourIt system with its latest version, and the notes of each release.",50,{"path":255,"title":256,"description":257,"order":258,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-app","App","Every stable version of App, newest first.",51,"changelog",{"path":261,"title":262,"description":263,"order":264,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-cli","Command line (cyi)","Every stable version of Command line (cyi), newest first.",52,{"path":266,"title":140,"description":267,"order":268,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-automator","Every stable version of Automator, newest first.",53,{"path":270,"title":86,"description":271,"order":272,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-agent-server","Every stable version of Server agent, newest first.",54,{"path":274,"title":275,"description":276,"order":277,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-agent-kubernetes","Kubernetes agent","Every stable version of Kubernetes agent, newest first.",55,{"path":279,"title":280,"description":281,"order":282,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-javascript","JavaScript SDK","Every stable version of JavaScript SDK, newest first.",56,{"path":284,"title":285,"description":286,"order":287,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-ruby","Ruby SDK","Every stable version of Ruby SDK, newest first.",57,{"path":289,"title":290,"description":291,"order":292,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-python","Python SDK","Every stable version of Python SDK, newest first.",58,{"path":294,"title":295,"description":296,"order":297,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-sdk-dart","Dart SDK","Every stable version of Dart SDK, newest first.",59,{"path":299,"title":300,"description":301,"order":302,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-skills","Skills for AI assistants","Every stable version of Skills for AI assistants, newest first.",60,{"path":304,"title":305,"description":306,"order":307,"group":8,"parent":259,"package":8,"note":8,"collects":8,"status":8},"\u002Fdocs\u002Fchangelog-site","Website and docs","Every stable version of Website and docs, newest first.",61,{"id":309,"title":236,"body":310,"collects":8,"description":237,"extension":639,"group":168,"meta":640,"navigation":641,"note":8,"order":238,"package":8,"parent":8,"path":235,"seo":642,"status":8,"stem":643,"__hash__":644},"docs_en\u002Fdocs\u002Fseo.md",{"type":311,"value":312,"toc":629},"minimark",[313,333,338,388,395,399,423,426,429,459,462,489,496,500,526,529,532,537,541,548,562,592,595,611,614,617],[314,315,316,317,320,321,324,325,328,329,332],"p",{},"The SEO check visits the sites you declare, the way a search engine would, and tells you what keeps your pages from being found. It is not a score: it is a list of concrete problems, each with its evidence. In the ",[318,319,236],"strong",{}," menu you find three pages: ",[318,322,323],{},"Sites",", ",[318,326,327],{},"Findings"," and ",[318,330,331],{},"Pages",".",[334,335,337],"h2",{"id":336},"declare-a-site","Declare a site",[339,340,341,351,361,368,378],"ol",{},[342,343,344,345,347,348,332],"li",{},"Open ",[318,346,323],{}," and press ",[318,349,350],{},"Add site",[342,352,353,354,328,357,360],{},"Pick ",[318,355,356],{},"Project",[318,358,359],{},"Environment",". The project must have the Web platform. Each project has one site per environment, and after creation project and environment cannot change.",[342,362,363,364,367],{},"Write the ",[318,365,366],{},"Site address",": the visit starts here. It must be a public address.",[342,369,353,370,373,374,377],{},[318,371,372],{},"How often to check it"," (every day or every week) and the ",[318,375,376],{},"Pages per run",", 1,000 at most.",[342,379,380,381,384,385,332],{},"Leave ",[318,382,383],{},"Read the sitemap"," on if the site has one, then press ",[318,386,387],{},"Add",[314,389,390,391,394],{},"The first check starts right away. ",[318,392,393],{},"Check now"," starts one at any time.",[334,396,398],{"id":397},"how-it-visits-the-site","How it visits the site",[400,401,402,405,413,420],"ul",{},[342,403,404],{},"It starts from the home page and the sitemap, follows internal links and stops at the number of pages you picked.",[342,406,407,408,412],{},"It always honours the ",[409,410,411],"code",{},"robots.txt"," file and stays on the address you gave it.",[342,414,415,416,419],{},"It identifies itself as ",[409,417,418],{},"CloseYourItBot"," and waits half a second between pages.",[342,421,422],{},"It reads pages as the server sends them, before the browser runs any code: that is what a search engine sees on the first pass.",[314,424,425],{},"It does not use Google Search Console and does not judge how well the text is written.",[334,427,327],{"id":428},"findings",[314,430,431,432,324,435,324,438,324,441,444,445,324,448,324,451,324,454,324,457,332],{},"Each finding is a problem found on a page, or on the whole site. It has a severity (",[318,433,434],{},"Low",[318,436,437],{},"Medium",[318,439,440],{},"High",[318,442,443],{},"Critical",") and an area: ",[318,446,447],{},"Indexability",[318,449,450],{},"Structure",[318,452,453],{},"Content",[318,455,456],{},"Languages",[318,458,176],{},[314,460,461],{},"Some examples of what it looks for:",[400,463,464,471,474,480,483,486],{},[342,465,466,467,470],{},"pages with the ",[409,468,469],{},"noindex"," instruction, pages that do not answer, endless or too long redirects;",[342,472,473],{},"official address (canonical) missing or pointing elsewhere;",[342,475,476,477,479],{},"sitemap or ",[409,478,411],{}," not answering, pages missing from the sitemap or linked by no one;",[342,481,482],{},"title or description missing, too long or the same on several pages;",[342,484,485],{},"main heading (H1) missing or doubled, language not declared, language versions that do not point back to each other;",[342,487,488],{},"nearly empty pages, images without a description, slow or too heavy pages.",[314,490,491,492,495],{},"Opening a finding you see ",[318,493,494],{},"The evidence",": which page, what was there and what should have been.",[334,497,499],{"id":498},"decide-what-to-do","Decide what to do",[400,501,502,513,523],{},[342,503,504,507,508,512],{},[318,505,506],{},"Open a ticket"," creates a pre-filled ticket (see ",[509,510,511],"a",{"href":164},"Tickets",").",[342,514,515,518,519,522],{},[318,516,517],{},"Live with it"," sets the finding aside. ",[318,520,521],{},"Reopen"," puts it back on the list.",[342,524,525],{},"When the problem disappears from the site, the finding closes itself at the next check.",[314,527,528],{},"If a page cannot be read, its problems stay open: what was not seen is not declared fixed.",[334,530,331],{"id":531},"pages",[314,533,534,536],{},[318,535,331],{}," lists every page seen in the last check: what each one answered, title, main heading, how many words it holds, official address and response time.",[334,538,540],{"id":539},"site-speed","Site speed",[314,542,543,544,547],{},"In a site's ",[318,545,546],{},"Speed"," tab you find the Web Vitals of the home page, Google's speed measures, on phone and on computer:",[400,549,550,556],{},[342,551,552,555],{},[318,553,554],{},"Lab",": a test run on a Google machine. It tells you why the site is slow.",[342,557,558,561],{},[318,559,560],{},"Field",": what really happened to people who opened the site, over the last 28 days. It is the number Google looks at for ranking.",[314,563,564,565,324,568,324,571,324,574,328,577,580,581,324,583,324,586,328,589,591],{},"The measures are ",[318,566,567],{},"Content appears",[318,569,570],{},"Response to touch",[318,572,573],{},"Page shifts",[318,575,576],{},"Server wait",[318,578,579],{},"First sign of life",", plus the ",[318,582,176],{},[318,584,585],{},"Accessibility",[318,587,588],{},"Best practices",[318,590,236],{}," scores. They are measured as often as the check runs.",[314,593,594],{},"The measures need a Google PageSpeed key:",[339,596,597,600],{},[342,598,599],{},"In the Google Cloud console enable the PageSpeed Insights service and create a key.",[342,601,602,603,606,607,610],{},"An organization admin connects ",[318,604,605],{},"Google PageSpeed"," from the ",[318,608,609],{},"Integrations"," page.",[314,612,613],{},"Without the key the site is not measured, and the tab says so.",[334,615,206],{"id":616},"alerts",[314,618,619,620,622,623,625,626,628],{},"Alerts go out only for new findings of ",[318,621,440],{}," or ",[318,624,443],{}," severity (see ",[509,627,206],{"href":205},"). The others are there to read on the page when you have time.",{"title":630,"searchDepth":19,"depth":19,"links":631},"",[632,633,634,635,636,637,638],{"id":336,"depth":19,"text":337},{"id":397,"depth":19,"text":398},{"id":428,"depth":19,"text":327},{"id":498,"depth":19,"text":499},{"id":531,"depth":19,"text":331},{"id":539,"depth":19,"text":540},{"id":616,"depth":19,"text":206},"md",{},true,{"title":236,"description":237},"docs\u002Fseo","2rdVGwT-l9wVTvmO_k0N-prz9N_UcVBSIVV_yOg2YvE",1791469657789]