Conversation
EvilCharts and Canvas UI used a category id that is not in the taxonomy, so they appeared on no category page. Move them to developer-tools and add a catalog test that fails on any unknown category id. Co-authored-by: Ding Yi <dingyimac@gmail.com>
Crawl graph: only the first 60 entries of the homepage and of each category
were linked from static HTML, leaving ~2,100 entry pages reachable only via
the sitemap. Category listings now render 100 entries per page as static
routes (/videos/category/{id}/ and /videos/category/{id}/{n}/), with
rel prev/next, every page number linked from every page, and matching
markdown siblings. Detail pages link their category (fact row, prose, and a
category level in the BreadcrumbList).
Freshness: dateModified was a hardcoded constant on every page. It now
derives from the catalog (post date or newer view snapshot per entry;
newest change per listing), and the sitemap carries <lastmod> for every
page the catalog can vouch for.
VideoObject: drop embedUrl (the detail page is not an embeddable player)
and add genre.
Co-authored-by: Ding Yi <dingyimac@gmail.com>
The site copy only ever said 'startup launch videos'; the phrase 'product
launch video' appeared solely in fallback strings. Add it alongside the
existing phrase in the homepage title, meta description, hero copy, crawler
intro, JSON-LD names, category titles/copy, and entry-page titles
('— Product launch video | What Ships'; motion entries say 'Launch film').
The homepage JSON-LD now also carries the ItemList of newest entries it was
built to emit but was never passed.
Co-authored-by: Ding Yi <dingyimac@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The site copy only ever said "startup launch videos"; "product launch video" appeared solely in fallback strings. Only the first 60 entries of the homepage and of each category were linked from static HTML, leaving ~2,100 entry pages reachable only via the sitemap.
dateModifiedwas a hardcoded constant on every page and the sitemap had no<lastmod>.What changes
Keywords (both phrases kept, no layout changes)
<title>→Startup & Product Launch Videos from X — What Ships; meta description, hero copy, crawler intro and JSON-LD names now carry both phrases.{Label} startup & product launch videos — What Ships, H1 unchanged, copy mentions product launch videos.— Product launch video | What Ships(motion entries:Launch film); definition sentence says "product launch video";VideoObject.genreadded.Internal linking
PAGE_SIZE60 → 100: homepage HTML now links 100 entries./videos/category/{id}/+/videos/category/{id}/{n}/, withrel=prev/next, every page number linked from every page (max 9 pages), and matching markdown siblings. Replaces the "showing 60 of N, see home grid" paragraph, styled like the existing category chips.BreadcrumbListgains a category level.Freshness / structured data
dateModifiedderives from the catalog: per entry, post date or newer view snapshot; per listing, newest entry change. Sitemap emits<lastmod>for every catalog-backed URL (hand-written pages omit it rather than claim a date).ItemListit was written to emit.VideoObject.embedUrl(pointed at the HTML page, not a player).Data fix
devtools(not in the taxonomy) and appeared on no category page; moved todeveloper-tools, with a test guarding unknown ids.Verification
vitest run: 106 passed (new tests for date helpers, sitemap entries, paginated category markdown, category ids).astro check: 0 errors.astro build: 2,198 pages; sitemap has 2,199 URLs / 2,189 lastmods;/videos/category/ai/2/…/9/exist with 100 links each.Category pagination, desktop
Category pagination, mobile
Not in this PR
/.To show artifacts inline, enable in settings.