Traqlyte · SEO Auditor
SEO page audit

onebagreview.com

Audited 2026-08-05 02:07:43 · 81 checks evaluated
72 out of 100 grade D
52 passed 29 failed
AI Readiness
Bot access, structured data, llms.txt, and content accessibility for AI/LLM crawlers.
31grade F
Bot Discoverability 30pt
50%
Structured Data 25pt
33%
LLM Communication 25pt
0%
Content Accessibility 15pt
50%
Cross-Signal Readiness 5pt
0%
Priority Fixes
11
critical llms.txt present: Not found -- see llmstxt.org for the emerging convention.
Jump to fix →
critical Page content is readable without running JavaScript: Only 27 word(s) of text came through before any JavaScript runs -- bots and assistants that don't execute JS (most AI crawlers, many scrapers) see essentially a blank page, not the content a visitor sees in a browser.
Jump to fix →
important Mandatory Open Graph tags present (title/description/image/url/type): Missing: ['og:image'].
Jump to fix →
important Breadcrumb navigation present in HTML: No breadcrumb markup found.
Jump to fix →
important BreadcrumbList JSON-LD schema present: Not found in JSON-LD.
Jump to fix →
important Lazy-loading applied correctly (hero eager, rest lazy): first/hero image is lazy-loaded (can delay LCP)
Jump to fix →
important Navigation signal present (breadcrumbs or SiteNavigationElement schema): No breadcrumb markup or SiteNavigationElement schema found.
Jump to fix →
important Keyword density for "cabinzero classic 36l" stays under the stuffing-risk threshold (<8%): ~22.2% density. Google's current spam policies explicitly list keyword stuffing (repeating a term or phrase unnaturally) as a violation -- well above the 3-5% rule-of-thumb range is a real ranking risk, not just a style issue.
Jump to fix →
important Target keyword appears in the title tag: Title: "One Bag Review | One Bag Travel Guides & Carry-On Gear"
Jump to fix →
important Target keyword appears in the H1: H1: "Pack less. Go further. Stay ready for anything."
Jump to fix →
important No phrase among the top 5 unigrams/bigrams/trigrams is stuffed (>8% density): 8 phrase(s) exceed 8% density: "review" (11.1%); "cabinzero classic" (14.8%); "classic 36l" (14.8%); "cabinzero classic 36l" (22.2%); "classic 36l review" (11.1%); "review our hands-on" (11.1%); "classic 36l real" (11.1%); "36l real weight" (11.1%).
Jump to fix →
TEC Technical 82
URL URL Structure 100
CON URL Consolidation 100
REL Search Relevance 83
VAL Validation 100
PRS Search Presentation 60
IDX Index Control 85
TPL Template Structure 38
IMG Images 62
TAX Taxonomy 50
RDB Readability 0
BOT AI Readiness: Bot Discoverability 75
SCH AI Readiness: Structured Data 50
LLM AI Readiness: LLM Communication 0
ACC AI Readiness: Content Accessibility 40
XSG AI Readiness: Cross-Signal Readiness 0
KWD Keyword Optimization 33
SEC Security Headers 90
LNK Link Health 100
AST Performance & Assets 100
3PI Third-Party Impact 100
CXN Connection Timing 100

BOT AI Readiness: Bot Discoverability 75%

FAIL advisory robots.txt has bot-specific rules (deliberate AI-crawler policy)
Only a blanket 'User-agent: *' rule (or none) found -- no evidence of a per-bot policy.
PASS critical Major AI crawlers (GPTBot, ClaudeBot, PerplexityBot, etc.) aren't blocked
All known AI crawlers allowed.
Evidence
GPTBot: allowed -- OpenAI (training / ChatGPT search grounding)
ChatGPT-User: allowed -- OpenAI (live browsing agent)
OAI-SearchBot: allowed -- OpenAI (ChatGPT search index)
ClaudeBot: allowed -- Anthropic (crawler)
anthropic-ai: allowed -- Anthropic (legacy crawler token)
Claude-User: allowed -- Anthropic (live browsing agent)
PerplexityBot: allowed -- Perplexity (search index)
Google-Extended: allowed -- Google (Gemini/AI Overviews training opt-out control)
CCBot: allowed -- Common Crawl (feeds many third-party LLM training sets)

ACC AI Readiness: Content Accessibility 40%

FAIL critical Page content is readable without running JavaScript
Only 27 word(s) of text came through before any JavaScript runs -- bots and assistants that don't execute JS (most AI crawlers, many scrapers) see essentially a blank page, not the content a visitor sees in a browser.
PASS important Title/description are well-formed enough for an AI summary to quote directly
Both well-formed -- safe for an assistant to lift verbatim into a citation or summary.

XSG AI Readiness: Cross-Signal Readiness 0%

FAIL advisory Bot access, structured data, llms.txt, and SSR content all align
At least one of bot access / structured data / llms.txt / SSR content is missing.

LLM AI Readiness: LLM Communication 0%

FAIL critical llms.txt present
Not found -- see llmstxt.org for the emerging convention.

SCH AI Readiness: Structured Data 50%

FAIL important Navigation signal present (breadcrumbs or SiteNavigationElement schema)
No breadcrumb markup or SiteNavigationElement schema found.
FAIL advisory At least one rich schema type present (FAQPage, HowTo, Product, etc.)
Rich types found: none.
PASS critical Organization and/or Article JSON-LD present
Types found: ['ImageObject', 'Organization'].

CXN Connection Timing 100%

PASS advisory Connection chain (DNS + TCP + TLS) is fast (<=200ms)
DNS 1.0ms + TCP 21.4ms + TLS 80.8ms = 103.2ms before the first byte was requested.

IMG Images 62%

FAIL advisory Images use modern formats (WebP/AVIF)
0/1 images use WebP/AVIF.
FAIL important Lazy-loading applied correctly (hero eager, rest lazy)
first/hero image is lazy-loaded (can delay LCP)
Suggested fix
<!-- hero/first image: omit loading, or set loading="eager" -->
<img src="hero.jpg" alt="...">

<!-- every other image: -->
<img src="..." alt="..." loading="lazy">
PASS critical Every image has alt text
1/1 images have alt text.
PASS important Images set width/height or aspect-ratio (prevents layout shift)
1/1 images have explicit dimensions.

IDX Index Control 85%

FAIL advisory llms.txt present (emerging AI-crawler convention)
HTTP 404
FAIL advisory ai.txt present (emerging AI-crawler convention)
HTTP 404
PASS critical Page is not marked noindex
No noindex directive.
PASS critical No unintended snippet/archive/preview restrictions
No nosnippet/noarchive/max-snippet:0/max-image-preview:none/max-video-preview:0 found.
PASS critical robots.txt reachable and does not block this page
HTTP 200
Evidence
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://onebagreview.com/sitemaps.xml
PASS important sitemap.xml exists and is well-formed
Found and looks like a valid sitemap.

KWD Keyword Optimization 33%

