SEO audit: Trail Runner 29 product page
1. Scope and what was checked
Checked: the pasted robots.txt, the <head>, and the partial body for https://www.example-bikes.test/products/trail-runner-29?color=red&utm_source=news.
Not checked: the live HTTP status and headers (including X-Robots-Tag), the contents of sitemap.xml, the rendered DOM, Search Console, Core Web Vitals, mobile rendering, and the rest of the site. Because the site type is a shop and the goal is for this product to appear on Google, I judged the page as a transactional product page. The target country and language weren't given.
2. Summary
- Three separate things block or undermine indexing:
Disallow: /products/in robots.txt,noindexin the meta tag, and a canonical that points to a different host and scheme. - Even with those fixed, the visible content is thin and depends on JavaScript. The body has an empty
<div id="app">, a heading and an image, and/assets/app.jsis blocked. - The Product structured data claims 1,280 reviews rated 4.9, but visitors see no reviews. That breaks Google's guidance that markup must match visible content. Remove it or show the reviews.
- The title is keyword-stuffed, the meta description is empty, and the page has hidden keyword text. All of these should go.
3. Findings
| ID | Pri | Area | Finding and evidence | Why it matters | Fix | Type |
|---|---|---|---|---|---|---|
| F1 | P0 | robots.txt | Disallow: /products/ blocks every product URL, including this one. |
Google can't crawl the page, so it can't read the content, and the canonical or structured data can't be processed. A blocked URL can still be listed without a snippet if other pages link to it. | Remove that line from robots.txt. | Google documented |
| F2 | P0 | Indexing directive | <meta name="robots" content="noindex, follow">. |
Google drops pages with noindex from results. It can only see this tag once F1 is fixed. Until then the page is both blocked and marked noindex. |
Remove the tag from the product template, or output index, follow. Check that no template rule or X-Robots-Tag header adds it back (not checked). |
Google documented |
| F3 | P0 | Resources | Disallow: /assets/ blocks /assets/app.js and /assets/img/IMG_4471.jpg. |
Google can't run the script that fills <div id="app">, so it may see an empty page. The image can't be crawled either. |
Remove the /assets/ line, or allow the JS, CSS and image paths with Allow: rules. |
Google documented |
| F4 | P1 | Canonical | href="http://example-bikes.test/products/trail-runner-29" is http, non-www, and has no parameters. The page URL is https and www. The sitemap line uses https://example-bikes.test (non-www). |
Three host or scheme versions disagree, and the canonical may redirect (not checked). Conflicting signals can lead Google to pick a different canonical. | Choose one preferred form, such as https://www.example-bikes.test/.... Generate the canonical in the template as an absolute URL in that form, without ?color= or utm_ parameters. Use the same host in the sitemap line. Redirect the other versions with a single 301 (server config, which you said you can't change, so ask your host). |
Google documented |
| F5 | P1 | Rendering and content | <div id="app"></div> plus a script, then only an <h2> and an image. There is no <h1>, price, description, specs, or availability in the HTML. |
If the content is built client-side, Google depends on rendering. With the script blocked, it sees almost nothing. Thin pages are often crawled but not indexed. | Put the product name (<h1>), description, price, availability, and specs in the server-rendered HTML in the template. Use <h1> for the main title and <h2> for sections. |
Google documented |
| F6 | P1 | Structured data | Product markup claims aggregateRating 4.9 from 1,280 reviews, but no reviews are visible. The markup also has no offers, image, or description. |
Google requires markup to match visible content. Ratings that users can't see risk a manual action for misleading markup. The page is also missing the properties that make a product eligible for merchant-style results. | Remove aggregateRating now. Add it back only if real, collected reviews are displayed on the page. Add offers (price, currency, availability), image, and description that match the visible page. Validate in the Rich Results Test. |
Google documented |
| F7 | P1 | Hidden text | <p style="display:none">cheap mountain bike best mountain bike buy mountain bike online</p>. |
This is hidden keyword text, which Google's spam policies prohibit. It can lead to a manual action. | Delete it. Put useful visible product copy in its place. | Google documented |
| F8 | P1 | Internal links | <div onclick="location.href='/products/trail-runner-27'">. |
Google follows <a href> links, not JavaScript click handlers. The 27-inch page may not be discovered through this link. |
Use <a href="/products/trail-runner-27">Trail Runner 27 mountain bike</a>. Also confirm category pages link to this product (not checked). |
Google documented |
| F9 | P2 | Title | Bikes Bikes Bikes | Buy Cheap Bikes Online | Best Bikes | Example Bikes. It is repetitive, generic, and doesn't mention the product. |
It's keyword stuffing and doesn't match the page's heading, so Google is likely to rewrite it. | Use something like Trail Runner 29 Mountain Bike | Example Bikes. Keep the real product name first. Length near 50-60 characters is a heuristic. |
Stuffing is Google guidance. Length is a heuristic. |
| F10 | P2 | Meta description | content="" is empty. |
Google will write its own snippet, possibly from poor text. This is not a ranking factor. | Write a short, honest, unique summary of the Trail Runner 29, such as frame, wheel size, and who it suits. | Google documented, length is a heuristic |
| F11 | P2 | Images | <img src="/assets/img/IMG_4471.jpg"> has no alt, width, or height, and the file name is a camera name. |
Alt text helps Google understand the image. Missing dimensions can cause layout shift. | Add descriptive alt (for example "Red Trail Runner 29 mountain bike, side view"), set width and height, and use a descriptive file name. |
Google documented |
| F12 | P2 | Parameters | The URL has ?color=red&utm_source=news. |
Tracking and variant parameters create near-duplicate URLs. | Fixing F4 with a clean canonical handles this. Don't link internally with utm_ parameters. |
Google documented |
| F13 | P3 | Review claim | The "4.9 / 1,280" figure came from somewhere. | I can't verify it. If it isn't from genuine customer reviews, it shouldn't be published anywhere. | Only publish ratings backed by real, visible reviews. | Google documented |
4. What is fine
- A sitemap is declared in robots.txt. Its contents are not checked, and its host should match the preferred host (see F4).
- JSON-LD is in a supported format, and
Productis a type Google supports. - There is a single canonical tag and a single title tag.
I can't confirm the HTTP status, HTTPS certificate, or mobile layout from what you pasted.
5. Fix plan
All of this is within your template and robots.txt.
- robots.txt: remove
Disallow: /products/andDisallow: /assets/. Keep any rule that blocks only private areas such as cart or checkout. Make theSitemap:line use the preferred host. - Product template,
<head>: remove thenoindexmeta tag. Set the canonical to the clean, absolute, preferred-host URL. Write a real title and meta description. - Product template,
<body>: render the<h1>, description, price, availability, and specs as server-side HTML. Delete the hidden paragraph. Turn the click-handler div into a real link. Fix the image attributes. - Structured data: remove
aggregateRatinguntil real reviews are visible. Addoffers,image, anddescriptionthat match the page. - Verify: use URL Inspection in Search Console on the clean URL (Live Test) to check crawl access, indexing allowed, canonical, and rendered HTML. Validate with the Rich Results Test, then request indexing. Google doesn't promise how long indexing takes or that every page will be indexed.
6. Open questions
- What does the live URL return (status, redirects,
X-Robots-Tag)? URL Inspection will show this. - Does
example-bikes.testredirect towww(or the reverse), and does http redirect to https? That needs your host or server config. - Does the sitemap list product URLs with clean canonical forms?
- Do real customer reviews exist? If so, can the template display them?
- Is
app.jsthe only source of the product content? If it is, the server-rendered HTML in step 3 matters even more. - Core Web Vitals and mobile rendering are not checked. Run PageSpeed Insights once the page is crawlable.
Test run with a fictional product page and robots.txt pasted into the prompt. The model found the blocked product path, noindex, mismatched canonical, hidden text and unsupported rating markup. It could not check live HTTP status, sitemap contents or Core Web Vitals and said so. Nothing was fetched or changed.
Qué hace
Revisa una página o un sitio pequeño según las directrices de Google Search Central y devuelve una lista breve y priorizada de correcciones con evidencia. Primero comprueba el acceso de rastreo e indexación (robots.txt, códigos de estado, noindex, canonical, sitemap, renderizado, hreflang); después, la aparición en los resultados de búsqueda (título, descripción, encabezados, imágenes, datos estructurados), la calidad del contenido (preguntas sobre contenido útil, centrado en las personas y E-E-A-T), los enlaces internos y la experiencia de página (Core Web Vitals, HTTPS, móvil). También puede diagnosticar los casos de «no indexado» y «caída de tráfico» a partir de los datos de Search Console. Cada hallazgo indica el texto exacto en el que se basa y se marca como directriz de Google o como heurística. Todo lo que no se proporcione se indica como «no comprobado».
Resultado
Alcance y qué se comprobó, un resumen, una tabla de hallazgos (P0 a P3, evidencia, corrección, regla o heurística), qué ya cumple, un plan de correcciones ordenado y preguntas abiertas.
Ideal para
Responsables de sitios, profesionales de marketing y desarrolladores que quieran una revisión SEO clara y honesta, sin promesas de ranking. No rastrea por sí mismo, no predice rankings ni recomienda tácticas de spam.
Riesgo bajo: solo instrucciones, sin scripts, sin acceso a la red y sin escritura de archivos. Funciona únicamente con lo que pegues y no rastrea, no inicia sesión ni modifica ningún sitio. Trata su resultado como una revisión, no como una previsión de ranking: el ranking de Google depende de señales que nadie fuera de Google puede ver, y las directrices cambian, así que confirma los detalles en Search Central. Se probó una vez en una página de producto ficticia; detectó las reglas de bloqueo, el noindex, la discrepancia de canonical, el texto oculto y el marcado de valoraciones no admitido, e indicó qué no pudo comprobar. No se recuperó ni se modificó nada. Original de AIBars (MIT).