Automate sitemap and RSS feed generation
- Created scripts/generate-sitemap.ts to auto-generate sitemap.xml - Created scripts/generate-rss.ts to auto-generate RSS feed - Both scripts pull from centralized claims data - Added prebuild script to run generators before each build - Installed tsx for TypeScript script execution - Sitemap and RSS feed now include all 11 claims pages (including ai-judgment-skills) - Updated documentation with new auto-generated files - No more manual updates needed for sitemap or RSS feed
This commit is contained in:
parent
9ee2503e42
commit
834d71974c
|
|
@ -351,6 +351,8 @@ Everything updates automatically based on the centralized data file!
|
|||
✅ **Topic Filtering** - Works across all pages
|
||||
✅ **Claim Counts** - Automatically calculated everywhere
|
||||
✅ **Article Counts** - Automatically calculated everywhere
|
||||
✅ **Sitemap** (`/sitemap.xml`) - Auto-generated for search engines
|
||||
✅ **RSS Feed** (`/feed.xml`) - Auto-generated for subscribers
|
||||
|
||||
## Testing
|
||||
|
||||
|
|
|
|||
|
|
@ -68,6 +68,7 @@
|
|||
"eslint-config-next": "^15.0.3",
|
||||
"postcss": "^8.5.6",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"tsx": "^4.20.6",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
},
|
||||
|
|
@ -122,6 +123,448 @@
|
|||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/aix-ppc64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz",
|
||||
"integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"aix"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz",
|
||||
"integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz",
|
||||
"integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ia32": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz",
|
||||
"integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz",
|
||||
"integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-mips64el": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz",
|
||||
"integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ppc64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz",
|
||||
"integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-riscv64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz",
|
||||
"integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-s390x": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz",
|
||||
"integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openharmony-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openharmony"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/sunos-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"sunos"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-arm64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz",
|
||||
"integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-ia32": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz",
|
||||
"integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz",
|
||||
"integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint-community/eslint-utils": {
|
||||
"version": "4.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
|
||||
|
|
@ -4461,6 +4904,48 @@
|
|||
"benchmarks"
|
||||
]
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
|
||||
"integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
|
||||
"devOptional": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/aix-ppc64": "0.25.12",
|
||||
"@esbuild/android-arm": "0.25.12",
|
||||
"@esbuild/android-arm64": "0.25.12",
|
||||
"@esbuild/android-x64": "0.25.12",
|
||||
"@esbuild/darwin-arm64": "0.25.12",
|
||||
"@esbuild/darwin-x64": "0.25.12",
|
||||
"@esbuild/freebsd-arm64": "0.25.12",
|
||||
"@esbuild/freebsd-x64": "0.25.12",
|
||||
"@esbuild/linux-arm": "0.25.12",
|
||||
"@esbuild/linux-arm64": "0.25.12",
|
||||
"@esbuild/linux-ia32": "0.25.12",
|
||||
"@esbuild/linux-loong64": "0.25.12",
|
||||
"@esbuild/linux-mips64el": "0.25.12",
|
||||
"@esbuild/linux-ppc64": "0.25.12",
|
||||
"@esbuild/linux-riscv64": "0.25.12",
|
||||
"@esbuild/linux-s390x": "0.25.12",
|
||||
"@esbuild/linux-x64": "0.25.12",
|
||||
"@esbuild/netbsd-arm64": "0.25.12",
|
||||
"@esbuild/netbsd-x64": "0.25.12",
|
||||
"@esbuild/openbsd-arm64": "0.25.12",
|
||||
"@esbuild/openbsd-x64": "0.25.12",
|
||||
"@esbuild/openharmony-arm64": "0.25.12",
|
||||
"@esbuild/sunos-x64": "0.25.12",
|
||||
"@esbuild/win32-arm64": "0.25.12",
|
||||
"@esbuild/win32-ia32": "0.25.12",
|
||||
"@esbuild/win32-x64": "0.25.12"
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||
|
|
@ -5218,7 +5703,7 @@
|
|||
"version": "4.13.0",
|
||||
"resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
|
||||
"integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
|
||||
"dev": true,
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"resolve-pkg-maps": "^1.0.0"
|
||||
|
|
@ -7270,7 +7755,7 @@
|
|||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
|
||||
"integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
|
||||
"dev": true,
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
|
||||
|
|
@ -8144,6 +8629,26 @@
|
|||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/tsx": {
|
||||
"version": "4.20.6",
|
||||
"resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz",
|
||||
"integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"esbuild": "~0.25.0",
|
||||
"get-tsconfig": "^4.7.5"
|
||||
},
|
||||
"bin": {
|
||||
"tsx": "dist/cli.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"fsevents": "~2.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/type-check": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"prebuild": "tsx scripts/generate-sitemap.ts && tsx scripts/generate-rss.ts",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint"
|
||||
|
|
@ -69,6 +70,7 @@
|
|||
"eslint-config-next": "^15.0.3",
|
||||
"postcss": "^8.5.6",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"tsx": "^4.20.6",
|
||||
"typescript": "^5.8.3"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
135
public/feed.xml
135
public/feed.xml
|
|
@ -5,69 +5,15 @@
|
|||
<link>https://kbanc.com</link>
|
||||
<description>Evidence-based claims about AI implementation, optimized for LLM extraction and research citation.</description>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>Mon, 04 Nov 2025 00:00:00 GMT</lastBuildDate>
|
||||
<lastBuildDate>Tue, 04 Nov 2025 17:36:22 GMT</lastBuildDate>
|
||||
<atom:link href="https://kbanc.com/feed.xml" rel="self" type="application/rss+xml"/>
|
||||
|
||||
<item>
|
||||
<title>Run $150K Market Entry Study in 20 Minutes With AI Research Prompts</title>
|
||||
<link>https://kbanc.com/claims-library/market-entry-study</link>
|
||||
<guid>https://kbanc.com/claims-library/market-entry-study</guid>
|
||||
<pubDate>Mon, 04 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five claims about using structured AI research prompts to replicate $150K consulting engagements in 20 minutes by applying seven-domain framework.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Alpha School: Two Hours of AI-Led Learning Beats Full Day of Classes</title>
|
||||
<link>https://kbanc.com/claims-library/alpha-school</link>
|
||||
<guid>https://kbanc.com/claims-library/alpha-school</guid>
|
||||
<pubDate>Mon, 04 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five claims about Alpha School's AI-led learning model that compresses curriculum into two hours and triples teacher mentoring time.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Make ChatGPT Writing Undetectable With Five Techniques</title>
|
||||
<link>https://kbanc.com/claims-library/undetectable-writing</link>
|
||||
<guid>https://kbanc.com/claims-library/undetectable-writing</guid>
|
||||
<pubDate>Mon, 04 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five claims about transforming AI writing to sound natural: active voice, varied sentence length, avoiding clichés, minimal bullets, and crisp endings.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>AI Prompt Maps Employee Skill Gaps in One Session</title>
|
||||
<link>https://kbanc.com/claims-library/skill-gap-mapping</link>
|
||||
<guid>https://kbanc.com/claims-library/skill-gap-mapping</guid>
|
||||
<pubDate>Mon, 04 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five claims about using structured AI prompts to map employee skill gaps, create development plans, and detect conflicts in 15 minutes.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>How to Set Up ChatGPT Properly in Under 10 Minutes</title>
|
||||
<link>https://kbanc.com/claims-library/chatgpt-setup</link>
|
||||
<guid>https://kbanc.com/claims-library/chatgpt-setup</guid>
|
||||
<pubDate>Mon, 04 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five essential claims about ChatGPT configuration: enable memory, define advisor personality, brief on business context, and use proven frameworks.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>AI ROI Measurement: Why 95% See Zero Returns</title>
|
||||
<link>https://kbanc.com/claims-library/ai-roi-measurement</link>
|
||||
<guid>https://kbanc.com/claims-library/ai-roi-measurement</guid>
|
||||
<pubDate>Sun, 03 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five claims about why companies fail to measure AI ROI, why time saved is the wrong metric, and how top performers focus on revenue-generating activities.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Systems Thinking for AI Implementation</title>
|
||||
<link>https://kbanc.com/claims-library/systems-thinking</link>
|
||||
<guid>https://kbanc.com/claims-library/systems-thinking</guid>
|
||||
<pubDate>Sun, 03 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five claims about preventing narrow optimization mistakes, identifying leverage points, and mapping dependencies before AI automation.</description>
|
||||
<pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about structured prompts complete skill gap analysis in 15 minutes.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
|
|
@ -75,17 +21,80 @@
|
|||
<title>Vibe Hackathons Transform AI Adoption in Three Hours</title>
|
||||
<link>https://kbanc.com/claims-library/vibe-hackathons</link>
|
||||
<guid>https://kbanc.com/claims-library/vibe-hackathons</guid>
|
||||
<pubDate>Sat, 02 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five evidence-based claims about how vibe coding hackathons accelerate AI adoption through experiential learning, cross-functional collaboration, and rapid prototyping.</description>
|
||||
<pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about experiential learning accelerates ai adoption.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Amazon Cuts Costs 25% With AI: Here's Their Exact Process</title>
|
||||
<title>Systems Thinking for AI Implementation</title>
|
||||
<link>https://kbanc.com/claims-library/systems-thinking</link>
|
||||
<guid>https://kbanc.com/claims-library/systems-thinking</guid>
|
||||
<pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about prevent narrow optimization mistakes before automating.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Run $150K Market Entry Study in 20 Minutes With AI Research Prompts</title>
|
||||
<link>https://kbanc.com/claims-library/market-entry-study</link>
|
||||
<guid>https://kbanc.com/claims-library/market-entry-study</guid>
|
||||
<pubDate>Mon, 27 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about seven-domain framework replicates consulting methodology.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Alpha School: Two Hours of AI-Led Learning Beats Full Day of Classes</title>
|
||||
<link>https://kbanc.com/claims-library/alpha-school</link>
|
||||
<guid>https://kbanc.com/claims-library/alpha-school</guid>
|
||||
<pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about ai-led instruction compresses traditional curriculum.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>AI ROI Measurement: Why 95% See Zero Returns</title>
|
||||
<link>https://kbanc.com/claims-library/ai-roi-measurement</link>
|
||||
<guid>https://kbanc.com/claims-library/ai-roi-measurement</guid>
|
||||
<pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about top performers focus on revenue, not time saved.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Amazon Cuts Costs 25% With AI: Here's Their Exact Process</title>
|
||||
<link>https://kbanc.com/claims-library/amazon-ai-playbook</link>
|
||||
<guid>https://kbanc.com/claims-library/amazon-ai-playbook</guid>
|
||||
<pubDate>Wed, 16 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five atomic claims about Amazon's AI implementation methodology that reduced warehouse costs 25% and generates $200 billion in annual recommendation sales.</description>
|
||||
<pubDate>Thu, 16 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about amazon's systematic ai implementation methodology.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Why Judgment Is Your New Career Currency</title>
|
||||
<link>https://kbanc.com/claims-library/ai-judgment-skills</link>
|
||||
<guid>https://kbanc.com/claims-library/ai-judgment-skills</guid>
|
||||
<pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about ai replaces 0.7% of skills, judgment becomes differentiator.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Make ChatGPT Writing Undetectable With Five Techniques</title>
|
||||
<link>https://kbanc.com/claims-library/undetectable-writing</link>
|
||||
<guid>https://kbanc.com/claims-library/undetectable-writing</guid>
|
||||
<pubDate>Tue, 27 May 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about five techniques to make ai writing sound natural.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>How to Set Up ChatGPT Properly in Under 10 Minutes</title>
|
||||
<link>https://kbanc.com/claims-library/chatgpt-setup</link>
|
||||
<guid>https://kbanc.com/claims-library/chatgpt-setup</guid>
|
||||
<pubDate>Fri, 16 May 2025 00:00:00 GMT</pubDate>
|
||||
<description>5 atomic claims about essential configuration for real value extraction.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
|
||||
|
|
@ -94,7 +103,7 @@
|
|||
<link>https://kbanc.com/claims-library/chatgpt-features</link>
|
||||
<guid>https://kbanc.com/claims-library/chatgpt-features</guid>
|
||||
<pubDate>Tue, 29 Apr 2025 00:00:00 GMT</pubDate>
|
||||
<description>Five atomic claims about ChatGPT's most impactful features for workplace productivity, including measurable time savings and strategic advantages.</description>
|
||||
<description>5 atomic claims about most impactful workplace features with measurable savings.</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
</channel>
|
||||
|
|
|
|||
|
|
@ -12,70 +12,76 @@
|
|||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/amazon-ai-playbook</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/vibe-hackathons</loc>
|
||||
<lastmod>2025-11-02</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/systems-thinking</loc>
|
||||
<lastmod>2025-11-03</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/ai-roi-measurement</loc>
|
||||
<lastmod>2025-11-03</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/chatgpt-setup</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/skill-gap-mapping</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/undetectable-writing</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/alpha-school</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/market-entry-study</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/chatgpt-features</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/all</loc>
|
||||
<lastmod>2025-11-04</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/skill-gap-mapping</loc>
|
||||
<lastmod>2025-11-03</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/vibe-hackathons</loc>
|
||||
<lastmod>2025-11-01</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/systems-thinking</loc>
|
||||
<lastmod>2025-10-29</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/market-entry-study</loc>
|
||||
<lastmod>2025-10-27</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/alpha-school</loc>
|
||||
<lastmod>2025-10-23</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/ai-roi-measurement</loc>
|
||||
<lastmod>2025-10-18</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/amazon-ai-playbook</loc>
|
||||
<lastmod>2025-10-16</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/ai-judgment-skills</loc>
|
||||
<lastmod>2025-10-08</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/undetectable-writing</loc>
|
||||
<lastmod>2025-05-27</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/chatgpt-setup</loc>
|
||||
<lastmod>2025-05-16</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://kbanc.com/claims-library/chatgpt-features</loc>
|
||||
<lastmod>2025-04-29</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
</urlset>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
// Auto-generate RSS feed from centralized claims data
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { SORTED_CLAIMS } from '../src/data/claims';
|
||||
|
||||
const baseUrl = 'https://kbanc.com';
|
||||
|
||||
function formatRssDate(dateString: string): string {
|
||||
const date = new Date(dateString);
|
||||
return date.toUTCString();
|
||||
}
|
||||
|
||||
function escapeXml(text: string): string {
|
||||
return text
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
|
||||
function generateRssFeed(): string {
|
||||
const today = new Date().toUTCString();
|
||||
const lastBuildDate = today;
|
||||
|
||||
let xml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Kamil Banc - AI Implementation Claims</title>
|
||||
<link>${baseUrl}</link>
|
||||
<description>Evidence-based claims about AI implementation, optimized for LLM extraction and research citation.</description>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>${lastBuildDate}</lastBuildDate>
|
||||
<atom:link href="${baseUrl}/feed.xml" rel="self" type="application/rss+xml"/>
|
||||
`;
|
||||
|
||||
// Add all claims pages automatically (sorted by date, newest first)
|
||||
SORTED_CLAIMS.forEach((claim) => {
|
||||
const description = `${claim.claims.length} atomic claims about ${claim.description.toLowerCase()}.`;
|
||||
|
||||
xml += `
|
||||
<item>
|
||||
<title>${escapeXml(claim.title)}</title>
|
||||
<link>${baseUrl}/claims-library/${claim.slug}</link>
|
||||
<guid>${baseUrl}/claims-library/${claim.slug}</guid>
|
||||
<pubDate>${formatRssDate(claim.date)}</pubDate>
|
||||
<description>${escapeXml(description)}</description>
|
||||
<author>kamil@kbanc.com (Kamil Banc)</author>
|
||||
</item>
|
||||
`;
|
||||
});
|
||||
|
||||
xml += ` </channel>
|
||||
</rss>
|
||||
`;
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
// Write to public directory
|
||||
const feedPath = path.join(process.cwd(), 'public', 'feed.xml');
|
||||
const feed = generateRssFeed();
|
||||
fs.writeFileSync(feedPath, feed, 'utf-8');
|
||||
|
||||
console.log(`✅ Generated feed.xml with ${SORTED_CLAIMS.length} claims pages`);
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
// Auto-generate sitemap.xml from centralized claims data
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { ALL_CLAIMS_DATA } from '../src/data/claims';
|
||||
|
||||
const baseUrl = 'https://kbanc.com';
|
||||
|
||||
function formatDate(date: string): string {
|
||||
return date; // Already in YYYY-MM-DD format
|
||||
}
|
||||
|
||||
function generateSitemap(): string {
|
||||
const today = new Date().toISOString().split('T')[0];
|
||||
|
||||
let xml = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>${baseUrl}/</loc>
|
||||
<lastmod>${today}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>${baseUrl}/claims-library</loc>
|
||||
<lastmod>${today}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>${baseUrl}/claims-library/all</loc>
|
||||
<lastmod>${today}</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
`;
|
||||
|
||||
// Add all claims pages automatically
|
||||
ALL_CLAIMS_DATA.forEach((claim) => {
|
||||
xml += ` <url>
|
||||
<loc>${baseUrl}/claims-library/${claim.slug}</loc>
|
||||
<lastmod>${formatDate(claim.date)}</lastmod>
|
||||
<changefreq>monthly</changefreq>
|
||||
<priority>0.8</priority>
|
||||
</url>
|
||||
`;
|
||||
});
|
||||
|
||||
xml += `</urlset>
|
||||
`;
|
||||
|
||||
return xml;
|
||||
}
|
||||
|
||||
// Write to public directory
|
||||
const sitemapPath = path.join(process.cwd(), 'public', 'sitemap.xml');
|
||||
const sitemap = generateSitemap();
|
||||
fs.writeFileSync(sitemapPath, sitemap, 'utf-8');
|
||||
|
||||
console.log(`✅ Generated sitemap.xml with ${ALL_CLAIMS_DATA.length} claims pages`);
|
||||
Loading…
Reference in New Issue