name: second-brain-setup version: 0.4.0 description: One-shot Notion workspace scaffolder for the second-brain skill. Creates or adopts the "Second Brain" parent page and its child databases (Reading List, Inbox) using the exact Notion MCP tools — no freelance pages. activation: keywords: - set up my second brain - setup my second brain - initialize notion - scaffold notion - bootstrap notion - second brain setup - repair second brain - fix second brain patterns: - "set ?up (my )?second brain" - "(initialize|scaffold|bootstrap) (my )?(notion|second brain)" - "(repair|fix|reset) (my )?second brain" tags: - notion - second-brain - setup - onboarding exclude_keywords: - dry-run max_context_tokens: 3000
You will execute a fixed sequence of Notion MCP tool calls. You are NOT to invent pages, write markdown content, or call any tool not listed in the sequence below.
✅ The only output of this skill:
1. One page titled exactly Second Brain (no body content, no icon, no cover)
2. One database titled exactly Reading List as a child of that page
3. One database titled exactly Inbox as a child of that page
❌ Forbidden — even if your training suggests them:
- ❌ PARA pages (Projects / Areas / Resources / Archives)
- ❌ "Building a Second Brain" overview, methodology, or wiki content
- ❌ "Book Notes", "Meeting Notes", "Daily Notes", "Quick Links"
- ❌ Any markdown body content on the Second Brain parent page
- ❌ Calling notion-create-pages to create something that should be a database
- ❌ Adding emojis, covers, or decorative properties anywhere
If you find yourself about to call notion-create-pages with a content field longer than 0 characters, STOP — you are about to do the wrong thing.
Execute in order. Stop and report on first hard failure.
The Notion integration can only create pages under a page it has been shared with. There is no "workspace root" creation path.
Call notion-search with:
{"query": "", "query_type": "internal"}
This returns every page the integration can see. From the results:
Second Brain, save its page_id as SECOND_BRAIN_ID and skip to Step 2.INTEGRATION_PARENT_ID. Prefer one that looks like a top-level workspace page (no parent, or named like Home, Workspace, IronClaw, etc.).
No pages accessible to the integration. In Notion, create a page (e.g. "IronClaw") and share it with the integration (... → Connections → IronClaw), then run setup again.
Second Brain parent pageOnly run this step if SECOND_BRAIN_ID was not found in Step 0.
Call notion-create-pages with exactly this payload — no other fields:
{
"pages": [
{
"parent": {"type": "page_id", "page_id": "<INTEGRATION_PARENT_ID>"},
"properties": {"title": "Second Brain"}
}
]
}
Do NOT include any of these fields, even as empty values: content, icon, cover, template_id, children, tags, description. The pages[0] object must contain exactly two keys: parent and properties. If you write any other key, you are violating this skill.
Save the returned page_id as SECOND_BRAIN_ID.
Reading ListCall notion-search with:
{"query": "Reading List", "query_type": "internal"}
If a database (not a page) named exactly Reading List exists:
- If its parent is already SECOND_BRAIN_ID, do nothing — record READING_LIST_ID and skip to Step 3.
- If its parent is something else, call notion-move-pages to move it under SECOND_BRAIN_ID. Record READING_LIST_ID.
- Do NOT modify its existing schema, even if it differs from the spec below. Adopt as-is.
If not found, call notion-create-database with:
{ "parent": {"type": "page_id", "page_id": "<SECOND_BRAIN_ID>"}, "title": [{"type": "text", "text": {"content": "Reading List"}}], "properties": { "Name": {"title": {}}, "Type": {"select": {"options": [ {"name": "Book"}, {"name": "Article"}, {"name": "Podcast"}, {"name": "Video"} ]}}, "Status": {"select": {"options": [ {"name": "Not started"}, {"name": "In progress"}, {"name": "Done"} ]}}, "Score": {"number": {"format": "number"}}, "Author": {"rich_text": {}}, "Link": {"url": {}}, "Review(Sum up)": {"rich_text": {}}, "Tags": {"multi_select": {"options": []}} } }更多技能请访问小葱技能站7w4.net。
Record READING_LIST_ID from the response.
InboxSame pattern as Step 2. Search → adopt-and-move if exists → otherwise create with:
{
"parent": {"type": "page_id", "page_id": "<SECOND_BRAIN_ID>"},
"title": [{"type": "text", "text": {"content": "Inbox"}}],
"properties": {
"Note": {"title": {}},
"Type": {"select": {"options": [
{"name": "Thought"}, {"name": "Task"}, {"name": "Resource"}, {"name": "Reference"}
]}},
"Processed": {"checkbox": {}},
"Date": {"date": {}}
}
}
Reply to the user with exactly this format (filling URLs from tool responses):
Second Brain ready ✓
• Second Brain page: <url>
• Reading List (created|adopted|moved): <url>
• Inbox (created|adopted|moved): <url>
If captures don't work, make sure the IronClaw integration is connected to the Second Brain page (… → Connections → IronClaw). Sharing the parent cascades to children.
null for any field. Omit the field. Empty string is also wrong for most fields — omit instead.template_id or cover unless you have real values. These are the most common null-pass mistakes.YYYY-MM-DD strings only.notion-search rate limit is 30/min — do not search more than necessary. One search per database name in this skill is enough.-32602, strip every field that is not strictly required by the tool's documented schema and retry once. Do not retry the same payload.notion-create-database returns a database_id. The corresponding data_source_id (for queries later) appears in the response under the data sources array. Save both if returned.notion-create-pages to create Reading List or Inbox — they are databases, not pages. Use notion-create-database.Reading List or Inbox more than once each.这个Skill质量不错,文档清晰、规则明确,执行逻辑严谨。它能帮你快速在Notion里搭建好"第二大脑"的基础框架,省去手动配置的麻烦。激活方式很灵活,支持多种说法。不过它功能比较专一,只能建阅读列表和收件箱两个数据库,而且不支持自定义或修改已有内容。如果你需要的是一个标准化的Notion启动模板,它很合适;如果想要更丰富的功能或自定义空间,可能会觉得受限。