SuperAPI AI Directory

notion-lifeos

General & other

View repository

Updated 10-15 23:32

About this skill

Notion LifeOS Skill

Memory System for Human — A scalable self-awareness system that captures your thoughts, decisions, and growth over decades.

Independent implementation of a Notion-based LifeOS system for OpenClaw agents, based on the PARA method and Make Time framework.

Inspiration: This implementation is inspired by Jeff Su's Notion Command Center YouTube videos. Built from scratch with AI automation features unique to this project.

Design Philosophy

1. Frontend-Backend Separation

  • Frontend: Notion (user interface for capture and review)
  • Backend: OpenClaw AI agents (automation, processing, insights)
  • This separation allows you to switch tools without losing your data structure

2. Database Separation (DP Principle)

  • Write: Instant, frictionless capture via natural language
  • Process: Deferred, AI-powered organization through Relations
  • Philosophy: Capture first, organize later. Never let processing block input.

3. Scalable Self-Awareness

  • Every note, task, and decision becomes a data point
  • Over time, patterns emerge: how you think, what you value, how you grow
  • Ultimate goal: An AI that thinks like you, trained on your actual thought process

See JEFF_SU_SUMMARY.md for detailed design principles.

PARA Method

This system implements the PARA method by Tiago Forte:

  • Projects — Short-term goals with deadlines (e.g., "Launch Course", "Run Marathon")
  • Areas — Ongoing responsibilities (e.g., Health, Career, Finance)
  • Resources — Reference materials and knowledge bases
  • Archives — Completed or paused projects

All databases are interconnected through Notion Relations, allowing information to surface automatically where you need it.

What This Skill Does

Enables your OpenClaw AI agent to:

  • Create and query tasks, notes, projects, areas, resources
  • Manage your PARA system via natural language
  • Add daily Make Time journal entries
  • Link related items across databases

Setup

1. Get Notion API Key

  1. Visit Notion Integrations
  2. Create a new Integration and get the API Key
  3. Save the API Key to ~/.config/notion/api_key
mkdir -p ~/.config/notion
echo "your_notion_api_key_here" > ~/.config/notion/api_key
chmod 600 ~/.config/notion/api_key

2. Configure Database ID

⚠️ Important: Database IDs are private information, do not commit to Git!

Option A: Use a private config file (recommended)

  1. Copy the template file:
cp CONFIG.private.md.example CONFIG.private.md
  1. Edit CONFIG.private.md, fill in your real database ID

  2. OpenClaw will preferentially read the ID from CONFIG.private.md (this file is already in .gitignore )

Option B: Edit SKILL.md directly

In the "Database ID Mapping" table below, replace the placeholders with your real IDs.

⚠️ Note: If you edit SKILL.md directly, do not commit to Git!

# 读取 API Key
NOTION_KEY=$(cat ~/.config/notion/api_key)

API version:2025-09-03(in this version, databases queries go through the /v1/data_sources/ endpoint)

Database ID Mapping

OpenClaw read order:

  1. Preferentially read CONFIG.private.md(if it exists)
  2. Otherwise use the IDs in SKILL.md below

You need to replace the following placeholders with your own database IDs:

Database database_id (for creating pages) data_source_id (for querying)
Task YOUR_TASK_DATABASE_ID YOUR_TASK_DATA_SOURCE_ID
Notes YOUR_NOTES_DATABASE_ID YOUR_NOTES_DATA_SOURCE_ID
Areas YOUR_AREAS_DATABASE_ID YOUR_AREAS_DATA_SOURCE_ID
Resources YOUR_RESOURCES_DATABASE_ID YOUR_RESOURCES_DATA_SOURCE_ID
Projects YOUR_PROJECTS_DATABASE_ID YOUR_PROJECTS_DATA_SOURCE_ID
Make Time YOUR_MAKETIME_DATABASE_ID YOUR_MAKETIME_DATA_SOURCE_ID

LifeOS root page:YOUR_LIFEOS_ROOT_PAGE_ID

