Type /clawpage in any Openclaw chat - conversation becomes a polished archive page at your own URL.
π Deploys to GitHub Pages, Vercel, Netlify, or Cloudflare Pages.
EspaΓ±ol Β· FranΓ§ais Β· δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
β¨ No manual exports, no copy-pasting, sensitive data auto-redacted
AI chats are valuable, but they disappear. Clawpage turns them into publishable content you can save and share.
Or see a site we use it ourselves: vibe.yelo.cc
- β‘ Based on Skills β type
/clawpagein any chat to start sharing - π Any session β not just the current chat, but also any historical session by ID or keyword
- π No server to manage β pure static, deploys to GitHub Pages, Vercel, Netlify, or Cloudflare Pages for free
- π Review before you publish β each export opens a PR so you can review content before merging
- π Share privately β direct link works, but chats stay off the public index by default
- π‘οΈ Safe to share β AI-assisted redaction replaces sensitive data with
[REDACTED]before export - π§ Full fidelity β tool calls and thinking traces are preserved in the timeline, not stripped out
Copy and Paste into your agent chat:
Read https://clawhub.ai/imyelo/clawpage and install the clawpage skill,
then run first-time setup for me.
The agent will scaffold a private GitHub repo, configure clawpage.toml with your Pages URL, push the initial commit, enable GitHub Actions as the Pages source, and register the project so /clawpage works immediately. For the full step-by-step, see skills/clawpage/references/setup.md.
Once setup is complete, use the /clawpage skill command in any Openclaw chat to export it:
/clawpage
The agent will:
- π Locate the session to export β defaults to the current chat; you can also pick any previous session by ID or keyword
- β
Ask you to confirm the title, description, and visibility (
public/private) - π Redact any sensitive data you flag
- π Write the YAML file to your working repo on a new branch (
chat/{YYYYMMDD}-{slug}) - π Prompt you to open a Pull Request β merging to
maintriggers the GitHub Pages build
After the PR merges, your chat is live at https://your-domain/chats/{slug}.
β οΈ Before merging: AI-powered redaction is not 100% reliable. Always open the generated YAML in the PR and manually replace any missed sensitive content with[REDACTED]. See How to protect sensitive info for details.
π‘ Tip: Set
visibility: private(the default) to keep a chat accessible via direct link only, without it appearing on the public index page.
/clawpage
β
βΌ
π€ OpenClaw Skill
β 1. π Locate session (current or any historical) β confirm
β 2. π¬ Extract message history
β 3. π Populate metadata (title, participants, description)
β 4. π Redact sensitive data
β 5. π Write YAML to your data repo
β 6. π Push to new branch β create PR
βΌ
π GitHub Pages
βββ https://your-domain/chats/{slug}
Chats are pushed to a new branch (chat/{slug}) instead of main, with guidance to create a PR for review before merging.
This repo is a public template. Your actual chat data lives in a separate private working repo β this keeps the template clean and forkable without data contamination.
| Repo | Visibility | Purpose |
|---|---|---|
clawpage |
Public | Template, packages, and Skill |
your-clawpage |
Private | Your actual chat data |
The web package is configured via clawpage.toml in your working repo root.
| Key | Type | Description | Example |
|---|---|---|---|
site |
string (URL) | Full URL of your deployed site | "https://you.github.io" |
base |
string | Base path when the site is not served from the domain root | "/my-repo" |
public_dir |
string | Static assets directory (relative to config file) | "public" |
out_dir |
string | Build output directory (relative to config file) | "dist" |
chats_dir |
string | Custom chats directory path (absolute or relative to config file) | "../my-chats" |
template.options.title |
string | Homepage title | "clawpage" |
template.options.subtitle |
string | Homepage subtitle | "// conversation archive" |
template.options.description |
string | Meta description for the site | "My conversation archive" |
template.options.footer |
string | Footer text (Markdown supported) | `` |
template.options.analytics.google_analytics_id |
string | Google Analytics 4 Measurement ID | "G-XXXXXXXXXX" |
template.options.promo.enabled |
boolean | Show a promo block on the homepage to help spread clawpage | false |
Example clawpage.toml (GitHub Pages project site):
site = "https://your-username.github.io"
base = "/your-repo-name"
[template.options]
title = "clawpage"
subtitle = "// conversation archive"
footer = "powered by [@imyelo](https://github.com/imyelo)"
[template.options.promo]
enabled = trueWhen deploying to Netlify, Vercel, Cloudflare Pages, or a custom domain, set site to your full URL and omit base.
The scaffold includes configuration files for
- β GitHub Pages
- β Netlify
- β Vercel
- β Cloudflare Pages.
For step-by-step instructions, custom domain setup, and free tier limits for each platform, see docs/guide/en/deployment.md.
Chat files are stored as YAML under chats/ in your working repo. Generated by the CLI from Openclaw session JSONL files ({id}.jsonl).
File naming: YYYYMMDD-{slug}.yaml
Top-level metadata fields:
| Field | Required | Description | Example |
|---|---|---|---|
title |
Yes | Session title / export name | My Session |
date |
Yes | Session date (YYYY-MM-DD) | 2026-02-15 |
sessionId |
Yes | Unique session ID | cf1f8dbe-2a12-47cf-8221-9fcbf0c47466 |
channel |
No | Channel/platform name | discord, telegram |
model |
No | Model used in session | MiniMax-M2.5 |
totalMessages |
No | Total message count | 42 |
totalTokens |
No | Total tokens consumed | 12345 |
tags |
No | Tag array for categorization | [coding, debug] |
visibility |
No | Index visibility | private (default) |
description |
No | Brief description for index | Debugging a tricky async issue |
defaultShowProcess |
No | Show process (thinking, tool calls) by default | false |
participants |
No | Maps participant names to { role: "human" | "agent" } |
see example |
Visibility:
publicβ appears on the homepage indexprivate(default) β accessible via direct URL only, hidden from the index
The timeline: key holds an ordered list of message and event objects. See docs/clawpage-data-format.md for the full schema.
Example file:
title: Debugging Async Issue
date: 2026-02-15
sessionId: cf1f8dbe-2a12-47cf-8221-9fcbf0c47466
model: MiniMax-M2.5
totalMessages: 4
totalTokens: 12345
visibility: public
defaultShowProcess: false
participants:
Alice:
role: human
Claude:
role: agent
timeline:
- type: message
role: human
speaker: Alice
timestamp: "2026-02-15T06:13:50.514Z"
content: |
Message content...
- type: message
role: agent
speaker: Claude
timestamp: "2026-02-15T06:14:05.123Z"
model: claude-sonnet-4-6
content: |
Response content...Parses OpenClaw sessions/{uuid}.jsonl raw JSONL files and generates YAML output.
npx clawpage parse <sessions/{uuid}.jsonl> [-o output.yaml]Astro-based static site generator. Renders chat YAML files into shareable pages.
npx clawpage-web dev # local dev server
npx clawpage-web build # build static site
npx clawpage-web preview # preview built site locallyScaffolding tool to initialize a new working repo from this template.
The generated project includes deployment configuration for GitHub Pages, Netlify, Vercel, and Cloudflare Pages β pick whichever platform you use.
npx create-clawpage <project-name># Install dependencies
bun install
# Start demo dev server
bun run dev
# Build demo static site
bun run build
# Deploy demo to GitHub Pages
bun run deployThis project uses changesets for versioning and changelog management.
# Create a new changeset
bun run changeset
# Check changeset status
bunx changeset status
# Preview version bumps (dry run)
bunx changeset version --dry-run
# Apply version bumps and update changelogs
bun run version- Create a changeset before merging a PR:
bun run changeset - Select affected packages and bump type (patch/minor/major)
- Write a description of the changes
- Commit the changeset file with your PR
- After merging, the changesets action creates a "Version Packages" PR
- Merging the version PR triggers npm publish
packages/
cli/ - clawpage CLI (session log parser + YAML generator)
web/ - clawpage-web (Astro static site)
src/
components/ - MessageHeader.astro, ChatMessage.astro, CollapsibleMessage.tsx, Footer.astro, MemoryBackground.astro
lib/ - chats.ts, config.ts, config-schema.ts
pages/ - index.astro, chats/[slug].astro
create/ - create-clawpage scaffolding tool
chats/ - Demo YAML chat files
docs/ - Project documentation
skills/ - OpenClaw Skill definitions
Sites built with this tool:
- Yelo
- Your site here β Add yours by submitting a PR
- See docs/guide/en/deployment.md for deployment instructions, custom domain setup, and platform free tier limits.
- See docs/clawpage-data-format.md for complete frontmatter fields and content format.
Apache-2.0 Β© yelo, 2026 - present
