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": []}}
}
}
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.小蔥技能7w4.net有完整的技能分類。
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啟動模板,它很合適;如果想要更豐富的功能或自定義空間,可能會覺得受限。