How to get database_id and data_source_id?

  1. database_id: Open the Notion database page, the ID part in the URL (remove hyphens)

    • For example:https://notion.so/25b119f193ef804a96fec277cc6b45fa → 25b119f1-93ef-804a-96fe-c277cc6b45fa
  2. data_source_id: Obtain by querying database information via the API

    curl -X GET "https://api.notion.com/v1/databases/YOUR_DATABASE_ID" \
      -H "Authorization: Bearer $NOTION_KEY" \
      -H "Notion-Version: 2025-09-03"
    

Field Structure

Task Database

Field Type Description
Name title Task name
Done checkbox Whether completed
Due Date date Due date
Related to Projects relation Related project
Related to Notes relation Related note

Notes Database

Field Type Description
Note title Note title
Note Type select Note type
Status select Status
Tags multi_select Tags
folder rich_text Folder
Date date Date
URL url Link
Files & media files Attachment
Related to Projects relation Related project
Related to Areas relation Related area
Related Resources relation Related resource
Created time created_time Created time
Last edited time last_edited_time Last edited

Areas Database

Field Type Description
Blog name title Area name
type multi_select Type tag
Related Notes relation Related note
Related Resources relation Related resource
created time created_time Created time
last edited last_edited_time Last edited

Resources Database

Field Type Description
Note title Resource name
Resources Type select Resource type
URL url Link
Date date Date
Files & media files Attachment
Related to Areas relation Related area
Related to Projects relation Related project
Related Notes relation Related note
Created time created_time Created time
Last edited time last_edited_time Last edited

Projects Database

Field Type Description
Log name title Project Name
Status select Status
End Date date End Date
Project Folder rich_text Project Folder
Related Areas relation Related Area
Related Resources relation Related Resources
Related Notes relation Related Notes
Created time created_time Created Time
Last edited time last_edited_time Last Edited

Make Time Database

Field Type Description
Name title Date Name
Date date Date
Highlight rich_text Today's Highlights
Grateful rich_text Things to Be Grateful For
Let Go rich_text Things to Let Go
Day of the Week formula Day of the Week (auto-calculated)

API Usage Patterns

Create a Page (using database_id)

curl -X POST "https://api.notion.com/v1/pages" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"database_id": "<database_id>"},
    "properties": { ... }
  }'

Query Data (using data_source_id)

curl -X POST "https://api.notion.com/v1/data_sources/<data_source_id>/query" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": { ... },
    "sorts": [{"property": "Created time", "direction": "descending"}],
    "page_size": 10
  }'

Common Operation Examples

Create a Task

curl -X POST "https://api.notion.com/v1/pages" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"database_id": "YOUR_TASK_DATABASE_ID"},
    "properties": {
      "Name": {"title": [{"text": {"content": "任务名称"}}]},
      "Due Date": {"date": {"start": "2026-02-25"}},
      "Done": {"checkbox": false}
    }
  }'

Create a Note

curl -X POST "https://api.notion.com/v1/pages" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"database_id": "YOUR_NOTES_DATABASE_ID"},
    "properties": {
      "Note": {"title": [{"text": {"content": "笔记标题"}}]},
      "Note Type": {"select": {"name": "类型"}},
      "Tags": {"multi_select": [{"name": "标签1"}]}
    }
  }'

Query Incomplete Tasks

curl -X POST "https://api.notion.com/v1/data_sources/YOUR_TASK_DATA_SOURCE_ID/query" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": {"property": "Done", "checkbox": {"equals": false}},
    "sorts": [{"property": "Due Date", "direction": "ascending"}]
  }'

Query Recent Notes

curl -X POST "https://api.notion.com/v1/data_sources/YOUR_NOTES_DATA_SOURCE_ID/query" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "sorts": [{"property": "Created time", "direction": "descending"}],
    "page_size": 10
  }'

Notes

  • Use database_idto create pages, use data_source_idto query, don't mix them up
  • Rate limit: ~3 req/s
  • Relation fields require the target page's page_id
  • A button block's automation configuration is lost when created via the API (the data source reference breaks); instead of button functionality, set the Relation field directly via the API
  • Page content (body) is added via the blocks API:PATCH /v1/blocks/{page_id}/children

License

MIT License

Author

Created by Jiahao Shao

Acknowledgments

Disclaimer: This is an independent implementation created by studying publicly available content. It is not affiliated with or endorsed by any paid courses. The AI integration features are unique to this project.