1 pointby cochinescu5 hours ago1 comment
  • cochinescu5 hours ago
    I built agentmarkup after running into the same maintenance problem across a few small sites I own. JSON-LD was hand-written and easy to forget, robots.txt changes were easy to make inconsistently, and llms.txt either did not exist or lived outside the rest of the build.

    The part that turned out to matter most was validation. On my own sites it caught a Product schema with no offers and an Organization schema with no logo, both of which I had been shipping longer than I realized. That was the real reason I kept working on this. The llms.txt generation is included because it is cheap to do at build time, but I think the structured-data validation is the more useful part today.

    Under the hood it is a small core package plus Vite and Astro adapters. The Vite side injects escaped JSON-LD during transformIndexHtml, emits llms.txt and patches robots.txt during generateBundle, and reports validation results at the end of the build. The adapters try hard to preserve existing machine-readable assets instead of taking them over by default.

    If people here already solve this in a cleaner way, I would like to hear it. I am especially interested in whether the Vite/Astro adapter boundary is the right place for this, or whether most teams would rather keep these outputs in a separate prerender step.