MindLog is OpenClaw's memory. It stores journal entries and returns them on request. OpenClaw uses it to write the user's daily journal entries and retrieve them for weekly analysis. MindLog has no intelligence — it is purely a data store. All scheduling, prompting, analysis, and delivery is OpenClaw's job.
Collect these during onboarding. All three are required before any skill can run.
VariableHow to ObtainMINDLOG_API_KEYGenerated on signup at mindlogger.appTELEGRAM_BOT_TOKENCreate a bot via BotFather at t.me/botfatherTELEGRAM_CHAT_IDMessage @userinfobot on Telegram — it replies with your ID
When this skill is first registered, immediately and automatically send the following message to the user via Telegram — do not wait to be asked, do not confirm registration first, just send it:
Send: "To set up MindLog I need three things — reply with them one per line:
Wait for reply and parse all three values.
Store as MINDLOG_API_KEY, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID in config.
If any value is missing or unclear, re-prompt specifically: "Still need your [missing var] — reply with just that value."
Do not proceed until all three are stored.
After storing all config, verify everything works before scheduling:
Call GET /api/ping with the API key. Expected: { "success": true, "message": "API key valid" }.
Send a test Telegram message: text
POST https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage
{ "chat_id": "${TELEGRAM_CHAT_ID}", "text": "MindLog test: Setup complete." }
Only after both pass, send this confirmation via Telegram: "MindLog is connected. Here's what happens next:
Every day at 2pm ET I'll send you a journal prompt. Just reply to it in a few sentences — no right or wrong answer.
The real value arrives every Sunday at 2pm. That's when I pull everything you've written that week, find the patterns in how you think, and send you a full report with specific things to work on. This runs every Sunday regardless of when you signed up — even if you only have a few entries.
The more evenings you reply to, the sharper the Sunday report gets. See you tonight."
MindLog relies on timed triggers for daily prompts and weekly reports.
Check cron access: run openclaw cron list to verify.
If accessible, add both jobs: text
openclaw cron add --name mindlog-daily --schedule "0 14 * * *" --command "openclaw exec mindlog-daily-prompt"
openclaw cron add --name mindlog-weekly --schedule "0 14 * * 0" --command "openclaw exec mindlog-weekly-report"
If cron is blocked (permission error or not available):
Confirm scheduling method to user before proceeding.
This skill gives OpenClaw three capabilities:
Name: mindlog-daily-prompt
Trigger: Cron
Schedule: 0 14 * * * (2:00pm ET daily)
text
POST ${MINDLOG_BASE_URL}/api/prompt/trigger
Headers:
x-api-key: ${MINDLOG_API_KEY}
Content-Type: application/json
Expected response:
json
{ "success": true, "prompt": "What was my mind saying most today?" }
text
POST https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage
Content-Type: application/json
{
"chat_id": "${TELEGRAM_CHAT_ID}",
"text": "MindLog\n\n{prompt}\n\nJust reply to this message."
}
Name: mindlog-save-entry Trigger: Telegram message received (user replies to the daily prompt)
text
POST ${MINDLOG_BASE_URL}/api/entries
Headers:
x-api-key: ${MINDLOG_API_KEY}
Content-Type: application/json
{
"prompt": "{the prompt that was sent earlier today}",
"content": "{user's telegram reply}"
}
Expected response:
json
{ "success": true, "entryId": "abc123" }
text
POST https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage
{
"chat_id": "${TELEGRAM_CHAT_ID}",
"text": "Logged. See you tomorrow."
}
Keep the confirmation short. No praise, no fluff.
Name: mindlog-weekly-report
Trigger: Cron
Schedule: 0 14 * * 0 (2pm every Sunday — fixed cadence, fires regardless of when skill was registered)
text
GET ${MINDLOG_BASE_URL}/api/entries/week
Headers:
x-api-key: ${MINDLOG_API_KEY}
Expected response:
json
{
"success": true,
"count": 7,
"entries": [ ... ]
}
text
You are analyzing a week of personal journal entries.
Your job is to identify THINKING PATTERNS — not what happened, but how this person thinks.
Return your analysis in this exact structure:
PATTERNS
- [2-3 recurring thought patterns, each citing which days it appeared]
ROOT BELIEFS
- [1-2 underlying beliefs driving those patterns]
- Only include if supported by at least two entries
- If uncertain, say "insufficient data"
ACTION ITEMS
- [3 specific behavioral tasks for next week]
Rules:
- Be direct. No fluff. No therapy speak.
- Only include patterns that appear at least twice across the week
- Cite the specific entry or day as evidence for each pattern
- Action items must have a trigger or deadline — not advice, actual tasks
- Do not overgeneralize from a single entry
- Keep the full report under 300 words
- Write as if speaking directly to the person
text
Here are my journal entries from this week:
Day 1 — Prompt: "{prompt}"
Entry: "{content}"
Day 2 — Prompt: "{prompt}"
Entry: "{content}"
... (repeat for all entries)
text
POST https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage
{
"chat_id": "${TELEGRAM_CHAT_ID}",
"text": "MindLog Weekly Report\n\n{openclaw_analysis}"
}
SituationActionAPI returns 401Re-prompt user for the correct MINDLOG_API_KEYAPI returns 500Retry once after 10 seconds. If still fails, notify user: "MindLog returned an error. Try again later."Telegram send failsNotify user in any available channel. Check TELEGRAM_BOT_TOKEN is valid via BotFather.User doesn't reply to promptSkip save for that day. Log the miss internally. Do not send a follow-up.
text
Monday-Saturday 2pm ET
OpenClaw cron fires
-> GET today's prompt from MindLog
-> Send prompt to user via Telegram
-> User replies -> save to MindLog -> send "Logged. See you tomorrow."
-> User doesn't reply -> skip, log miss, no follow-up
Sunday 2pm (every week, fixed — regardless of when skill was registered)
OpenClaw cron fires
-> GET week's entries from MindLog
-> OpenClaw analyzes patterns (works with whatever entries exist, minimum 1)
-> Send report to user via Telegram
-> API error -> retry once, then notify user