FAIL advisory Keyword density for "cabinzero classic 36l" is in the classic 3-5% range
"cabinzero classic 36l" appears 2 time(s) across 27 words (~22.2% density). Treat this as a rough guideline, not a target to write toward -- natural, reader-first phrasing matters more than hitting an exact number (over-optimizing risks tripping Google's keyword-stuffing spam policy; too little risks the page not clearly signaling its topic).
FAIL important Keyword density for "cabinzero classic 36l" stays under the stuffing-risk threshold (<8%)
~22.2% density. Google's current spam policies explicitly list keyword stuffing (repeating a term or phrase unnaturally) as a violation -- well above the 3-5% rule-of-thumb range is a real ranking risk, not just a style issue.
FAIL important Target keyword appears in the title tag
Title: "One Bag Review | One Bag Travel Guides & Carry-On Gear"
FAIL important Target keyword appears in the H1
H1: "Pack less. Go further. Stay ready for anything."
FAIL advisory Target keyword appears in the meta description
Meta description: "One bag travel guides, carry-on backpack reviews, packing lists, and airline dimension tools to help you travel lighter with a single bag."
FAIL important No phrase among the top 5 unigrams/bigrams/trigrams is stuffed (>8% density)
8 phrase(s) exceed 8% density: "review" (11.1%); "cabinzero classic" (14.8%); "classic 36l" (14.8%); "cabinzero classic 36l" (22.2%); "classic 36l review" (11.1%); "review our hands-on" (11.1%); "classic 36l real" (11.1%); "36l real weight" (11.1%).
Evidence
1-gram "review": 3x (11.11%) <-- ALARM
1-gram "cabinzero": 2x (7.41%)
1-gram "classic": 2x (7.41%)
1-gram "hands-on": 1x (3.70%)
1-gram "real": 1x (3.70%)
2-gram "cabinzero classic": 2x (14.81%) <-- ALARM
2-gram "classic 36l": 2x (14.81%) <-- ALARM
2-gram "36l review": 1x (7.41%)
2-gram "hands-on review": 1x (7.41%)
2-gram "36l real": 1x (7.41%)
3-gram "cabinzero classic 36l": 2x (22.22%) <-- ALARM
3-gram "classic 36l review": 1x (11.11%) <-- ALARM
3-gram "review our hands-on": 1x (11.11%) <-- ALARM
3-gram "classic 36l real": 1x (11.11%) <-- ALARM
3-gram "36l real weight": 1x (11.11%) <-- ALARM
PASS critical Target keyword "cabinzero classic 36l" appears in the body at all
Found 2 occurrence(s).
PASS advisory Target keyword appears in the first paragraph
First paragraph: "Our hands-on review of the CabinZero Classic 36L: real weight, materials, and comfort, plus honest, spec-based comparisons to…"
PASS advisory At least one image alt attribute includes the target keyword
1/1 image alt attribute(s) contain "cabinzero classic 36l".

AST Performance & Assets 100%

PASS important Total page weight is reasonable (<=2 MB)
30 request(s) totaling 1596.2 KB across 4 domain(s).
Evidence
Weight by domain:
onebagreview.com: 915.8 KB (27 req)
www.googletagmanager.com: 484.7 KB (1 req)
pagead2.googlesyndication.com: 195.7 KB (1 req)
fonts.googleapis.com: 0.0 KB (1 req)

Weight by content type:
Image: 807.8 KB (50.6%)
Script: 690.1 KB (43.2%)
HTML: 67.3 KB (4.2%)
Stylesheet: 31.0 KB (1.9%)
PASS advisory Total requests kept reasonable (<=50)
30 total request(s) discovered from static HTML (script/link/img/iframe/source tags).
Evidence
File request log:
200 HTML         67.3 KB  https://onebagreview.com/
200 Script      195.7 KB  https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6071899509823485
200 Script        5.3 KB  https://onebagreview.com/wp-content/themes/kadence/assets/js/navigation.min.js?ver=1.5.2
200 Script        0.4 KB  https://onebagreview.com/wp-content/plugins/newsletter/main.js?ver=9.3.2
200 Script        4.0 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/js/site.js?ver=1.10.22
200 Script      484.7 KB  https://www.googletagmanager.com/gtag/js?id=G-CXVH6TB90R&ver=1.4.0
200 Image        12.6 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/images/logo-onebag-88.png?v=1.10.22
200 Image        49.1 KB  https://onebagreview.com/wp-content/uploads/2026/07/430789_4922_XL.webp
200 Image        40.2 KB  https://onebagreview.com/wp-content/uploads/2026/07/images.jpg
200 Image        57.7 KB  https://onebagreview.com/wp-content/uploads/2026/07/daniel-born-6XS0j1ledgg-unsplash-768x512.jpg
200 Image       115.7 KB  https://onebagreview.com/wp-content/uploads/2026/07/luna-sandals-mono-winged-hero-768x576.jpg
200 Image        39.9 KB  https://onebagreview.com/wp-content/uploads/2026/07/pinkasem-muisri-i0ov0OojeBc-unsplash-768x512.jpg
200 Image        96.3 KB  https://onebagreview.com/wp-content/uploads/2026/07/curated-lifestyle-E9hoLMrGj9E-unsplash-768x657.jpg
200 Image       112.0 KB  https://onebagreview.com/wp-content/uploads/2026/07/bedrock-mountain-clog-hero-768x578.jpg
200 Image        24.0 KB  https://onebagreview.com/wp-content/uploads/2026/07/matador-equipment-gear-cubes-set-black-front-768x768.webp
200 Image        40.5 KB  https://onebagreview.com/wp-content/uploads/2026/07/giulia-squillace-AglOD-it15Q-unsplash-scaled-e1784476938697-768x432.jpg
200 Image       104.9 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/images/packing-banner-1280.jpg
200 Image        98.4 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/images/dimensions-banner-1280.jpg
200 Stylesheet    5.3 KB  https://onebagreview.com/wp-content/themes/kadence/assets/css/global.min.css?ver=1.5.2
200 Stylesheet    4.4 KB  https://onebagreview.com/wp-content/themes/kadence/assets/css/header.min.css?ver=1.5.2
200 Stylesheet    6.0 KB  https://onebagreview.com/wp-content/themes/kadence/assets/css/content.min.css?ver=1.5.2
200 Stylesheet    1.8 KB  https://onebagreview.com/wp-content/themes/kadence/assets/css/footer.min.css?ver=1.5.2
200 Stylesheet    1.4 KB  https://onebagreview.com/wp-content/plugins/newsletter/style.css?ver=9.3.2
200 Stylesheet    0.2 KB  https://onebagreview.com/wp-content/themes/one-bag-review/style.css?ver=1.10.22
200 Stylesheet    0.0 KB  https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=DM+Sans:wght@400;500;600&display=swap
200 Stylesheet    7.3 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/css/global.css?ver=1.10.22
200 Stylesheet    1.6 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/css/carousel.css?ver=1.10.22
200 Stylesheet    2.9 KB  https://onebagreview.com/wp-content/themes/one-bag-review/assets/css/landing.css?ver=1.10.22
200 Image         1.6 KB  https://onebagreview.com/wp-content/uploads/2026/07/cropped-OneBag-32x32.png
200 Image        14.9 KB  https://onebagreview.com/wp-content/uploads/2026/07/cropped-OneBag-192x192.png

RDB Readability 0%

FAIL advisory Flesch Reading Ease is reasonably accessible (>=50)
Score 35.3 (Difficult). 27.0 avg words/sentence across 1 sentences (27 words).

PRS Search Presentation 60%

FAIL important Mandatory Open Graph tags present (title/description/image/url/type)
Missing: ['og:image'].
PASS important Meta description length is ~120-165 characters
138 characters: "One bag travel guides, carry-on backpack reviews, packing lists, and airline dimension tools to help you travel lighter with a single bag."
PASS advisory twitter:card meta tag present
content="summary"

REL Search Relevance 83%

FAIL advisory H1 and title tag share topical keywords
Word overlap ratio: 0%. H1: "Pack less. Go further. Stay ready for anything." | Title: "One Bag Review | One Bag Travel Guides & Carry-On Gear"
PASS important Title tag length is 10-60 characters
54 characters: "One Bag Review | One Bag Travel Guides & Carry-On Gear"
PASS critical Exactly one H1 on the page
Found 1 H1 element(s): ['Pack less. Go further. Stay ready for anything.']

SEC Security Headers 90%

FAIL advisory Content-Security-Policy header present
Not present.
PASS critical Strict-Transport-Security (HSTS) header present
max-age=31536000
PASS important X-Content-Type-Options: nosniff present
nosniff
PASS important Clickjacking protection (X-Frame-Options or CSP frame-ancestors)
SAMEORIGIN
PASS advisory Referrer-Policy header present
strict-origin-when-cross-origin
PASS advisory Permissions-Policy header present
camera=(), microphone=(), geolocation=()

TAX Taxonomy 50%

FAIL advisory URL or breadcrumb trail suggests a distinct category
no breadcrumb trail found; path is a flat slug (no category segment).
PASS advisory Tag count is reasonable (not over-tagged)
0 distinct tag link(s) found via /tag/ URL pattern -- 0 may mean no tags, or that this site tags posts using a different URL convention this check doesn't recognize.

TEC Technical 82%

FAIL advisory Terms of Service link present on the page
No link matching "terms" found on this page.
FAIL advisory Cookie Policy link present on the page
No link matching "cookie" found on this page.
PASS important No unnecessary redirect chain
Loaded directly, no redirects.
Evidence
https://onebagreview.com/
PASS critical Served over HTTPS
Scheme is 'https'.
PASS important Response served with gzip/brotli compression
Content-Encoding: gzip
PASS advisory Cache-Control or Expires header present
Cache-Control/Expires: no-cache
PASS advisory Privacy Policy link present on the page
Found.

TPL Template Structure 38%

FAIL important Breadcrumb navigation present in HTML
No breadcrumb markup found.
FAIL important BreadcrumbList JSON-LD schema present
Not found in JSON-LD.
Suggested fix
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://onebagreview.com/"},
    {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://onebagreview.com/blog"},
    {"@type": "ListItem", "position": 3, "name": "One Bag Review | One Bag Travel Guides & Carry-On Gear", "item": "https://onebagreview.com/"}
  ]
}
</script>
FAIL advisory Author and published/updated date present
<time> tag found: False; author marker found: False
FAIL advisory First paragraph has enough substance (>=30 words)
18 words: "Our hands-on review of the CabinZero Classic 36L: real weight, materials, and comfort, plus honest, spec-based comparisons to…"
FAIL advisory 3-7 contextual internal links in article body
1 internal link(s) found in article body.
FAIL advisory Article has substantial content (>=300 words)
27 words in the article body.
PASS critical Page-appropriate JSON-LD schema present (e.g. Organization/WebSite/Product)
Found types: ['ImageObject', 'Organization']
PASS advisory Internal link anchor text is varied (not over-repeated)
Most common anchor text "cabinzero classic 36l reviewour hands-on review of the cabinzero classic 36l: real weight, materials, and comfort, plus honest, spec-based comparisons to…read the review" used 1/1 times.
PASS advisory Heading levels don't skip (e.g. H1 straight to H3)
H1:1 H2:4 H3:8 H4:0 H5:0 H6:0 -- no skipped levels.

