feat(v2/seo): per-page last-updated dates + JSON-LD structured data

C — git-revision-date-localized plugin: adds a 'Last update' date to every V2
page (freshness signal for SEO and reader trust). Added the dependency to
requirements.txt, enabled it in v2-mkdocs.yml (type: date,
fallback_to_build_date so the build never fails), and set fetch-depth: 0 on the
06 deploy checkout so the plugin sees full git history (otherwise every page
would show the build date).

D — JSON-LD schema.org structured data: WebSite (with a sitelinks SearchAction)
+ publishing Organization, injected via an extrahead block in docs/overrides/
main.html (shared V1/V2). Enables richer search results / knowledge-panel
eligibility. Validated: build exits 0, JSON-LD parses, 'Last update' renders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nubenetes Bot
2026-06-20 12:21:58 +02:00
parent a6cf0d97ef
commit 266499ac2f
4 changed files with 59 additions and 0 deletions

View File

@@ -25,6 +25,9 @@ jobs:
uses: actions/checkout@v6
with:
submodules: true
# Full history so mkdocs-git-revision-date-localized can compute the
# real per-page "last updated" date (shallow clone => all build-date).
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v6

View File

@@ -3,3 +3,51 @@
{% block announce %}
<strong>New:</strong> <a href="./tech-digest/">Intelligence Digest</a> — AI-curated trending resources across 26 categories
{% endblock %}
{#-
JSON-LD structured data (schema.org) for richer search results: declares the
WebSite (with a sitelinks SearchAction) and the publishing Organization.
Only the V2 portal uses this overrides dir (custom_dir: docs/overrides), so
this injects on the canonical nubenetes.com root; V1 uses the stock theme.
-#}
{% block extrahead %}
{{ super() }}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "WebSite",
"@id": "https://nubenetes.com/#website",
"url": "https://nubenetes.com/",
"name": "Nubenetes",
"description": "AI-curated portal for the modern Cloud Native ecosystem: high-density, ranked selection of top-tier Kubernetes, DevOps and Cloud resources.",
"publisher": { "@id": "https://nubenetes.com/#organization" },
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://nubenetes.com/?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
},
{
"@type": "Organization",
"@id": "https://nubenetes.com/#organization",
"name": "Nubenetes",
"url": "https://nubenetes.com/",
"logo": {
"@type": "ImageObject",
"url": "https://nubenetes.com/images/favicon-ultra.png"
},
"sameAs": [
"https://github.com/nubenetes/awesome-kubernetes",
"https://twitter.com/nubenetes",
"https://www.linkedin.com/groups/1937212/"
]
}
]
}
</script>
{% endblock %}

View File

@@ -5,3 +5,4 @@ youtube-transcript-api
mkdocs-redirects>=1.2.3
mkdocs-minify-plugin>=0.8.0
mkdocs-rss-plugin>=1.15.0
mkdocs-git-revision-date-localized-plugin>=1.3.0

View File

@@ -58,6 +58,13 @@ theme:
plugins:
- search
# "Last updated" per-page date (freshness signal for SEO + reader trust).
# Needs full git history (fetch-depth: 0 in 06.deploy_final.yml); falls back
# to the build date when history is unavailable so the build never fails.
- git-revision-date-localized:
enable_creation_date: false
type: date
fallback_to_build_date: true
- privacy
- social:
cards: true