← back to Dw Yolo Loop
scripts/sitemap-emergence/gen-philipperomano-sitemap.mjs
21 lines
// gen-philipperomano-sitemap (c35) — REPORT-ONLY proof: build a valid sitemap.xml
// for philipperomano.com from its LOCAL data/products.json (8,227 products served
// at /p/:handle, currently orphaned — site has NO sitemap, /sitemap.xml=404).
// Writes a PROOF file to ~/.claude/yolo-queue/ — does NOT deploy or touch the live
// server (wiring a /sitemap.xml route + deploy is Steve-gated). $0, local.
import fs from 'node:fs';
const SRC='/Users/macstudio3/Projects/philipperomano/data/products.json';
const OUT=`${process.env.HOME}/.claude/yolo-queue/philipperomano-sitemap-PROOF.xml`;
const BASE='https://philipperomano.com';
const data=JSON.parse(fs.readFileSync(SRC,'utf8'));
const prods=Array.isArray(data)?data:(data.products||[]);
const handles=[...new Set(prods.map(p=>p.handle).filter(Boolean))];
const today=fs.statSync(SRC).mtime.toISOString().slice(0,10); // use data mtime (no Date.now in scripts)
const urls=[`${BASE}/`,`${BASE}/naturals`,...handles.map(h=>`${BASE}/p/${encodeURIComponent(h)}`)];
let xml='<?xml version="1.0" encoding="UTF-8"?>\n<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n';
for(const u of urls) xml+=` <url><loc>${u}</loc><lastmod>${today}</lastmod></url>\n`;
xml+='</urlset>\n';
fs.writeFileSync(OUT,xml);
console.log(`[sitemap-proof] products=${prods.length} unique_handles=${handles.length} total_urls=${urls.length}`);
console.log(` wrote ${OUT} (${(xml.length/1024).toFixed(0)} KB)`);