Skip to content

website: fix site audit findings (structured data, redirects, internal links) - #3422

Merged
vpetersson merged 1 commit into
Screenly:masterfrom
vpetersson-bot:fix/website-site-audit
Oct 25, 2026
Merged

vpetersson merged 1 commit into
Screenly:masterfrom
vpetersson-bot:fix/website-site-audit

Conversation

@vpetersson-bot

@vpetersson-bot vpetersson-bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

What changed

Fixes for findings from a Semrush Site Audit of anthias.screenly.io.

  • Structured data errors (home page). The home page declared a SoftwareApplication. Google's rich-result rules make aggregateRating or review mandatory for that type, and the project has no first-party ratings to cite, so the block was reported as invalid. It is replaced with an @graph of Organization, WebSite and SoftwareSourceCode (repository, license, languages, runtime platform), none of which carry that requirement. The block is now built as a Hugo dict and serialized with jsonify, rather than being hand-quoted JSON.
  • Meta refresh redirects. /docs/balena-fleet-deployment/ and /docs/x86-installation/ are Hugo aliases (meta refresh pages) left over from the docs URL change. Internal links still pointed at them: six marketing pages, one FAQ answer, and the newsletter template. Those links now go straight to /docs/balena/ and /docs/pc/. The alias pages stay in place so old external links and bookmarks keep working. I also removed three aliases that pointed at their page's own URL (asset-scheduling, display-schedule, wifi-setup). They did nothing.
  • Links with no anchor text (/docs/wifi-setup/). This page has the only bare autolink on the site (<http://192.168.42.1:8000>), so the link text was just the raw URL. It now reads "the setup page at 192.168.42.1:8000".
  • Pages with only one internal link. Docs pages were reachable only from the /docs/ index. Each docs page now ends with a short "More documentation" list that links to the other docs pages. The footer's Product column now also links "Advertising Display" and "Info Screen", the two landing pages that had a single inbound link.

How verified

  • Built the site locally with Hugo extended 0.157.0, the version CI uses, and ran the same css:build, hugo --minify and llms:generate steps. The build is clean.
  • Home page JSON-LD parses with json.tool and contains the expected three-node graph.
  • None of the built pages links to any of the remaining alias (meta refresh) pages.
  • /docs/wifi-setup/ renders the captive-portal link with descriptive text.
  • Docs pages and the two landing pages now each have several inbound internal links, from the docs cross-link list and the site-wide footer.
  • llms-full.txt output is unchanged by the new docs nav.

Not addressed, and why

  • Server-side redirects instead of meta refresh. The site is served from GitHub Pages, which has no redirect configuration. A 301 would have to be a Cloudflare redirect rule, and that is managed outside this repo. With internal links fixed, only old external links still reach the alias pages, and those pages already carry a rel=canonical to the final URL.
  • No HSTS support. This is a response header set by the hosting and CDN layer (GitHub Pages behind Cloudflare). It cannot be set from the repo and has to be enabled in the Cloudflare SSL/TLS settings.
  • Nofollow on external links. This is intentional. layouts/_default/_markup/render-link.html deliberately adds rel="nofollow" to third-party links and leaves the project's own domains followed, and documents that choice. Left as is.
  • Low text to HTML ratio (home) and Content not optimized (/api/). The home page is a visual landing page, and the API page is a generated reference. Improving either means rewriting copy or restructuring the page rather than making a cheap structural fix, so both are out of scope here.

🤖 Generated with Claude Code

- Home page JSON-LD: replace the SoftwareApplication block, which
  Google's rich-result rules flag as invalid without aggregateRating or
  review, with an @graph of Organization, WebSite and
  SoftwareSourceCode, serialized via jsonify.
- Point internal links at final URLs instead of the meta-refresh alias
  pages (/docs/balena-fleet-deployment/ -> /docs/balena/,
  /docs/x86-installation/ -> /docs/pc/), including the newsletter.
- Drop aliases that pointed at the page's own URL (asset-scheduling,
  display-schedule, wifi-setup).
- Give the bare captive-portal autolink on /docs/wifi-setup/
  descriptive anchor text.
- Add a "More documentation" cross-link list to docs pages and link
  the advertising-display and info-screen pages from the footer, so
  these pages are no longer reachable through a single internal link.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
@vpetersson-bot
vpetersson-bot requested a review from a team as a code owner October 25, 2026 11:07
Copilot AI lite review requested due to automatic review settings October 25, 2026 11:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error: Your billing is not configured or you have Copilot licenses from multiple standalone organizations or enterprises. To use premium requests, select a billing entity via the GitHub site, under Settings > Copilot > Features.

@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Oct 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (master@16e07c3). Learn more about missing BASE report.

Additional details and impacted files
@@            Coverage Diff            @@
##             master    #3422   +/-   ##
=========================================
  Coverage          ?   91.26%           
=========================================
  Files             ?       91           
  Lines             ?    10983           
  Branches          ?     1222           
=========================================
  Hits              ?    10024           
  Misses            ?      696           
  Partials          ?      263           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vpetersson
vpetersson merged commit 9fa6047 into Screenly:master Oct 25, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants