feat(plugin page): robust SEO + sitemap inclusion

- Richer metadata: 14 targeted keywords, explicit robots directives
  (index/follow + googleBot max-image-preview), full OpenGraph with OG
  image, twitter summary_large_image, authors/creator/publisher fields
- 3 JSON-LD blocks: SoftwareApplication (version, downloadUrl, featureList,
  screenshot), FAQPage (4 install/usage Q&As), BreadcrumbList
- Add /plugin to STATIC_PAGES sitemap (monthly, priority 0.7)
- Update sitemap tests: static count 7→8, assert /plugin present
- All 25 sitemap tests pass
This commit is contained in:
2026-06-29 00:10:07 +08:00
parent b416f49e3d
commit 59ecb4e4a6
3 changed files with 119 additions and 15 deletions
+4 -3
View File
@@ -159,12 +159,12 @@ describe("Sitemap Generator (app/sitemap.ts)", () => {
// ── sitemap({ id: 'static' }) ──────────────────────────────────────
describe("sitemap({ id: 'static' })", () => {
it("returns 7 static page entries", async () => {
it("returns 8 static page entries", async () => {
const mod = await import("@/app/sitemap")
const result = await mod.default({ id: Promise.resolve("static") })
expect(Array.isArray(result)).toBe(true)
expect(result).toHaveLength(7)
expect(result).toHaveLength(8)
})
it("first entry is homepage with priority 1.0", async () => {
@@ -182,6 +182,7 @@ describe("Sitemap Generator (app/sitemap.ts)", () => {
const urls = result.map((e: { url: string }) => e.url)
expect(urls).toContain("https://deckyvault.xyz/games")
expect(urls).toContain("https://deckyvault.xyz/compare")
expect(urls).toContain("https://deckyvault.xyz/plugin")
})
it("includes lastModified on all entries", async () => {
@@ -360,7 +361,7 @@ describe("Sitemap Generator (app/sitemap.ts)", () => {
const mod = await import("@/app/sitemap")
const result = await mod.default({ id: Promise.resolve("static") })
expect(result).toHaveLength(7)
expect(result).toHaveLength(8)
})
it("unknown id returns empty array", async () => {