Write diary entries or short 24-hour reports in Chinese or English, then sync them into Notion using a user-supplied NOTION_API_KEY and the bundled Python script. Use when the user invokes /notion_diary, asks to write a diary with one of four preset styles, wants command-driven journal input, wants to authorize Notion by filling an API key, wants to sync diary text or photo notes into Notion, or wants a fallback short report generated from the last 24 hours of conversation when no diary was written today.
Use this skill to turn user input into a diary entry or a short 24-hour report, then sync it into Notion through the bundled Python helper at {baseDir}/scripts/notion_diary_sync.py.
OpenClaw sanitizes the skill name to the slash command /notion_diary.
Accept these command patterns:
/notion_diary diary style=<plain|gentle|reflective|lyrical>/notion_diary diary date=<YYYY-MM-DD> style=<...>/notion_diary report24h style=<plain|gentle|reflective|lyrical>/notion_diary auto style=<...>Chinese aliases are also valid:
diary -> 日记report24h -> 日报auto -> 自动Treat the first token after /notion_diary as the mode. Parse date= and style= when present. Everything else in the message is source material for the entry.
Support exactly four preset styles. Read references/style-presets.md before drafting when the user does not define their own style.
plain: concise, factual, diary-as-log.gentle: warm, smooth, personal.reflective: restrained, lived-in, slightly introspective. Prefer this by default.lyrical: more scene and atmosphere, but still grounded.If the user gives no style, use:
reflective when the material contains emotion, travel, or relationships.plain when the material is mostly work updates.This skill expects NOTION_API_KEY to be injected by OpenClaw. Read references/openclaw-config.example.jsonc before first use.
Keep this package registry-safe:
Optional environment variables:
NOTION_DIARY_DATA_SOURCE_ID: preferred existing target.NOTION_DIARY_DATABASE_ID: existing database id if the data source id is not known.NOTION_DIARY_PARENT_PAGE_ID: parent page used to find or create the Daily Journal database.NOTION_DIARY_DATABASE_NAME: default database title. Defaults to Daily Journal.NOTION_DIARY_DEFAULT_STYLE: default style code. Defaults to reflective.Prefer NOTION_DIARY_DATA_SOURCE_ID when available. If it is missing, use NOTION_DIARY_DATABASE_ID. If both are missing, use NOTION_DIARY_PARENT_PAGE_ID to locate or create the diary database.
The script creates a date-ready database schema. If you want a visible calendar layout in Notion, create the calendar view once in the Notion UI using the Date property.
Only skip the follow-up questions when one of these is true:
report24h and the user asked for a short brief rather than a refined diaryPrefer titles in this shape:
YYYY-MM-DD | 一句话主题Prefer a short summary sentence for the Notion Summary property.
Ask questions that improve the diary rather than expand it mechanically.
Good follow-up examples:
Avoid generic questions like:
Use this mode when:
report24h or 日报auto and there is no usable diary material for todayBefore drafting a 24-hour report:
sessions_list to identify the current sender's most relevant session from the last 24 hours.main for direct chat when it is clearly the active thread.sessions_history to fetch the recent transcript. Keep includeTools off unless tool outputs are part of the substance the user wants summarized.The 24-hour report must stay shorter than a full diary:
If a proper diary entry for today already exists and the user asks for auto, prefer updating that diary instead of generating a separate short report.
When the user provides one or more photos, insert image placement markers into the content before calling the sync script:
[[image:1]][[image:2]]Each marker must appear on its own line between paragraphs. Pass the real local file paths or public URLs through repeated --image arguments to the script in the same order.
If there are images but no obvious placement, append them after the body.
When image paths or public image URLs are available, the sync should do all three:
Photos propertyUse {baseDir}/scripts/notion_diary_sync.py.
Typical calls:
python3 {baseDir}/scripts/notion_diary_sync.py lookup \
--date 2026-03-28 \
--mode diary
python3 {baseDir}/scripts/notion_diary_sync.py sync \
--date 2026-03-28 \
--mode diary \
--style reflective \
--title "2026-03-28 | 曼谷的最后一天" \
--summary "曼谷最后一天的收尾、想念和被回应。" \
--content-file /tmp/diary.txt \
--image /absolute/path/photo1.jpg
python3 {baseDir}/scripts/notion_diary_sync.py sync \
--date 2026-03-28 \
--mode report \
--style plain \
--title "2026-03-28 | 24h 简短日报" \
--summary "过去 24 小时的工作与交流简报。" \
--content-file /tmp/report.txt
The script will:
Title, Date, Mode, Style, and Summary properties in syncPhotos property and page cover when photos are providedplain, optimize for clear sequence and compactness.gentle, allow warmth but keep it natural.reflective, use the user's preferred balanced style: first set the day's overall state, then move through concrete events and emotional changes gradually.reflective, the priority is not “more literary”; the priority is natural pacing, light transitions, and a sense of inner movement without over-writing.lyrical, add atmosphere lightly; do not become purple or melodramatic.skills.entries["notion-diary"].apiKey or NOTION_API_KEY.report24h, summarize only the visible recent chat and say that the report used a limited context window.