Catalog / obsidian.co.za
44

SEO audit for obsidian.co.za

One partner across your entire open source stack. | Obsidian Systems

saasNext.js

Health 44/100 (poor) · 18 pages crawled · generated 2026-08-26

Download Markdown report (feed to ChatGPT / Claude / Cursor)

Most organisations manage five or more vendor relationships for the technology we handle under one roof, Red Hat, Atlassian, AWS, & Penguin Solutions.

18
pages crawled
14
indexable pages
8
errors
54
warnings
144
notices
5
orphan pages
1
broken links
Category breakdown
CategoryScoreErrorsWarningsNotices
Crawlability 82 3 1 0
Sitemap 89 2 0 6
Titles 89 2 0 0
Links 86 1 5 15
Canonical 77 0 14 0
Performance 82 0 11 32
Duplicate 87 0 8 4
Meta Description 87 0 8 0
Headings 95 0 3 1
Indexability 95 0 3 0
Agent Readiness 98 0 1 17
Content 100 0 0 26
Images 100 0 0 3
Security 100 0 0 17
Social 100 0 0 8
Structured Data 100 0 0 14
URL 100 0 0 1
Findings

Errors (4 rules)

error Broken internal link (target 4xx/5xx)

Rule links.broken_internal · Links · 1 occurrence(s)

error Non-200 URL listed in sitemap

Rule sitemap.not_200 · Sitemap · 2 occurrence(s)

error Client error (4xx) response

Rule status.4xx · Crawlability · 3 occurrence(s)

error Missing or empty <title>

Rule title.missing · Titles · 2 occurrence(s)

Warnings (10 rules)

warning Control has no accessible name

Rule agent.control_no_name · Agent Readiness · 1 occurrence(s)

warning Duplicate page content

Rule duplicate.content · Duplicate · 2 occurrence(s)

warning Duplicate <title> across pages

Rule duplicate.title · Duplicate · 6 occurrence(s)

warning Incomplete/empty response after retries (likely transient — re-crawl)

Rule fetch.incomplete · Crawlability · 1 occurrence(s)

warning Hero/LCP image is lazy-loaded (loading=lazy delays LCP)

Rule images.no_lazy_lcp_candidate · Performance · 11 occurrence(s)

  • https://obsidian.co.za/ — the likely hero/LCP image (6a4nk5gtgb0gvklzwbanqfgqpr8umalwtjes4eui6wngzpar) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/about — the likely hero/LCP image (6a4nk5gtgb0gwofrobusahdqpvlr8ztqcliuszyfikjteexb) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/architectures — the likely hero/LCP image (6a4nk5gtgb0gvklzwbanqfgqpr8umalwtjes4eui6wngzpar) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/architectures/smarter-platforms — the likely hero/LCP image (6a4nk5gtgb0gvklzwbanqfgqpr8umalwtjes4eui6wngzpar) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/blog — the likely hero/LCP image (6a4nk5gtgb0gkyhfrix0dmcuxj9qma5hfxdwtyjueskc64pw) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/contact — the likely hero/LCP image (6a4nk5gtgb0gkyhfrix0dmcuxj9qma5hfxdwtyjueskc64pw) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/free-beer-sessions — the likely hero/LCP image (6a4nk5gtgb0grgp93dzmetsxnazkxfpjilmublfy84ch9aip) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/home — the likely hero/LCP image (6a4nk5gtgb0gvklzwbanqfgqpr8umalwtjes4eui6wngzpar) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/posts/the-secret-of-getting-ahead-and-staying-there--agile — the likely hero/LCP image (6a4nk5gtgb0grrhfiuzmetsxnazkxfpjilmublfy84ch9aip) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/vendors/amazon-web-services — the likely hero/LCP image (6a4nk5gtgb0gvklzwbanqfgqpr8umalwtjes4eui6wngzpar) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.
  • https://obsidian.co.za/webinars — the likely hero/LCP image (6a4nk5gtgb0gkyhfrix0dmcuxj9qma5hfxdwtyjueskc64pw) has loading="lazy" — Google explicitly warns against lazy-loading the LCP image, because it delays the fetch until layout completes. Remove loading="lazy" from the first significant image and add fetchpriority="high" instead.

warning Page is noindex

Rule index.noindex · Indexability · 3 occurrence(s)

warning Orphan page (no internal inlinks)

Rule links.orphan · Links · 5 occurrence(s)

Notices (18 rules)

notice Heading levels skip a level

Rule agent.heading_skip · Agent Readiness · 2 occurrence(s)

notice No llms.txt for AI agents

Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)

  • https://obsidian.co.za/ — no llms.txt found at the site root — add one so AI agents get a curated site summary

notice No main landmark for AI agents

Rule agent.no_main_landmark · Agent Readiness · 14 occurrence(s)

notice Main text is hard to read (low Flesch Reading Ease)

