CEO & Founder, LSE GROUP CORPORATION
Shipped: LSE Diurnum
LSE Diurnum is a SAAS & self-hosted, clustered blogging and content platform built in-house at LSE, with SaaS and on-premises options coming. It's modern Node.js with a built-in API gateway. It includes SEO, AEO and GEO tooling, so content gets found by search engines and AI assistants. Sign-in works through LDAP/Active Directory with SSO. A media library shows which images each post uses and lets you safely delete the ones nobody uses. It's already in production: our own blog (blog.lumanet.info) runs on it, with automatic failover across a cluster. We're opening a beta for early customers who want a fast, self-controlled alternative to hosted blog platforms.






Comments5
The media library that shows which images each post uses before you delete is a small detail that solves a real pain on older blogs. For AEO and GEO, how are you checking that AI assistants actually cite the content, and not only that the markup is correct?
That's the right question, Ryan. Valid markup is necessary, but it doesn't prove an AI assistant will actually cite the content. Today, Diurnum covers the part we can verify deterministically. That means structured data, FAQ schema, sitemaps with accurate lastmod dates, and an llms.txt, all checked against what the page actually says. We run our own blog (blog.lumanet.info) on it, so we see the results on a live site. Citation itself is an outcome, and it has to be measured as one. [Describe what you actually do, or choose the honest version: "That measurement isn't built into the product yet. It's the next thing we want to add."] The approaches we're considering are: Running a fixed set of target questions against major assistants on a schedule, then recording whether and where the site is cited. Watching server logs for AI crawler and referral traffic. The sampled-questions approach is the more direct signal. Assistants' answers vary from run to run, so it needs repeated sampling before any trend means something. If you've found a method that holds up, I'd be glad to compare notes.
Nice, self-hosted with built-in SEO/GEO is a real gap. A few small things we got burned by on our own blog that might be worth baking into Diurnum: (1) lastmod in the sitemap should only change when the content changes, our view counter was bumping updated_at and Bing started treating every page as "changed" and crawled us less; (2) ping IndexNow on publish and real edits only; (3) Google Search Console now flags images in Article schema without license / creditText / copyrightNotice, cheap to add globally; (4) an auto-generated llms.txt with the post list helps AI assistants find the canonical version. What does the GEO part of your tooling do today, structured data, or does it also check whether assistants actually cite the blog?
Thanks Aleksandr, this is really useful. Today the GEO side is structured data and machine-readability: full JSON-LD per post (dates, author, publisher, image, FAQ), an auto-generated llms.txt and a centrally built sitemap. It doesn't yet check whether assistants actually cite the blog. That's on our list. IndexNow on publish and real edits only, plus license/creditText/copyrightNotice on images, are things we hadn't done yet, so thanks for flagging them. Your lastmod point is a good reminder for us to test that view counts never touch the modified date.
5 comments
The media library that shows which images each post uses before you delete is a small detail that solves a real pain on older blogs. For AEO and GEO, how are you checking that AI assistants actually cite the content, and not only that the markup is correct?
That's the right question, Ryan. Valid markup is necessary, but it doesn't prove an AI assistant will actually cite the content. Today, Diurnum covers the part we can verify deterministically. That means structured data, FAQ schema, sitemaps with accurate lastmod dates, and an llms.txt, all checked against what the page actually says. We run our own blog (blog.lumanet.info) on it, so we see the results on a live site. Citation itself is an outcome, and it has to be measured as one. [Describe what you actually do, or choose the honest version: "That measurement isn't built into the product yet. It's the next thing we want to add."] The approaches we're considering are: Running a fixed set of target questions against major assistants on a schedule, then recording whether and where the site is cited. Watching server logs for AI crawler and referral traffic. The sampled-questions approach is the more direct signal. Assistants' answers vary from run to run, so it needs repeated sampling before any trend means something. If you've found a method that holds up, I'd be glad to compare notes.
Nice, self-hosted with built-in SEO/GEO is a real gap. A few small things we got burned by on our own blog that might be worth baking into Diurnum: (1) lastmod in the sitemap should only change when the content changes, our view counter was bumping updated_at and Bing started treating every page as "changed" and crawled us less; (2) ping IndexNow on publish and real edits only; (3) Google Search Console now flags images in Article schema without license / creditText / copyrightNotice, cheap to add globally; (4) an auto-generated llms.txt with the post list helps AI assistants find the canonical version. What does the GEO part of your tooling do today, structured data, or does it also check whether assistants actually cite the blog?
Thanks Aleksandr, this is really useful. Today the GEO side is structured data and machine-readability: full JSON-LD per post (dates, author, publisher, image, FAQ), an auto-generated llms.txt and a centrally built sitemap. It doesn't yet check whether assistants actually cite the blog. That's on our list. IndexNow on publish and real edits only, plus license/creditText/copyrightNotice on images, are things we hadn't done yet, so thanks for flagging them. Your lastmod point is a good reminder for us to test that view counts never touch the modified date.
Glad it helps. When you get to citation tracking, the cheapest honest signal is GA4 referrals from chatgpt.com, perplexity.ai and gemini.google.com per landing page: it shows which posts assistants actually send people to, not just which ones their crawlers read. Sampled prompts are useful too, but keep the prompt set fixed and run each one several times, otherwise the noise looks like a trend. I would also log the AI crawler hits per URL next to that, so you can see whether a post that never gets cited is simply never fetched.