3PI Third-Party Impact 100%

PASS advisory Third-party categories kept to a reasonable number (<=5)
3 third-party categories detected across 3 domain(s): Advertising, Fonts, Tag Manager.
Evidence
Advertising: pagead2.googlesyndication.com
Fonts: fonts.googleapis.com
Tag Manager: www.googletagmanager.com

CON URL Consolidation 100%

PASS critical At most one <link rel="canonical"> tag
1 canonical tag found.
PASS critical Self-referencing canonical tag
Canonical matches the page's own URL.
Evidence
https://onebagreview.com/
PASS important Canonical href is an absolute URL
Canonical href is absolute.
PASS critical Self-referencing canonical isn't also marked noindex
Self-referencing canonical and no noindex conflict.

URL URL Structure 100%

PASS important URL slug has no date segment
Path: /
PASS important URL uses hyphens, not underscores
Path: /
PASS advisory URL path is shallow (<=4 segments)
Path depth: 0 segment(s) -- /

VAL Validation 100%

PASS critical At most one <title> tag
1 title tag found.
PASS critical At most one meta description tag
1 meta description tag found.
PASS critical Responsive viewport meta tag present
width=device-width, initial-scale=1
PASS critical Character encoding declared
Found.
PASS critical Title/meta description/canonical are inside <head>
All present head-level tags are actually inside <head>.
PASS important No empty src/href attributes
0 <img> with empty src; 0 <a> with empty href.
Script for your agent
Paste into Claude Code, Cursor, or another coding agent to apply every fix below.
Fix the following on-page SEO issues on https://onebagreview.com/.
Apply each fix directly in the page template/source, without changing unrelated content or design.

1. [Critical] llms.txt present
   Issue: Not found -- see llmstxt.org for the emerging convention.

2. [Critical] Page content is readable without running JavaScript
   Issue: Only 27 word(s) of text came through before any JavaScript runs -- bots and assistants that don't execute JS (most AI crawlers, many scrapers) see essentially a blank page, not the content a visitor sees in a browser.

3. [Important] Mandatory Open Graph tags present (title/description/image/url/type)
   Issue: Missing: ['og:image'].

4. [Important] Breadcrumb navigation present in HTML
   Issue: No breadcrumb markup found.

5. [Important] BreadcrumbList JSON-LD schema present
   Issue: Not found in JSON-LD.
   Fix:
     <script type="application/ld+json">
     {
       "@context": "https://schema.org",
       "@type": "BreadcrumbList",
       "itemListElement": [
         {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://onebagreview.com/"},
         {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://onebagreview.com/blog"},
         {"@type": "ListItem", "position": 3, "name": "One Bag Review | One Bag Travel Guides & Carry-On Gear", "item": "https://onebagreview.com/"}
       ]
     }
     </script>

6. [Important] Lazy-loading applied correctly (hero eager, rest lazy)
   Issue: first/hero image is lazy-loaded (can delay LCP)
   Fix:
     <!-- hero/first image: omit loading, or set loading="eager" -->
     <img src="hero.jpg" alt="...">
     
     <!-- every other image: -->
     <img src="..." alt="..." loading="lazy">

7. [Important] Navigation signal present (breadcrumbs or SiteNavigationElement schema)
   Issue: No breadcrumb markup or SiteNavigationElement schema found.

8. [Important] Keyword density for "cabinzero classic 36l" stays under the stuffing-risk threshold (<8%)
   Issue: ~22.2% density. Google's current spam policies explicitly list keyword stuffing (repeating a term or phrase unnaturally) as a violation -- well above the 3-5% rule-of-thumb range is a real ranking risk, not just a style issue.

9. [Important] Target keyword appears in the title tag
   Issue: Title: "One Bag Review | One Bag Travel Guides & Carry-On Gear"

10. [Important] Target keyword appears in the H1
   Issue: H1: "Pack less. Go further. Stay ready for anything."

11. [Important] No phrase among the top 5 unigrams/bigrams/trigrams is stuffed (>8% density)
   Issue: 8 phrase(s) exceed 8% density: "review" (11.1%); "cabinzero classic" (14.8%); "classic 36l" (14.8%); "cabinzero classic 36l" (22.2%); "classic 36l review" (11.1%); "review our hands-on" (11.1%); "classic 36l real" (11.1%); "36l real weight" (11.1%).

12. [Advisory] H1 and title tag share topical keywords
   Issue: Word overlap ratio: 0%. H1: "Pack less. Go further. Stay ready for anything." | Title: "One Bag Review | One Bag Travel Guides & Carry-On Gear"

13. [Advisory] Author and published/updated date present
   Issue: <time> tag found: False; author marker found: False

14. [Advisory] First paragraph has enough substance (>=30 words)
   Issue: 18 words: "Our hands-on review of the CabinZero Classic 36L: real weight, materials, and comfort, plus honest, spec-based comparisons to…"

15. [Advisory] Images use modern formats (WebP/AVIF)
   Issue: 0/1 images use WebP/AVIF.

16. [Advisory] 3-7 contextual internal links in article body
   Issue: 1 internal link(s) found in article body.

17. [Advisory] URL or breadcrumb trail suggests a distinct category
   Issue: no breadcrumb trail found; path is a flat slug (no category segment).

18. [Advisory] Article has substantial content (>=300 words)
   Issue: 27 words in the article body.

19. [Advisory] Flesch Reading Ease is reasonably accessible (>=50)
   Issue: Score 35.3 (Difficult). 27.0 avg words/sentence across 1 sentences (27 words).

20. [Advisory] llms.txt present (emerging AI-crawler convention)
   Issue: HTTP 404

21. [Advisory] ai.txt present (emerging AI-crawler convention)
   Issue: HTTP 404

22. [Advisory] robots.txt has bot-specific rules (deliberate AI-crawler policy)
   Issue: Only a blanket 'User-agent: *' rule (or none) found -- no evidence of a per-bot policy.

23. [Advisory] At least one rich schema type present (FAQPage, HowTo, Product, etc.)
   Issue: Rich types found: none.

24. [Advisory] Bot access, structured data, llms.txt, and SSR content all align
   Issue: At least one of bot access / structured data / llms.txt / SSR content is missing.

25. [Advisory] Keyword density for "cabinzero classic 36l" is in the classic 3-5% range
   Issue: "cabinzero classic 36l" appears 2 time(s) across 27 words (~22.2% density). Treat this as a rough guideline, not a target to write toward -- natural, reader-first phrasing matters more than hitting an exact number (over-optimizing risks tripping Google's keyword-stuffing spam policy; too little risks the page not clearly signaling its topic).

26. [Advisory] Target keyword appears in the meta description
   Issue: Meta description: "One bag travel guides, carry-on backpack reviews, packing lists, and airline dimension tools to help you travel lighter with a single bag."

27. [Advisory] Content-Security-Policy header present
   Issue: Not present.

28. [Advisory] Terms of Service link present on the page
   Issue: No link matching "terms" found on this page.

29. [Advisory] Cookie Policy link present on the page
   Issue: No link matching "cookie" found on this page.
Scope note: this report only covers checks that can be evaluated deterministically from a single fetched page (URL structure, metadata, schema, image attributes, template structure). It does not and cannot evaluate content quality, genuine expertise/trustworthiness signals, whether publishing volume constitutes scaled content abuse, or site-wide taxonomy health. Those require human judgment or a full-site crawl.