Rule content.readability_poor · Content · 13 occurrence(s)

  • https://obsidian.co.za/ — this page reads as very difficult (Flesch Reading Ease 4, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/about — this page reads as difficult (Flesch Reading Ease 31, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/architectures — this page reads as very difficult (Flesch Reading Ease 7, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/architectures/smarter-platforms — this page reads as very difficult (Flesch Reading Ease -8, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/blog — this page reads as very difficult (Flesch Reading Ease -30, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/contact — this page reads as very difficult (Flesch Reading Ease 13, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/free-beer-sessions — this page reads as very difficult (Flesch Reading Ease 14, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/home — this page reads as very difficult (Flesch Reading Ease 4, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/posts/the-secret-of-getting-ahead-and-staying-there--agile — this page reads as difficult (Flesch Reading Ease 30, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/products — this page reads as very difficult (Flesch Reading Ease 8, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/vendors — this page reads as very difficult (Flesch Reading Ease -79, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/vendors/amazon-web-services — this page reads as very difficult (Flesch Reading Ease -54, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.
  • https://obsidian.co.za/webinars — this page reads as very difficult (Flesch Reading Ease -82, below 50) — long sentences and multi-syllable words make it hard to scan. Shorten sentences and prefer plainer words to widen your audience. Density can be legitimate for expert, technical or legal content, so judge it against who the page is for.

notice Duplicate meta description across pages

Rule duplicate.meta_desc · Duplicate · 4 occurrence(s)

notice Multiple <h1> elements

Rule h1.multiple · Headings · 1 occurrence(s)

notice Images without width/height (layout shift / CLS)

Rule images.missing_dimensions · Images · 3 occurrence(s)

notice Internal link has no anchor text / accessible name

Rule links.no_anchor_text · Links · 14 occurrence(s)

  • https://obsidian.co.za/ — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/about — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/architectures — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/architectures/smarter-platforms — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/blog — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/contact — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/documents/terms-and-conditions — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/free-beer-sessions — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/home — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/posts/the-secret-of-getting-ahead-and-staying-there--agile — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/products — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/vendors — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/vendors/amazon-web-services — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.
  • https://obsidian.co.za/webinars — 2 internal link(s) have no anchor text, aria-label, or image alt — they pass no keyword signal and are unusable to screen readers. Add descriptive text or an aria-label.

notice Page has only one internal inlink (fragile crawl path)

Rule links.single_inlink · Links · 1 occurrence(s)

notice Large DOM (over 1500 elements) slows rendering & interaction

Rule perf.dom_size_large · Performance · 1 occurrence(s)

  • https://obsidian.co.za/free-beer-sessions — the page has 1538 DOM elements (recommended maximum is around 1500) — a large DOM increases style-recalculation, layout and paint cost, hurting LCP and INP. Flatten deep nesting, paginate long lists/tables, and lazy-render off-screen elements.

notice No Last-Modified header (no conditional GET for unchanged pages)

Rule perf.no_last_modified · Performance · 14 occurrence(s)

  • https://obsidian.co.za/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/about — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/architectures — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/architectures/smarter-platforms — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/blog — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/contact — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/documents/terms-and-conditions — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/free-beer-sessions — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/home — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/posts/the-secret-of-getting-ahead-and-staying-there--agile — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/products — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/vendors — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/vendors/amazon-web-services — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
  • https://obsidian.co.za/webinars — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.

notice Missing recommended security headers

Rule security.missing_headers · Security · 17 occurrence(s)

notice Indexable page not listed in sitemap

Rule sitemap.orphan_not_listed · Sitemap · 6 occurrence(s)

notice Uppercase letters in URL path

Rule url.uppercase · URL · 1 occurrence(s)

Pages (showing 18 of 18)
URLStatusIndexableWordsIn-links
https://obsidian.co.za/
One partner across your entire open source stack. | Obsidian Systems
200 yes 599 14
https://obsidian.co.za/architectures/smarter-platforms
Obsidian Systems
200 yes 769 14
https://obsidian.co.za/contact
Contact | Obsidian Systems | Obsidian Systems
200 yes 424 14
https://obsidian.co.za/documents/terms-and-conditions
Obsidian Systems
200 yes 4521 14
https://obsidian.co.za/home
One partner across your entire open source stack. | Obsidian Systems
200 yes 599 14
https://obsidian.co.za/vendors/amazon-web-services
Obsidian Systems
200 yes 394 14
https://obsidian.co.za/architectures 200 yes 883 2
https://obsidian.co.za/vendors 200 yes 484 2
https://obsidian.co.za/posts/the-secret-of-getting-ahead-and-staying-there--agile
Obsidian Systems
200 yes 889 1
https://obsidian.co.za/about
Obsidian Systems | Enterprise Open Source Solutions | Obsidian Systems
200 yes 732 0
https://obsidian.co.za/blog
Blog | Obsidian Systems | Obsidian Systems
200 yes 421 0
https://obsidian.co.za/free-beer-sessions
Free Beer Sessions | Obsidian Systems | Obsidian Systems
200 yes 1636 0
https://obsidian.co.za/products
DevOps Product Offering | Obsidian Systems | Obsidian Systems
200 yes 552 0
https://obsidian.co.za/webinars
Webinars | Obsidian Systems | Obsidian Systems
200 yes 466 0
https://obsidian.co.za/contact?product=stratus-ftserver 0 no 0 2
https://obsidian.co.za/posts 404 no 0 0
https://obsidian.co.za/search 404 no 0 0
https://obsidian.co.za/wp-content/uploads/2023/09/IG-AWS-Webinar-SmarterTeams-v5-600x600-1.png
404: This page could not be found.
404 no 7 1

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →