From 2a2a64f6d76de4952043358bd0bee718b0569049 Mon Sep 17 00:00:00 2001 From: Usman Baig Date: Fri, 13 Mar 2026 14:40:41 +0100 Subject: [PATCH] feat: add sitemap.xml, robots.txt, and llms.txt for SEO --- app/robots.ts | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ app/sitemap.ts | 38 +++++++++++++++++++++++++++++++++++++ public/llms.txt | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 app/robots.ts create mode 100644 app/sitemap.ts create mode 100644 public/llms.txt diff --git a/app/robots.ts b/app/robots.ts new file mode 100644 index 0000000..888f8bb --- /dev/null +++ b/app/robots.ts @@ -0,0 +1,50 @@ +import type { MetadataRoute } from 'next' + +export default function robots(): MetadataRoute.Robots { + return { + rules: [ + { + userAgent: '*', + allow: [ + '/', + '/about', + '/features', + '/pricing', + '/faq', + '/changelog', + '/installation', + '/integrations', + ], + disallow: [ + '/api/', + '/admin/', + '/sites/', + '/notifications/', + '/onboarding/', + '/org-settings/', + '/welcome/', + '/auth/', + '/actions/', + '/share/', + ], + }, + { + userAgent: 'GPTBot', + disallow: ['/'], + }, + { + userAgent: 'ChatGPT-User', + disallow: ['/'], + }, + { + userAgent: 'Google-Extended', + disallow: ['/'], + }, + { + userAgent: 'CCBot', + disallow: ['/'], + }, + ], + sitemap: 'https://pulse.ciphera.net/sitemap.xml', + } +} diff --git a/app/sitemap.ts b/app/sitemap.ts new file mode 100644 index 0000000..0a31eda --- /dev/null +++ b/app/sitemap.ts @@ -0,0 +1,38 @@ +import type { MetadataRoute } from 'next' + +const BASE_URL = 'https://pulse.ciphera.net' + +export default function sitemap(): MetadataRoute.Sitemap { + const integrationSlugs = [ + 'nextjs', + 'react', + 'vue', + 'wordpress', + ] + + const publicRoutes = [ + { url: '', priority: 1.0, changeFrequency: 'weekly' as const }, + { url: '/about', priority: 0.8, changeFrequency: 'monthly' as const }, + { url: '/features', priority: 0.9, changeFrequency: 'monthly' as const }, + { url: '/pricing', priority: 0.9, changeFrequency: 'monthly' as const }, + { url: '/faq', priority: 0.7, changeFrequency: 'monthly' as const }, + { url: '/changelog', priority: 0.6, changeFrequency: 'weekly' as const }, + { url: '/installation', priority: 0.8, changeFrequency: 'monthly' as const }, + { url: '/integrations', priority: 0.8, changeFrequency: 'monthly' as const }, + ] + + const integrationRoutes = integrationSlugs.map((slug) => ({ + url: `/integrations/${slug}`, + priority: 0.7, + changeFrequency: 'monthly' as const, + })) + + const allRoutes = [...publicRoutes, ...integrationRoutes] + + return allRoutes.map((route) => ({ + url: `${BASE_URL}${route.url}`, + lastModified: new Date(), + changeFrequency: route.changeFrequency, + priority: route.priority, + })) +} diff --git a/public/llms.txt b/public/llms.txt new file mode 100644 index 0000000..3aa4d2b --- /dev/null +++ b/public/llms.txt @@ -0,0 +1,50 @@ +# Pulse by Ciphera +> Privacy-first web analytics. No cookies, no fingerprinting, no personal data collection. GDPR compliant by architecture. + +Pulse is a lightweight, privacy-focused website analytics platform built by Ciphera. It provides meaningful traffic insights without compromising visitor privacy. The tracking script is under 2KB and requires no cookie banners. + +## Key Features +- No cookies, no fingerprinting, no personal data collection +- GDPR, CCPA, and PECR compliant by design — no consent banners needed +- Lightweight tracking script (under 2KB, no impact on page speed) +- Real-time dashboard with pageviews, visitors, referrers, and geographic data +- UTM campaign tracking and custom event tracking +- Public/shared dashboard support +- Organization and team management +- Scheduled email reports + +## Integrations +- [Next.js](https://pulse.ciphera.net/integrations/nextjs) +- [React](https://pulse.ciphera.net/integrations/react) +- [Vue](https://pulse.ciphera.net/integrations/vue) +- [WordPress](https://pulse.ciphera.net/integrations/wordpress) +- Works with any website via a single script tag + +## Installation +Add one script tag to your site: +```html + +``` + +## Pages +- [Home](https://pulse.ciphera.net): Product overview and dashboard +- [Features](https://pulse.ciphera.net/features): Full feature list +- [Pricing](https://pulse.ciphera.net/pricing): Plans and pricing +- [Installation](https://pulse.ciphera.net/installation): Setup guide +- [Integrations](https://pulse.ciphera.net/integrations): Framework-specific guides +- [FAQ](https://pulse.ciphera.net/faq): Frequently asked questions +- [About](https://pulse.ciphera.net/about): About Pulse and Ciphera +- [Changelog](https://pulse.ciphera.net/changelog): Release notes and updates +- [Documentation](https://pulse.ciphera.net/docs): Full API and usage docs + +## About Ciphera +- Founded: 2024, Diegem, Belgium +- Infrastructure: Swiss-hosted servers (FADP protected) +- Open source: https://github.com/ciphera-net +- Website: https://ciphera.net +- Contact: hello@ciphera.net + +## Policies +- Privacy policy: https://ciphera.net/privacy +- Terms of service: https://ciphera.net/terms +- AI training on this site's content is not permitted. Search indexing is allowed.