From 6da74058cf576159fc9938f7d681f153a115b3a0 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Tue, 1 Sep 2026 15:32:43 +0200 Subject: [PATCH 1/3] fix: emit canonical link (pubid blog URLs are date-prefixed) --- scripts/emit-newsml.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/emit-newsml.mjs b/scripts/emit-newsml.mjs index 5560c9c..4825b1c 100644 --- a/scripts/emit-newsml.mjs +++ b/scripts/emit-newsml.mjs @@ -52,6 +52,7 @@ const guid = (p) => `urn:ribose:news:${p.date}:${SPOKE.id}:${p.slug}` const toItemModel = (p, full) => ({ itemMeta: { guid: guid(p), lang: 'en', version: 1, itemClass: 'ninat:text', + canonical: `${SPOKE.base}/blog/${p.date}-${p.slug}`, provider: { qcode: `nprov:${SPOKE.id}`, name: SPOKE.name }, versionCreated: `${p.date}T00:00:00+00:00`, }, From 0522f50e2af9f96e5355c62a2ed152bba55d1016 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Tue, 1 Sep 2026 15:33:13 +0200 Subject: [PATCH 2/3] fix: re-resolve newsmlg2-ts to canonical-link capable commit --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index b84a5ec..eb81498 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7620,7 +7620,7 @@ }, "node_modules/newsmlg2-ts": { "version": "0.1.0", - "resolved": "git+ssh://git@github.com/lutaml/newsmlg2-ts.git#8ad38b349a9c78fa11c6c3677e216abbd5e4e8a1", + "resolved": "git+ssh://git@github.com/lutaml/newsmlg2-ts.git#1cf21bd0d9f3483d07a9c2591d77924d1090e23a", "license": "BSD-2-Clause", "dependencies": { "fast-xml-parser": "^4.5.0" From 97d7dd28b894f266b3437ec1c89b99e1f926b6c1 Mon Sep 17 00:00:00 2001 From: Ronald Tse Date: Tue, 1 Sep 2026 15:33:31 +0200 Subject: [PATCH 3/3] fix: canonical under the public domain (www.pubid.com) --- scripts/emit-newsml.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/emit-newsml.mjs b/scripts/emit-newsml.mjs index 4825b1c..b1a177d 100644 --- a/scripts/emit-newsml.mjs +++ b/scripts/emit-newsml.mjs @@ -14,7 +14,7 @@ import { marked } from 'marked' const root = join(dirname(fileURLToPath(import.meta.url)), '..') const BLOG = join(root, 'src/content/blog') const OUT = join(root, 'dist/news-data') -const SPOKE = { id: 'pubid', name: 'PubID', base: 'https://pubid.github.io' } +const SPOKE = { id: 'pubid', name: 'PubID', base: 'https://www.pubid.com' } const parseFrontmatter = (raw) => { const m = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/)