openclaw transcripts
Inspector and export command for durable meeting transcripts. Google Meet,
Microsoft Teams, and Zoom browser participants capture notes automatically;
the transcripts agent tool also supports provider capture and manual import.
Canonical transcript state lives in the shared SQLite database at
$OPENCLAW_STATE_DIR/state/openclaw.sqlite. show and path explicitly
materialize user-facing artifacts under the state directory:
~/.openclaw; override with OPENCLAW_STATE_DIR. The date directory comes
from the session start time; the session directory is a filesystem-safe slug
derived from the session id.
Commands
<session> accepts either a bare session id or a date-qualified selector
(YYYY-MM-DD/<session>). Use the qualified form when the same session id
occurs on more than one day, for example openclaw transcripts show 2026-05-22/standup. Default session ids include a timestamp and random
suffix; give a session a fixed id only when that id is unique within the day.
Output
list prints one tab-separated line per session: selector, start time, title,
summary path.
show or path.
list --json returns objects with sessionId, selector, date, title,
startedAt, stoppedAt, source, path, summaryPath, hasSummary.
Stored meeting source URLs contain only the origin and path; query strings,
fragments, and embedded credentials are removed before persistence.
show --json returns the stored session metadata, selector, session
directory, summary path, and summary Markdown text.
path --json returns the selected path and whether that artifact could be
materialized. Metadata and transcript exports always exist for a stored
session; a summary path reports exists: false until the session has a summary.
Many sessions per day
Sessions group by date, then by session id. Ten meetings on one day become ten sibling folders:standup only
when it will not repeat on the same date.
Missing summaries
Live sessions store and materializesummary.md when the session stops;
imported transcripts do so immediately after import. A session can appear in
list without a summary while capture is still active, if a provider failed
during stop, or if metadata was stored before any utterances arrived.
Use path <session> --transcript to inspect the raw append-only transcript,
or run the transcripts tool’s summarize action to regenerate the Markdown
summary.
Upgrading the legacy file store
OpenClaw releases that predate the SQLite store wrote canonical runtime state directly beneath$OPENCLAW_STATE_DIR/transcripts/. Run:
transcripts.migrated-* archive. Runtime commands do not fall back
to the legacy files. Keep the archive until you have verified the imported
sessions and any exports you rely on.
Configuration
Meeting transcript capture is enabled by default. To opt out globally:enabled(defaulttrue): enable automatic meeting notes, the transcripts tool, and configured auto-start sources. Set it tofalsewhen meeting notes should not be persisted on the host. An explicitly requested meetingtranscribemode keeps its existing bounded live-caption tail, but does not write durable rows while this setting is false. Configure auto-start sources withtranscripts.autoStart. Each entry is enabled by being present; omit an entry to disable that source.discord-voiceis the bundled auto-start-capable source and requiresguildIdandchannelId:
google-meet, teams, and zoom. Their aliases
are googlemeet/meet, teams-meetings/microsoft-teams/msteams, and
zoom-meetings, respectively. Meeting providers attach to an already-active
meeting bot session; normal meeting joins do not need an autoStart entry.