Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计通过

memory-to-notion记忆 TO Notion

Agent Skill

用于处理 Notion 页面、数据库、工作区内容和结构化记录。它适合让 Agent 查询知识库、整理页面内容、创建记录或把外部信息同步到 Notion。使用时需要确认集成是否已被授权到目标页面或数据库,并区分读取、追加和覆盖更新;涉及批量写入或修改数据库属性时,应先核对字段名称、属性类型和目标页面。

总安装

11,353

周安装

475

GitHub Stars

公开资料未说明

下载量

3,891
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:memory-to-notion(记忆 TO Notion)
来源仓库:https://github.com/smilelight/memory-to-notion
安装命令:
openclaw skills install memory-to-notion
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install memory-to-notion

简介

memory-to-notion 处理 Notion 页面与数据库的内容查询、创建及同步操作。

  • 适合将外部信息归档至 Notion 或从已有页面提取结构化数据。
  • 支持读取、追加和覆盖更新,需明确目标页面与字段映射关系。
  • 安装命令:openclaw skills install memory-to-notion,需授权访问指定 Notion 工作区。
  • 务必核对字段类型与属性名称,避免批量写入失败。

SKILL.md

name
memory-to-notion
description
>
disable-model-invocation
true
user-invocable
true

Memory to Notion

This skill retrieves the user's past conversation history, analyzes it for valuable and meaningful content, decomposes conversations into atomic memory entries, and writes them as rows into the Memory Store Notion Database.

Database Discovery

This skill uses a zero-config convention: the database is always named "Memory Store".

Locate the database:

POST /v1/search
{
  "query": "Memory Store"
}

From the results, find the item with object: "data_source" whose title is "Memory Store". Extract both:

  • data_source_id -- for querying (POST /v1/data_sources/{id}/query)
  • database_id -- for creating pages (POST /v1/pages with parent: {"database_id": "..."})
  • If found -> use data_source_id for queries, database_id for page creation.
  • If not found -> ask the user: "No 'Memory Store' database found in your Notion workspace.

Which page should I create it under? Please provide a Notion page URL or page ID." Then create the database (see Database Creation below).

Schema

PropertyTypeDescription
TitleTitleOne-line memory summary (searchable)
CategorySelectFact / Decision / Preference / Context / Pattern / Skill
ContentRich TextDetailed memory content
SourceSelectClaude.ai / ClaudeCode / Manual / OpenClaw / Other
StatusSelectActive / Archived / Contradicted
ScopeSelectGlobal / Project
ProjectRich TextProject name (set when Scope=Project, leave empty for Global)
ExpirySelectNever / 30d / 90d / 1y
Source DateDateWhen the original conversation happened

Database Creation

When the database does not exist, create it under the user-specified parent page. Use the Notion create-database API with the schema above.

Category Definitions

  • Fact: Objective facts -- user's identity, background, tech stack, tools, environment, organization
  • Decision: Architecture decisions, technology choices, approach selections
  • Preference: User preferences -- coding style, tool configuration, interaction habits
  • Context: Background information -- project context, domain knowledge, observations
  • Pattern: Behavioral patterns -- workflows, recurring needs
  • Skill: Skills and knowledge -- commands, APIs, techniques learned

Platform Adaptation

This skill describes operations using generic Notion REST API format. Each platform's AI should translate to its available tools using the fixed mappings below. Do NOT guess -- follow these mappings exactly.

Claude Code / Claude.ai (Notion MCP Tools)

OperationSKILL.md DescribesUse MCP ToolKey Parameters
Discover databasePOST /v1/searchnotion-searchquery: "Memory Store", content_search_mode: "workspace_search"
Get IDs--notion-fetchFetch the database, extract data_source_id from <data-source url="collection://..."> tag
Dedup queryPOST /v1/data_sources/{id}/queryNot availableFall back to notion-search with data_source_url (see Step 3 note)
Create pagePOST /v1/pagesnotion-create-pagesparent: { "data_source_id": "..." }
Update page statusPATCH /v1/pages/{id}notion-update-pagecommand: "update_properties"
Create databasePOST /v1/databasesnotion-create-databaseUses SQL DDL syntax (see Database Creation)
Fetch pageGET /v1/pages/{id}notion-fetchid: "<page_id>"

