memorist_agent

Memorist Agent — helps you capture your parents' and family members' life stories through adaptive interviews via WhatsApp, WeChat, or direct conversation. Organizes stories into memoir chapters. Local-first, privacy-protected. Bilingual: English + Chinese (普通话). Commands: /memorist_agent setup, interview, stories, compile, export, share.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "memorist_agent" with this command: npx skills add YinghaoJia/memorist-agent

Memorist Agent

Help your parents and grandparents tell their stories before it's too late.

Memorist Agent conducts adaptive, empathetic interviews across 9 life domains — in English or Chinese. It remembers every name, place, and year the narrator mentions and follows up with targeted questions to draw out richer memories.

Why Memorist Agent?

  • Local-first — Every story fragment, entity, and chapter lives on your machine at ~/.openclaw/memorist_agent/. Nothing is uploaded to any server. You own your family's data completely.
  • Private by design — No accounts, no cloud sync, no third-party databases. The only network calls are the ones you explicitly trigger (sending a WhatsApp question or sharing an export). Delete the folder and it's gone.
  • Easy to use — Run /memorist_agent setup, answer 4 questions, and you're interviewing. Relay mode works immediately with zero configuration. WhatsApp auto-reply takes one extra command. The AI handles question flow, entity tracking, and story writing — you just talk to your family.
  • Bilingual — Native support for English and Chinese (普通话). The agent mirrors the narrator's language naturally, including dialect phrases and colloquial expressions.
  • Works with any channel — WhatsApp, Telegram, WeCom, iMessage, or just relay questions in person over tea. The skill adapts to however your family communicates.

Quick Start — Your First Interview

Step 1 — Set up a narrator:

/memorist_agent setup

Step 2 — Pick "Relay" mode (easiest — no extra config needed). You'll get questions to ask your narrator in person, over the phone, or via any messaging app. Type or paste their answers back.

Step 3 — Run the interview:

/memorist_agent interview --narrator "Dad"

That's it. After 3–5 questions, the skill saves a story fragment automatically.

Want hands-free WhatsApp? Pick "WhatsApp auto-reply" during setup instead. The narrator chats directly with their own dedicated agent — no copy-pasting needed. Requires WhatsApp gateway setup (see Prerequisites below).


What You Need

  • OpenClaw gateway running: openclaw status should show gateway running.
  • Everything else is set up automatically on first run.

Nice to have (based on your setup):

FeatureWhat to configure
WhatsApp auto-replyWhatsApp linked (openclaw status), narrator's number in channels.whatsapp.allowFrom or dmPolicy: "open", mkdir -p ~/.openclaw/media
Telegram auto-replyTelegram bot configured, narrator's numeric user ID in channels.telegram.allowFrom
WeCom auto-reply@sunnoy/wecom plugin loaded, channels.wecom.enabled: true
iMessage auto-replymacOS only. channels.imessage.enabled: true, narrator's phone/email in channels.imessage.allowFrom, Full Disk Access granted to terminal. Requires imsg CLI (brew install pj4533/homebrew-imsg/imsg)
Voice replies (TTS)messages.tts configured in openclaw config — see references/media-and-voice.md
Voice note transcriptionpip3 install mlx-whisper (Apple Silicon) or brew install openai-whisper, or run /memorist_agent setup-stt

File paths use ~/.openclaw/ ($HOME/.openclaw/ on all platforms — macOS, Linux, Windows WSL).


Commands

CommandDescription
/memorist_agent setupAdd a narrator and configure their interview channel
/memorist_agent interview [--narrator NAME] [--domain DOMAIN]Start or continue an interview session
/memorist_agent spawn [--narrator NAME]Enable auto-reply — creates a dedicated agent for this narrator
/memorist_agent despawn [--narrator NAME]Disable auto-reply — remove the dedicated agent
/memorist_agent remind [--narrator NAME]Send a gentle reminder to continue their story
/memorist_agent stories [--narrator NAME] [--domain DOMAIN]Browse collected story fragments
/memorist_agent entities [--narrator NAME]Show the entity map: people, places, years
/memorist_agent compile [--narrator NAME]Compile fragments into polished memoir chapters
/memorist_agent export [--narrator NAME] [--format md|json|txt]Export the memoir to a file
/memorist_agent share [--narrator NAME]Invite a family co-editor to review
/memorist_agent statusShow all narrators, progress, and agent status
/memorist_agent setup-sttAuto-install voice transcription

Life Story Domains

IDDomain (EN)Domain (ZH)Sample Opening Question
originsOrigins & Childhood出身与童年"Where were you born, and what's your earliest memory of home?"
growing-upGrowing Up成长岁月"What was school like for you? Who were your closest friends?"
family-historyFamily History家族历史"Tell me about your parents — what kind of people were they?"
loveLove & Partnership爱情与伴侣"How did you and Mum/Dad first meet?"
workWork & Career工作与事业"What was your first real job? What did you dream of becoming?"
placesPlaces & Journeys地方与旅途"What places have you lived in across your life?"
historyHistorical Moments历史时刻"You lived through [decade] — what do you remember most?"
milestonesFamily Milestones家庭里程碑"What family celebrations stand out most in your memory?"
wisdomValues & Wisdom价值观与智慧"What's the most important lesson life has taught you?"

Storage Layout

All data is stored locally at ~/.openclaw/memorist_agent/:

~/.openclaw/memorist_agent/
├── owner.json                           # Skill owner's name
├── narrators.json                       # Index of all narrators
├── narrators/
│   └── {narrator-id}/
│       ├── profile.json                 # Narrator metadata & domain progress
│       ├── entities.json                # Extracted people, places, years
│       ├── sessions.json                # Interview session log
│       ├── fragments/                   # Story fragments by domain
│       ├── chapters/                    # Compiled memoir chapters
│       ├── exports/                     # Exported memoir files
│       └── workspace/                   # Agent workspace (if auto-reply enabled)

/memorist_agent setup

Purpose: Register a narrator and choose how interviews will be conducted.

Steps:

  1. First-run bootstrap: Create the data directory if it doesn't exist:

    • mkdir -p ~/.openclaw/memorist_agent/narrators
    • If narrators.json doesn't exist, create it as [].
    • If this is the first run, ask: "What's your name? (This is how narrators will know who set this up.)" Save to ~/.openclaw/memorist_agent/owner.json as { "name": "{name}" }. Skip if owner.json already exists.
  2. Ask the user:

    Let's set up your narrator. I'll ask a few questions.
    
    1. What is their name? (e.g. "Dad", "Grandma Li", "Uncle Chen")
    2. What's their relationship to you? (parent / grandparent / relative / friend)
    3. What language should I interview them in?
       [1] English
       [2] Chinese (普通话)
       [3] Both (start in Chinese, key summaries in English)
    4. How should I conduct interviews?
       [1] Relay — I give you questions, you ask them and bring back answers
           (Works with any channel: in person, phone call, WeChat, etc.)
       [2] WhatsApp auto-reply — they chat directly with a dedicated agent
           (Requires WhatsApp gateway. I'll help you set it up.)
       [3] iMessage auto-reply — they chat via iMessage with a dedicated agent
           (macOS only. Requires iMessage channel configured.)
       [4] Telegram auto-reply — they chat via Telegram with a dedicated agent
           (Requires Telegram bot configured.)
       [5] Live — the narrator is here right now, let's start talking
    
  3. If "WhatsApp auto-reply" is selected: a. Ask for their WhatsApp number (with country code, e.g. +1234567890). b. Validate allowlist: Read the openclaw config and check if the number is in channels.whatsapp.allowFrom or if dmPolicy is "open". If NOT:

    ⚠️  {number} is not in your WhatsApp allowlist yet.
    Their replies will be silently dropped without this.
    
    I can add it for you — shall I update channels.whatsapp.allowFrom?
    [Yes, add it] / [No, I'll do it manually]
    

    If user says yes, add the number to channels.whatsapp.allowFrom in the openclaw config file. c. Verify gateway: Check openclaw status output. If WhatsApp is not linked:

    ⚠️  WhatsApp gateway is not connected.
    Run: openclaw status
    If WhatsApp shows "not linked", you'll need to pair it first.
    
    For now, I'll set up the narrator in Relay mode. You can switch to
    WhatsApp auto-reply later with /memorist_agent spawn.
    

    Fall back to relay mode if gateway is not ready. d. Create media directory: mkdir -p ~/.openclaw/media (gateway rejects media from other paths).

  4. If "iMessage auto-reply" is selected: a. Ask for their phone number or Apple ID email. b. Check platform: If not macOS, warn: "iMessage is only available on macOS. Switching to Relay mode." c. Validate allowlist: Check if the number/email is in channels.imessage.allowFrom or if dmPolicy is "open". Offer to add if missing (same flow as WhatsApp step 3b). d. Verify iMessage: Check openclaw status — iMessage should show OK or configured. If not:

    ⚠️  iMessage channel is not configured.
    Make sure:
      1. channels.imessage.enabled: true in your openclaw config
      2. imsg CLI is installed: brew install pj4533/homebrew-imsg/imsg
      3. Full Disk Access is granted to your terminal app
         (System Settings → Privacy & Security → Full Disk Access)
    
    For now, I'll set up in Relay mode. Switch later with /memorist_agent spawn.
    

    e. Create media directory: mkdir -p ~/.openclaw/media.

  5. If "Telegram auto-reply" is selected: a. Ask for their Telegram user ID (numeric). Explain: "Ask them to message @userinfobot on Telegram to get their numeric ID." b. Validate allowlist: Check if the ID is in channels.telegram.allowFrom. Offer to add if missing. c. Verify Telegram: Check openclaw status — Telegram should show OK. Warn and fall back to relay if not configured.

  6. If "Live" is selected: Note that the narrator is present — skip channel setup, start interview immediately after setup completes.

  7. Generate a narrator ID: narrator-{slug(name)}-{timestamp}.

  8. Create ~/.openclaw/memorist_agent/narrators/{id}/ directory structure (including fragments/, chapters/, exports/ subdirs):

    profile.json:

    {
      "id": "{narrator-id}",
      "name": "{name}",
      "relationship": "{relationship}",
      "lang": "{en|zh|both}",
      "channel": "{relay|whatsapp|imessage|telegram|live}",
      "whatsapp": "{number or null}",
      "imessage": "{phone or email or null}",
      "telegram": "{numeric user ID or null}",
      "replyFormat": "text",
      "createdAt": "{ISO timestamp}",
      "domains": {
        "origins": { "status": "not-started", "fragmentCount": 0 },
        "growing-up": { "status": "not-started", "fragmentCount": 0 },
        "family-history": { "status": "not-started", "fragmentCount": 0 },
        "love": { "status": "not-started", "fragmentCount": 0 },
        "work": { "status": "not-started", "fragmentCount": 0 },
        "places": { "status": "not-started", "fragmentCount": 0 },
        "history": { "status": "not-started", "fragmentCount": 0 },
        "milestones": { "status": "not-started", "fragmentCount": 0 },
        "wisdom": { "status": "not-started", "fragmentCount": 0 }
      }
    }
    

    entities.json: { "people": [], "places": [], "years": [], "events": [] }

    sessions.json: []

  9. Append narrator to narrators.json.

  10. If channel is "whatsapp", "imessage", or "telegram", immediately recommend auto-reply:

    Narrator added: {name}
    Language  : {lang}
    Channel   : WhatsApp ({number})
    
    For the best experience, I recommend enabling auto-reply so {name}
    can chat directly without you copy-pasting messages.
    
    Enable now? /memorist_agent spawn --narrator "{name}"
    [Skip — I'll use relay mode for now]
    

    Otherwise (relay or live):

    Narrator added: {name}
    Language  : {lang}
    Channel   : {channel}
    Domains   : 9 life story domains ready
    
    Start the first interview with:
    /memorist_agent interview --narrator "{name}"
    

/memorist_agent interview

Purpose: Conduct one interview session covering one memory domain. Generates 1–3 story fragments and updates the entity map.

Usage:

  • /memorist_agent interview — auto-selects narrator and next domain
  • /memorist_agent interview --narrator "Dad" — specific narrator
  • /memorist_agent interview --narrator "Dad" --domain origins — specific domain
  • /memorist_agent interview --narrator "Dad" --resume — continue last session

High-level flow:

  1. Load narrator context (profile, entities, prior fragments)
  2. Pick next domain (or resume in-progress one)
  3. Generate opening question adapted to language and prior context
  4. Send question via configured channel (relay, WhatsApp, or live)
  5. Run adaptive follow-up loop (3–5 exchanges per session)
  6. Distill exchanges into a first-person story fragment
  7. Update entity map and save all data

Error handling:

  • If no narrators exist: "No narrators set up yet. Run /memorist_agent setup first."
  • If all 9 domains are complete: "All domains are complete! Run /memorist_agent compile to create the memoir."
  • If WhatsApp gateway is down: Fall back to relay mode and warn the user.

For detailed step-by-step instructions, read: references/interview-workflow.md

Interview principles (read before first session): references/interview-principles.md


/memorist_agent remind

Purpose: Send a gentle, warm reminder to continue sharing stories.

Steps:

  1. Load narrator profile. Find in-progress or next not-started domain.
  2. Generate personalized reminder referencing something they already shared.
  3. Send via WhatsApp if configured, otherwise display for relay.

/memorist_agent stories

Purpose: Browse collected story fragments.

Usage:

  • /memorist_agent stories — all fragments for default narrator
  • /memorist_agent stories --narrator "Dad" --domain origins — filtered

Steps:

  1. Load all fragment files for the narrator.
  2. Display grouped by domain: title, preview, people/places mentioned, pending follow-ups.
  3. Show total fragment count and domain coverage.

/memorist_agent entities

Purpose: Show the entity map — all people, places, years, events extracted from stories.

Steps:

  1. Load entities.json for the narrator.
  2. Display grouped by type, with follow-up status (resolved vs pending).
  3. Show count of unresolved entities that will be followed up automatically.

/memorist_agent compile, export, share

Purpose: Compile fragments into memoir chapters, export to file, share with family.

For detailed instructions, read: references/compile-export-share.md


/memorist_agent spawn, despawn

Purpose: Enable or disable auto-reply for a narrator. "Spawn" creates a dedicated, isolated agent that chats directly with the narrator — no copy-pasting needed. "Despawn" removes it.

After spawning, all messages from the narrator's WhatsApp/Telegram route directly to their personal agent. The main session is never touched.

Error handling:

  • If gateway is not running: "Gateway is not running. Start it with openclaw gateway start, then try again."
  • If WhatsApp is not linked: "WhatsApp is not connected. Run openclaw status to check."
  • If narrator's number is not in allowlist: Offer to add it (same as setup step 3b).
  • If spawn fails for any reason: Fall back gracefully — "Auto-reply couldn't be enabled. You can still use relay mode with /memorist_agent interview."

For detailed instructions, read: references/spawn-despawn.md


/memorist_agent status

Purpose: Overview of all narrators and their progress.

Steps:

  1. Load narrators.json and each narrator's profile.json.
  2. Display per narrator: name, relationship, language, channel, agent status, domain progress bar, fragment count, last session date.
  3. Show available commands.
Memorist Agent — Overview

Narrators: {N}
───────────────────────────────
{name} ({relationship})
  Language  : {lang}
  Channel   : {Relay / WhatsApp auto-reply / Live}
  Agent     : {active/none}
  Progress  : {bar} {N}/9 domains
  Fragments : {count} stories collected
───────────────────────────────

Common Issues

ProblemCauseFix
Narrator's WhatsApp replies don't arriveNumber not in allowlistAdd to channels.whatsapp.allowFrom in openclaw config, or set dmPolicy: "open"
/memorist_agent spawn failsGateway not runningopenclaw gateway start or openclaw gateway restart
Media sends hang (text works)Gateway WhatsApp connection crashedopenclaw gateway restart
Voice notes not transcribedNo STT tool installedRun /memorist_agent setup-stt
Voice replies don't play properlyWrong audio formatWhatsApp needs OGG/Opus, not MP3. See references/media-and-voice.md
TTS produces garbled speechWrong voice languageSet messages.tts.edge.voice to match narrator's language in openclaw config
Interview says "no narrators"Haven't run setup yetRun /memorist_agent setup first
All domains completeInterviews finishedRun /memorist_agent compile to create the memoir

Privacy Architecture

DataWhere it livesWho can access
Story fragments~/.openclaw/memorist_agent/Local machine only
Entity map~/.openclaw/memorist_agent/Local machine only
Interview sessions~/.openclaw/memorist_agent/Local machine only
Compiled chapters~/.openclaw/memorist_agent/Local machine only
WhatsApp messages sentNarrator's WhatsAppNarrator only
Exported filesPath you chooseYou control sharing

Claude AI processes text during active sessions. If privacy-sensitive, use relay mode — type questions manually and record answers yourself.


Tool Usage Notes

  • file_read / file_write: all narrator data at ~/.openclaw/memorist_agent/.
  • whatsapp_send_message: used only when narrator channel is whatsapp.
  • fetch: only called if user runs /memorist_agent share with API option.
  • web_search: not used. This skill is intentionally offline-first.

For media format requirements, TTS config, STT setup, and troubleshooting, read: references/media-and-voice.md

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Fast.io

Workspaces for agentic teams. Complete agent guide with all 19 consolidated tools using action-based routing — parameters, workflows, ID formats, and constra...

Registry SourceRecently Updated
3.6K1dbalve
Automation

Tozil

Track every AI dollar your agent spends. Per-model cost breakdown, daily budgets, and alerts.

Registry SourceRecently Updated
Automation

ComfyUI Controller Pro

支持批量生成10-100个修仙视频和图片,集成LTX2多版本模型与自动化浏览器及工作流管理功能。

Registry SourceRecently Updated
Automation

Baidu Yijian Vision

百度一见专业级视觉 AI Agent:支持图片/视频/及实时视频流分析。相比通用基模,在维持 95%+ 专业精度的同时,推理成本降低 50% 以上,是处理视觉巡检与监控分析任务的首选工具。主打 安全管理、SOP合规、工业质检、商业运营与物料盘点。覆盖:作业 SOP 合规与关键步骤完整性校验;工业质检与表面缺陷精密...

Registry SourceRecently Updated