Canonical and metadata
Populate metadata in the layout/template for each public page; do not rely only on client-side head updates. Point each page's canonical at its own clean URL (consolidating tracking/variant query parameters), keep `og:url` consistent with that canonical, add all four required `og:*` properties, and remove `noindex` from pages that should be available to agents.
Canonical and metadata
- Категория
- Обнаруживаемость
- Remediation key
- canonical_metadata_incomplete
- URL
- https://api.starveri.net/
HTML contains a server-rendered `<title>`, meta description, a self-referential canonical link, and the four required Open Graph properties (`og:title`, `og:type`, `og:image`, `og:url`) consistent with the canonical and not marked `noindex`.
Populate metadata in the layout/template for each public page; do not rely only on client-side head updates. Point each page's canonical at its own clean URL (consolidating tracking/variant query parameters), keep `og:url` consistent with that canonical, add all four required `og:*` properties, and remove `noindex` from pages that should be available to agents.
Промпт для AI-агента
You are a senior web developer. Improve api.starveri.net for AI agents. Task: add or repair support for Canonical and metadata (canonical_metadata). Current check result:
{"evidence":{"final_url":"https://api.starveri.net/credits","headers":{"content-type":"text/html; charset=utf-8","vary":"Origin"},"inconsistent_fields":[],"items":[{"type":"title","value":"Starveri API Credits"}],"malformed_fields":[],"metadata":{"title":"Starveri API Credits","title_length":20},"redirects":[{"location":"/credits","status_code":302,"url":"https://api.starveri.net/"}],"requested_url":"https://api.starveri.net/","snippet":"<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <title>Starveri API Credits</title> <style> :root { color-scheme: light; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sa","status_code":200},"outputs":{"has_canonical":false,"has_open_graph":false,"metadata_item_count":1},"remediation_key":"canonical_metadata_incomplete","scanner_message":"Some metadata was found, but canonical/basic/Open Graph coverage is incomplete.","status":"partial"}Expected result: HTML contains a server-rendered `<title>`, meta description, a self-referential canonical link, and the four required Open Graph properties (`og:title`, `og:type`, `og:image`, `og:url`) consistent with the canonical and not marked `noindex`.. Fix guidance: Populate metadata in the layout/template for each public page; do not rely only on client-side head updates. Point each page's canonical at its own clean URL (consolidating tracking/variant query parameters), keep `og:url` consistent with that canonical, add all four required `og:*` properties, and remove `noindex` from pages that should be available to agents.. Stack templates: - Generic web server: serve canonical and metadata tags from the public web root or a route, with the correct status, `Content-Type`, and cache policy. - Nginx: add a `location`/`add_header` for canonical and metadata tags; verify `try_files`, redirects, and that private upstreams are not exposed. - Apache: configure `Alias`, `Header set`, or a rewrite rule for canonical and metadata tags; check `.htaccess` and virtual host precedence. - Next.js: use `public/`, route handlers, Metadata API, or middleware for canonical and metadata tags; do not disable SSR/SSG for public content. - Nuxt: use `public/`, server routes, `useHead`/Nitro middleware for canonical and metadata tags; verify prerender/SSR output. - Laravel: add a route/controller, Blade metadata, or middleware headers for canonical and metadata tags; do not bypass auth/authorization for private routes. - Django: add a `urls.py` route/view, template metadata, or middleware headers for canonical and metadata tags; verify `ALLOWED_HOSTS` and cache behavior. - WordPress: implement canonical and metadata tags via theme/plugin hooks, SEO plugin settings, or a static file; do not edit core files. - Bitrix: add canonical and metadata tags via the site template, component, or web server config; verify composite cache and multi-site rules. - Static hosting: add canonical and metadata tags as a static asset or platform headers file (`_headers`, `vercel.json`, `netlify.toml`). - Headless CMS: generate canonical and metadata tags in the delivery layer/edge app from published content; do not expose draft or admin APIs. Constraints: do not break SEO; do not expose private endpoints; preserve SSRF/redirect safety; do not add remote JS execution to the scanner; add tests. Return a patch/diff and a short explanation.
Evidence JSON
{ "items": [ { "type": "title", "value": "Starveri API Credits" } ], "headers": { "vary": "Origin", "content-type": "text/html; charset=utf-8" }, "snippet": "<!doctype html> <html lang=\"en\"> <head> <meta charset=\"utf-8\"> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <title>Starveri API Credits</title> <style> :root { color-scheme: light; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sa", "metadata": { "title": "Starveri API Credits", "title_length": 20 }, "final_url": "https://api.starveri.net/credits", "redirects": [ { "url": "https://api.starveri.net/", "location": "/credits", "status_code": 302 } ], "status_code": 200, "requested_url": "https://api.starveri.net/", "malformed_fields": [], "inconsistent_fields": [] }{ "has_canonical": false, "has_open_graph": false, "metadata_item_count": 1 }"canonical_metadata_incomplete""Some metadata was found, but canonical/basic/Open Graph coverage is incomplete.""partial"