Critical notes:

  • Discovery MUST use content_search_mode: "workspace_search" (default ai_search mode may not return databases)
  • Structured query for dedup is not available in MCP. Use semantic search as fallback:

notion-search with data_source_url: "collection://<data_source_id>" and keywords from the candidate memory. Then notion-fetch each result to compare full properties.

  • Do NOT parallel-call multiple notion-search against the same data_source_url -- MCP will error.

When deduping multiple candidate memories, run searches sequentially. Deduplicate results by page id before fetching.

  • notion-create-database uses SQL DDL syntax, not JSON. See Database Creation section for the DDL.

OpenClaw

OpenClaw accesses Notion through a separately installed "notion" skill (clawhub.ai/steipete/notion). This skill must be installed before using memory-to-notion.

When executing, first read the notion skill's SKILL.md to learn the Notion API access patterns (API key setup, curl commands, endpoints). Then follow this workflow using those patterns.

  • All operations described in this skill (search, query, create page, update page, create database)

map directly to the notion skill's REST API patterns

  • All operations including structured query for dedup are fully supported

Important: This skill (memory-to-notion) is a workflow skill that depends on Notion connectivity. It does NOT provide Notion access itself -- it relies on the platform's Notion integration (MCP tools on Claude Code/Claude.ai, notion skill on OpenClaw).

Workflow

Step 1: Discover Database

Locate the "Memory Store" database. If not found, create it (see above).

Step 2: Gather Conversation Content

Choose a strategy based on the current platform:

Claude.ai (has conversation history API):

  • Use recent_chats(n=20) to fetch recent conversations
  • Use after/before parameters to filter by time range
  • Use conversation_search for keyword-based retrieval
  • For comprehensive archival, paginate up to ~5 rounds

Claude Code (current session only):

  • Extract valuable information from the current conversation context
  • Triggered when the user says "summarize memory" or similar
  • Review facts, decisions, preferences produced in this session
  • Cannot access past sessions -- only processes current conversation

Step 3: Check Existing Memories (Dedup & Conflict Detection)

Before writing, query the database to check for duplicates and conflicts. For each candidate memory, search Title and Content:

POST /v1/data_sources/{data_source_id}/query
{
  "filter": {
    "or": [
      { "property": "Title", "title": { "contains": "<keyword from new memory>" } },
      { "property": "Content", "rich_text": { "contains": "<keyword from new memory>" } }
    ]
  },
  "page_size": 10
}
MCP platforms (Claude Code / Claude.ai): Structured query is not available. Use notion-search with data_source_url: "collection://<data_source_id>" and keywords from the candidate memory as query. Run dedup searches sequentially (not in parallel). Deduplicate results by page id across searches, then notion-fetch only unique results to compare properties.

The query returns full page properties. Check for:

  1. Duplicates: Same fact already stored -> skip
  2. Updates: Same topic but info changed -> update existing, mark old as Contradicted if needed
  3. Conflicts: New info contradicts existing -> create new as Active, mark old as Contradicted

Step 4: Decompose into Atomic Memories

Each conversation may yield 0-N memory entries. The key principle is one fact per row.

Decomposition rules:

  • Each memory should be self-contained and independently meaningful
  • Don't store entire conversation summaries -- extract individual facts, decisions, preferences
  • Title should be a single declarative sentence (searchable)
  • Content provides enough detail to be useful without the original conversation

Examples of good decomposition:

A conversation about "setting up a new Python project" might yield:

"User prefers uv over pip for Python dependency management"  -> Category: Preference
"Project OpenClaw uses FastAPI + PostgreSQL architecture"     -> Category: Decision
"User prefers Ruff for code formatting and linting"           -> Category: Preference
"User is a programmer"                                        -> Category: Fact

What NOT to store:

  • Transient Q&A that can be easily re-searched ("What is Python's GIL")
  • Pleasantries and small talk
  • Failed attempts with no useful outcome
  • Information the user explicitly asked to forget

Step 5: Write to Memory Store

Create pages in the database. For each memory entry, set properties:

{
  "Title": "One-line summary",
  "Category": "Fact|Decision|Preference|Context|Pattern|Skill",
  "Content": "Detailed memory content, sufficient for any AI platform to understand and use",
  "Source": "Claude.ai|ClaudeCode|OpenClaw|Manual|Other",
  "Status": "Active",
  "Scope": "Global|Project",
  "Project": "Project name (set when Scope=Project)",
  "Expiry": "Never|30d|90d|1y",
  "date:Source Date:start": "YYYY-MM-DD",
  "date:Source Date:is_datetime": 0
}

Scope guidelines:

  • Global: Cross-project universal -- user preferences, general toolchain, personal habits, global decisions
  • Project: Project-specific -- project architecture, dedicated config, project-scoped technical decisions
  • When uncertain, default to Global
  • Project field should match the user's project directory name or repository name (e.g., "OpenClaw")

Expiry guidelines:

  • Never: Stable facts and preferences (name, tools, architecture)
  • 1y: May become outdated (tool versions, project status)
  • 90d: Limited shelf life (current tasks, temporary decisions)
  • 30d: Very transient (this week's todos, temporary workarounds)

Step 6: Handle Conflicts

If Step 3 found conflicting memories:

  1. Update the old memory's Status to "Contradicted":
   PATCH /v1/pages/{old_page_id}
   { "properties": { "Status": { "select": { "name": "Contradicted" } } } }
  1. Create the new memory with Status "Active" (default)
  2. Optionally note in new Content what it supersedes: "(Updated: previously recorded as XX)"

Step 7: Report Results

After writing, provide the user with a summary:

  • Conversations processed
  • Memories created / updated / skipped
  • List of new entries with Titles and Categories
  • Conflicts detected and how resolved

Example:

Memory archival complete

Processed 8 conversations, generated 12 memories:
- New: 10
- Updated: 1 (user location updated from Beijing to Shenzhen)
- Skipped: 3 low-value conversations

New memories:
| Title | Category |
|-------|----------|
| User prefers uv for Python dependency management | Preference |
| Project OpenClaw uses FastAPI architecture | Decision |

Important Notes

  • Atomic entries: One fact per row. Never dump a whole conversation summary into one entry.
  • Language: Title and Content should be written in the user's primary language (the language they most frequently use in conversations). This ensures memories are searchable and readable in the language the user naturally uses. Do NOT force English -- match the user's language.
  • Idempotent: Always check for existing memories before writing. Running twice should not create duplicates.
  • Source accuracy: Auto-set Source based on current platform (Claude.ai -> "Claude.ai", Claude Code -> "ClaudeCode", OpenClaw -> "OpenClaw").
  • Preserve details: Keep code snippets, commands, config values, URLs verbatim in Content.
  • User control: Don't store anything the user wouldn't want to see. When in doubt, ask.
  • Cross-platform ready: Write Content so any AI platform can understand and use it.

Example Interaction

User: summarize memory

Claude:

  1. Searches for "Memory Store" database, obtains data_source_id and database_id
  2. Reviews current session (Claude Code) or recent chats (Claude.ai)
  3. Queries database for existing entries to avoid duplicates
  4. Decomposes conversations into atomic memories
  5. Writes entries to the database
  6. Reports: "Processed 5 conversations, generated 8 new memories, updated 1, skipped 2."

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

83.41%
按下载量换算3,245

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills