openclaw.ai/src/layouts/Layout.astro
DaXik ec98744e47 feat: add RSS feed integration for blog
Add official @astrojs/rss integration to enable RSS feed subscription:
- Install @astrojs/rss package
- Create RSS endpoint at /rss.xml with blog posts
- Add RSS autodiscovery meta tag in Layout
- Update site URL from clawd.bot to openclaw.ai in config

RSS feed includes post titles, descriptions, dates, authors, and categories.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 15:25:33 +01:00

117 lines
3.5 KiB
Plaintext

---
import Analytics from '@vercel/analytics/astro';
import SpeedInsights from '@vercel/speed-insights/astro';
interface Props {
title: string;
description?: string;
canonicalUrl?: string;
}
const {
title,
description = "OpenClaw — The AI that actually does things. Your personal assistant on any platform.",
canonicalUrl = "https://openclaw.ai/",
} = Astro.props;
---
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content={description} />
<meta name="color-scheme" content="dark" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="canonical" href={canonicalUrl} />
<link rel="alternate" type="application/rss+xml" title="OpenClaw Blog" href="/rss.xml" />
<!-- Open Graph -->
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:type" content="website" />
<meta property="og:url" content={canonicalUrl} />
<meta property="og:image" content="https://openclaw.ai/og-image.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<meta name="twitter:image" content="https://openclaw.ai/og-image.png" />
<!-- Fonts: Clash Display + Satoshi from Fontshare -->
<link rel="preconnect" href="https://api.fontshare.com">
<link rel="preconnect" href="https://cdn.fontshare.com" crossorigin>
<link href="https://api.fontshare.com/v2/css?f[]=clash-display@700,600,500&f[]=satoshi@400,500,700&display=swap" rel="stylesheet">
<title>{title}</title>
<style is:global>
:root {
/* Deep space palette with lobster accents */
--bg-deep: #050810;
--bg-surface: #0a0f1a;
--bg-elevated: #111827;
/* Lobster coral spectrum */
--coral-bright: #ff4d4d;
--coral-mid: #e63946;
--coral-dark: #991b1b;
/* Bioluminescent cyan */
--cyan-bright: #00e5cc;
--cyan-mid: #14b8a6;
--cyan-glow: rgba(0, 229, 204, 0.4);
/* Text */
--text-primary: #f0f4ff;
--text-secondary: #8892b0;
--text-muted: #5a6480;
/* Borders */
--border-subtle: rgba(136, 146, 176, 0.15);
--border-accent: rgba(255, 77, 77, 0.3);
/* Fonts */
--font-display: 'Clash Display', system-ui, sans-serif;
--font-body: 'Satoshi', system-ui, sans-serif;
--font-mono: 'SF Mono', 'Fira Code', 'JetBrains Mono', monospace;
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
}
body {
font-family: var(--font-body);
background: var(--bg-deep);
color: var(--text-primary);
line-height: 1.6;
min-height: 100vh;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
::selection {
background: var(--coral-bright);
color: var(--bg-deep);
}
</style>
</head>
<body>
<slot />
<Analytics />
<SpeedInsights />
</body>
</html>