🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Notion Enhanced

by @moikapy

Integrate with Notion workspaces to read pages, query databases, create entries, and manage content. Perfect for knowledge bases, project tracking, content calendars, CRMs, and collaborative documentation. Works with any Notion page or database you explicitly share with the integration.

Versionv0.1.0
Downloads3,091
Installs11
Stars⭐ 4
TERMINAL
clawhub install openclaw-notion-skill

πŸ“– About This Skill


name: notion version: 0.1.0 description: Integrate with Notion workspaces to read pages, query databases, create entries, and manage content. Perfect for knowledge bases, project tracking, content calendars, CRMs, and collaborative documentation. Works with any Notion page or database you explicitly share with the integration.

Notion Integration

Connect your Notion workspace to OpenClaw for seamless knowledge management and project tracking.

When to Use This Skill

Use Notion when the user wants to:

  • Add items to a database (backlog, todos, tracking)
  • Create new pages in a database or as children of existing pages
  • Query/search their Notion workspace for information
  • Update existing pages (status, notes, properties)
  • Read page content or database entries
  • Setup

    1. Create Notion Integration

    1. Go to notion.so/my-integrations 2. Click New integration 3. Name it (e.g., "OpenClaw") 4. Select your workspace 5. Copy the Internal Integration Token (starts with secret_) 6. Save this token securely in OpenClaw config or environment: NOTION_TOKEN=secret_...

    2. Share Pages with Integration

    Important: Notion integrations have NO access by default. You must explicitly share:

    1. Go to any page or database in Notion 2. Click Share β†’ Add connections 3. Select your "OpenClaw" integration 4. The skill can now read/write to that specific page/database

    3. Get Database/Page IDs

    From URL:

  • Database: https://www.notion.so/workspace/XXXXXXXX?v=... β†’ ID is XXXXXXXX (32 chars)
  • Page: https://www.notion.so/workspace/XXXXXXXX β†’ ID is XXXXXXXX
  • Note: Remove hyphens when using IDs. Use the 32-character string.

    Core Operations

    Query Database

    Retrieve entries from any database you've shared.

    // Using the Notion skill via exec
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js query-database ${databaseId}
    });

    // With filters (example: status = "In Progress") await exec({ command: node ~/.agents/skills/notion/notion-cli.js query-database ${databaseId} --filter '{"property":"Status","select":{"equals":"In Progress"}}' });

    Returns: Array of pages with properties as configured in your database.

    Add Database Entry

    Create a new row in a database.

    // Add entry with multiple properties
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js add-entry ${databaseId} \
        --title "My New Content Idea" \
        --properties '${JSON.stringify({
          "Status": { "select": { "name": "Idea" } },
          "Platform": { "multi_select": [{ "name": "X/Twitter" }] },
          "Tags": { "multi_select": [{ "name": "3D Printing" }, { "name": "AI" }] },
          "Priority": { "select": { "name": "High" } }
        })}'
    });
    

    Get Page Content

    Read the content of any page (including database entries).

    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js get-page ${pageId}
    });
    

    Returns: Page title, properties, and block content (text, headings, lists, etc.).

    Update Page

    Modify properties or append content to an existing page.

    // Update properties
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js update-page ${pageId} \
        --properties '${JSON.stringify({
          "Status": { "select": { "name": "In Progress" } }
        })}'
    });

    // Append content blocks await exec({ command: node ~/.agents/skills/notion/notion-cli.js append-body ${pageId} \ --text "Research Notes" --type h2 });

    Search Notion

    Find pages across your shared workspace.

    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js search "content ideas"
    });
    

    Common Use Cases

    Content Pipeline (Content Creator Workflow)

    Database Structure:

  • Title (title)
  • Status (select: Idea β†’ Draft β†’ Scheduled β†’ Posted)
  • Platform (multi_select: X/Twitter, YouTube, MakerWorld, Blog)
  • Publish Date (date)
  • Tags (multi_select)
  • Draft Content (rich_text)
  • OpenClaw Integration:

    // Research scout adds findings to Notion
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js add-entry ${contentDbId} \
        --title "New 3D Print Technique" \
        --properties '${JSON.stringify({
          "Status": { "select": { "name": "Idea" } },
          "Platform": { "multi_select": [{ "name": "YouTube" }] },
          "Tags": { "multi_select": [{ "name": "3D Printing" }] }
        })}'
    });

    // Later: Update when drafting await exec({ command: node ~/.agents/skills/notion/notion-cli.js update-page ${entryId} \ --properties '${JSON.stringify({ "Status": { "select": { "name": "Draft" } }, "Draft Content": { "rich_text": [{ "text": { "content": "Draft text here..." } }] } })}' });

    Project Management (Solo Entrepreneur)

    Database Structure:

  • Name (title)
  • Status (select: Not Started β†’ In Progress β†’ Blocked β†’ Done)
  • Priority (select: Low β†’ Medium β†’ High β†’ Critical)
  • Due Date (date)
  • Estimated Hours (number)
  • Actual Hours (number)
  • Links (url)
  • Notes (rich_text)
  • Weekly Review Integration:

    // Query all "In Progress" projects
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js query-database ${projectsDbId} --filter '{"property":"Status","select":{"equals":"In Progress"}}'
    });
    

    Customer/Quote CRM (3D Printing Business)

    Database Structure:

  • Customer Name (title)
  • Status (select: Lead β†’ Quote Sent β†’ Ordered β†’ Printing β†’ Shipped)
  • Email (email)
  • Quote Value (number)
  • Filament Type (select)
  • Due Date (date)
  • Shopify Order ID (rich_text)
  • Shopify Integration:

    // New order β†’ create CRM entry
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js add-entry ${crmDbId} \
        --title "${customerName}" \
        --properties '${JSON.stringify({
          "Status": { "select": { "name": "Ordered" } },
          "Email": { "email": customerEmail },
          "Shopify Order ID": { "rich_text": [{ "text": { "content": orderId } }] }
        })}'
    });
    

    Knowledge Base (Wiki Replacement for MEMORY.md)

    Structure: Hub page with nested pages:

  • 🏠 Home (shared with integration)
  • - SOPs - Troubleshooting - Design Patterns - Resource Links

    Query for quick reference:

    // Search for "stringing" to find 3D print troubleshooting
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js search "stringing"
    });
    

    Property Types Reference

    When creating/updating database entries, use these property value formats:

    // Title (always required for new pages)
    { "title": [{ "text": { "content": "Page Title" } }] }

    // Select (single choice) { "select": { "name": "Option Name" } }

    // Multi-select (multiple choices) { "multi_select": [{ "name": "Tag 1" }, { "name": "Tag 2" }] }

    // Status (for new Status property type) { "status": { "name": "In progress" } }

    // Text / Rich text { "rich_text": [{ "text": { "content": "Your text here" } }] }

    // Number { "number": 42 }

    // Date { "date": { "start": "2026-02-15" } } { "date": { "start": "2026-02-15T10:00:00", "end": "2026-02-15T12:00:00" } }

    // Checkbox { "checkbox": true }

    // Email { "email": "user@example.com" }

    // URL { "url": "https://example.com" }

    // Phone { "phone_number": "+1-555-123-4567" }

    // Relation (link to another database entry) { "relation": [{ "id": "related-page-id-32chars" }] }

    Security & Permissions

    Critical Security Model:

  • βœ… Integration ONLY sees pages you explicitly share
  • βœ… You control access per page/database
  • βœ… Token stored securely in ~/.openclaw/.env (never in code)
  • ❌ Never commit NOTION_TOKEN to git
  • ❌ Integration cannot access private teamspaces or other users' private pages
  • Best Practices: 1. Use a dedicated integration (don't reuse personal integrations) 2. Share minimum necessary pages (granular > broad) 3. Rotate token if compromised via Notion integration settings 4. Review shared connections periodically

    Environment Setup

    Add to ~/.openclaw/.env:

    NOTION_TOKEN=secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

    Or set per-command:

    NOTION_TOKEN=secret_xxx node notion-cli.js ...
    

    Error Handling

    Common errors and fixes:

    | Error | Cause | Fix | |-------|-------|-----| | "API token is invalid" | Wrong token or integration deleted | Check token at notion.so/my-integrations | | "object_not_found" | Page not shared with integration | Share page: Share β†’ Add connections | | "validation_error" | Property format incorrect | Check property type in database | | "rate_limited" | Too many requests | Add delay between requests |

    Quick Install (One Command)

    cd ~/.agents/skills/notion
    ./install.sh
    

    Manual install (if above fails):

    cd ~/.agents/skills/notion
    npm install
    

    That's it! No build step required for the standalone version.

    Quick Test

    # After setting NOTION_TOKEN in ~/.openclaw/.env
    node notion-cli.js test
    

    Smart ID Resolution

    Reference entries by Notion auto-ID (e.g., #3) or direct UUID.

    By Notion ID (Recommended for Manual Use)

    Use the number you see in your database's ID column:

    # Get entry #3
    node notion-cli.js get-page '#3' DATABASE_ID

    Add content to entry #3

    node notion-cli.js append-body '#3' --database DATABASE_ID \ --text "Research notes" --type h2

    Add bullet to entry #3

    node notion-cli.js append-body '#3' --database DATABASE_ID \ --text "Key finding" --type bullet

    By Direct UUID (For Automation)

    # Using full UUID from Notion URL
    node notion-cli.js get-page 2fb3e4ac...
    node notion-cli.js append-body 2fb3e4ac... \
      --text "Content" --type paragraph
    

    Auto-detection: Starts with # = Notion ID lookup. 32-char hex = Direct UUID.

    Pro Tip: Add an ID property (type: unique ID) to auto-number entries as #1, #2, #3...

    Page Body Editing

    Add rich content to page bodies, not just properties.

    Append Content Blocks

    # Add heading
    node notion-cli.js append-body PAGE_ID --text "Research Summary" --type h2

    Add paragraph (default)

    node notion-cli.js append-body PAGE_ID --text "Detailed findings go here..."

    Add bullet list item

    node notion-cli.js append-body PAGE_ID --text "First key finding" --type bullet

    Add numbered list item

    node notion-cli.js append-body PAGE_ID --text "Step one description" --type numbered

    Add TODO checkbox

    node notion-cli.js append-body PAGE_ID --text "Create video script" --type todo

    Add quote

    node notion-cli.js append-body PAGE_ID --text "Important quote from source" --type quote

    Add code block

    node notion-cli.js append-body PAGE_ID --text "const result = optimizeSupports();" --type code --lang javascript

    Supported Block Types

    | Type | Description | Example Use | |------|-------------|-------------| | paragraph | Regular text (default) | Descriptions, explanations | | h1, h2, h3 | Headings | Section organization | | bullet | Bulleted list | Key findings, features | | numbered | Numbered list | Step-by-step instructions | | todo | Checkbox item | Action items, tasks | | quote | Blockquote | Source citations | | code | Code block | Snippets, commands | | divider | Horizontal line | Section separation |

    Get Page with Body Content

    # Get full page including formatted body
    node notion-cli.js get-page PAGE_ID
    

    Returns:

  • Page properties
  • Formatted body blocks (type + content preview)
  • Block count
  • Advanced: Raw JSON Blocks

    For complex layouts, use raw Notion block JSON:

    node notion-cli.js append-body PAGE_ID --blocks '[
      {"object":"block","type":"heading_2","heading_2":{"rich_text":[{"text":{"content":"Research Notes"}}]}},
      {"object":"block","type":"bulleted_list_item","bulleted_list_item":{"rich_text":[{"text":{"content":"Finding 1"}}]}},
      {"object":"block","type":"code","code":{"rich_text":[{"text":{"content":"console.log(1)"}}],"language":"javascript"}}
    ]'
    

    Advanced: Webhook Sync

    For bidirectional sync (Notion changes β†’ OpenClaw):

    1. Set up Notion webhook integration (requires Notion partner account) 2. Configure webhook endpoint to your OpenClaw Gateway 3. Skill processes incoming webhooks and updates memory files

    See references/webhooks.md for implementation details.


    Need help? Check your Notion integration settings at https://www.notion.so/my-integrations

    Using in OpenClaw

    Quick Setup

    # 1. Install
    cd ~/.agents/skills/notion
    npm install

    2. Configure token

    echo "NOTION_TOKEN=secret_xxxxxxxxxx" >> ~/.openclaw/.env

    3. Test connection

    node notion-cli.js test

    From OpenClaw Agent

    // Query database
    await exec({
      command: node ~/.agents/skills/notion/notion-cli.js query-database YOUR_DB_ID
    });

    // Add entry await exec({ command: node ~/.agents/skills/notion/notion-cli.js add-entry YOUR_DB_ID \\ --title "New Content Idea" \\ --properties '{"Status":{"select":{"name":"Idea"}}}' });

    // Search await exec({ command: node ~/.agents/skills/notion/notion-cli.js search "tree support" });

    Cron Job Usage

    Update your Research Topic Scout to push to Notion:

    "message": "Research trends and add to Notion: 
      node ~/.agents/skills/notion/notion-cli.js add-entry DB_ID 
        --title '' 
        --properties '{...,\"Platform\":{\"multi_select\":[{\"name\":\"X\"}]}}'"
    </code></pre>
    </p></div></section><section class="skill-card" style="margin-bottom:20px"><h2 style="color:#f8fafc;font-size:1.2em;font-weight:800;margin:0 0 16px;display:flex;align-items:center;gap:8px">βš™οΈ Configuration</h2><div style="font-size:.92em;color:#94a3b8;line-height:1.75"><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">1. Create Notion Integration</h4>
    1. Go to <a href="https://www.notion.so/my-integrations" target="_blank" rel="noopener" style="color:#6366f1">notion.so/my-integrations</a>
    2. Click <strong style="color:#e5e7eb">New integration</strong>
    3. Name it (e.g., "OpenClaw")
    4. Select your workspace
    5. Copy the <strong style="color:#e5e7eb">Internal Integration Token</strong> (starts with <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">secret_</code>)
    6. Save this token securely in OpenClaw config or environment: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">NOTION_TOKEN=secret_...</code></p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">2. Share Pages with Integration</h4>
    <strong style="color:#e5e7eb">Important:</strong> Notion integrations have NO access by default. You must explicitly share:</p><p style="margin:8px 0">1. Go to any page or database in Notion
    2. Click <strong style="color:#e5e7eb">Share</strong> β†’ <strong style="color:#e5e7eb">Add connections</strong>
    3. Select your "OpenClaw" integration
    4. The skill can now read/write to that specific page/database</p><p style="margin:8px 0"><h4 style="color:#d1d5db;margin:14px 0 6px;font-size:.95em">3. Get Database/Page IDs</h4></p><p style="margin:8px 0"><strong style="color:#e5e7eb">From URL:</strong>
    <li style="color:#94a3b8;margin:3px 0">Database: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">https://www.notion.so/workspace/XXXXXXXX?v=...</code> β†’ ID is <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">XXXXXXXX</code> (32 chars)</li>
    <li style="color:#94a3b8;margin:3px 0">Page: <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">https://www.notion.so/workspace/XXXXXXXX</code> β†’ ID is <code style="background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em">XXXXXXXX</code></li></p><p style="margin:8px 0"><strong style="color:#e5e7eb">Note:</strong> Remove hyphens when using IDs. Use the 32-character string.</p></div></section></div><div class="two-col-side"></div></div></div><script>
            document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn => {
              btn.addEventListener('click', () => {
                const cmd = btn.getAttribute('data-cmd');
                if (!cmd) return;
                navigator.clipboard.writeText(cmd).then(() => {
                  const orig = btn.textContent;
                  btn.textContent = 'Copied!';
                  setTimeout(() => btn.textContent = orig, 1500);
                }).catch(() => {});
              });
            });
          </script><!--$--><!--/$--></main><footer style="background:var(--bg-primary);border-top:1px solid var(--border-secondary);margin-top:60px"><div style="border-top:1px solid var(--border-light);max-width:1200px;margin:0 auto;padding:24px 20px"><div style="display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;margin-bottom:24px"><div><div style="font-weight:700;color:var(--text-muted);margin-bottom:8px">BytesAgain</div><div style="color:var(--text-muted3);font-size:.82em;max-width:200px">Discover the best AI agent skills for your workflow.</div></div><div><div style="color:var(--text-muted);font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Explore</div><div style="margin-bottom:6px"><a href="/skills" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Skills</a></div><div style="margin-bottom:6px"><a href="/articles" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Articles</a></div><div style="margin-bottom:6px"><a href="/use-case" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Cases</a></div></div><div><div style="color:var(--text-muted);font-size:.75em;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px">Company</div><div style="margin-bottom:6px"><a href="/about" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">About</a></div><div style="margin-bottom:6px"><a href="/contact" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Contact</a></div><div style="margin-bottom:6px"><a href="/privacy-policy" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Privacy Policy</a></div><div style="margin-bottom:6px"><a href="/terms" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Terms</a></div><div style="margin-bottom:6px"><a href="/feedback" style="color:var(--text-muted2);text-decoration:none;font-size:.85em">Feedback</a></div></div></div><div style="border-top:1px solid var(--border-light);padding-top:16px"><div style="color:var(--text-muted4);font-size:.8em;margin-bottom:8px">Β© <!-- -->2026<!-- --> BytesAgain. All rights reserved.</div><div style="color:var(--text-muted5);font-size:.75em;line-height:1.6;max-width:720px">BytesAgain is an independent skill directory. We index and link to third-party content (ClawHub, GitHub, LobeHub, Dify, etc.) for informational purposes only. All trademarks, skill names, and content are the property of their respective owners. BytesAgain does not claim ownership of any indexed content.</div></div></div></footer><button style="position:fixed;bottom:28px;right:28px;z-index:1000;width:48px;height:48px;border-radius:50%;border:none;cursor:pointer;background:linear-gradient(135deg,#667eea,#00d4ff);color:#fff;font-size:1.3em;box-shadow:0 4px 20px #667eea66;display:flex;align-items:center;justify-content:center;transition:transform .2s">πŸ’¬</button><script src="/_next/static/chunks/0ze4gu236oq96.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[62894,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"LangProvider\"]\n3:I[89220,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"ThemeProvider\"]\n4:I[16988,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\ne:I[68027,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\",1]\n:HL[\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"style\"]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:Td5e,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"description\":\"Search 60,000+ verified AI agent skills via MCP API or REST. Supports 7 languages. Free, no auth required.\",\"inLanguage\":[\"en\",\"zh\",\"es\",\"fr\",\"de\",\"ja\",\"ko\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https://bytesagain.com/skills?q={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}},{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"BytesAgain\",\"url\":\"https://bytesagain.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://bytesagain.com/og-image.png\"},\"description\":\"AI agent skill directory. Search 60,000+ skills, 1,000+ use cases, and community requests.\",\"foundingDate\":\"2026\",\"foundingLocation\":{\"@type\":\"Place\",\"name\":\"Global\"},\"sameAs\":[\"https://x.com/bytesagain\",\"https://github.com/bytesagain/ai-skills\",\"https://clawhub.ai/profile/bytesagain\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"email\":\"hello@bytesagain.com\",\"contactType\":\"customer support\"},\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"value\":1}},{\"@context\":\"https://schema.org\",\"@type\":\"WebApplication\",\"name\":\"BytesAgain AI Skills Search\",\"url\":\"https://bytesagain.com\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"Web\",\"description\":\"Search engine and MCP API for 60,000+ AI agent skills. Semantic search, role recommendations, and use case packs.\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\"},\"featureList\":[\"Search 60,000+ AI agent skills\",\"Role-based recommendations for developers, creators, and traders\",\"1,000+ curated use case packs\",\"Free MCP API and REST API\",\"Multi-language search (EN, ZH, ES, FR, DE, JA, KO)\"],\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":\"https://bytesagain.com/skills?q={search_term_string}\",\"query-input\":\"required name=search_term_string\"},\"dateModified\":\"2026-07-16\"},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"BytesAgain is a curated directory of 60,000+ AI agent skills from ClawHub, GitHub, LobeHub, and Dify. Search skills by keyword in 7 languages, browse by role (developer, creator, trader, marketer) or by use case.\"}},{\"@type\":\"Question\",\"name\":\"How do I find AI skills on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Use the search bar on BytesAgain.com to search by keyword in 7 languages. You can also browse by role (developer, creator, trader, marketer) or by use case. Each skill shows install instructions for Claude, Cursor, OpenClaw, Continue, and more.\"}},{\"@type\":\"Question\",\"name\":\"Is BytesAgain free?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, BytesAgain is completely free. No registration required for searching skills. The MCP API is also free with rate limits.\"}},{\"@type\":\"Question\",\"name\":\"Does BytesAgain have an API for AI agents?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! BytesAgain provides a free MCP SSE endpoint at /api/mcp/sse for AI agents, plus a REST API at /api/mcp?action=search\u0026q=\u003cquery\u003e. No authentication needed.\"}},{\"@type\":\"Question\",\"name\":\"Can I request a new AI skill on BytesAgain?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes! Visit the Requests page on BytesAgain.com to submit a skill request. Your request will be visible to the community and notified to the site admin.\"}}]}]"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"skill\",\"openclaw-notion-skill\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skill\",{\"children\":[[\"slug\",\"openclaw-notion-skill\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"llms\",\"href\":\"/llms.txt\"}],[\"$\",\"link\",null,{\"rel\":\"llms-full\",\"href\":\"/llms-full.txt\"}],[\"$\",\"script\",null,{\"async\":true,\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-3C1MM9FWYF\"}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n          window.dataLayer = window.dataLayer || [];\\n          function gtag(){dataLayer.push(arguments);}\\n          gtag('js', new Date());\\n          gtag('config', 'G-3C1MM9FWYF');\\n        \"}}]]}],[\"$\",\"body\",null,{\"className\":\"geist_9e050971-module__05dp7a__className\",\"style\":{\"margin\":0},\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[[\"$\",\"div\",null,{\"style\":{\"width\":\"100%\",\"background\":\"var(--bg-subscribe)\",\"borderBottom\":\"1px solid var(--border-primary)\",\"padding\":\"8px 20px\",\"textAlign\":\"center\",\"fontSize\":\".82em\",\"color\":\"#818cf8\"},\"children\":[\"🎁 \",[\"$\",\"strong\",null,{\"style\":{\"color\":\"var(--text-primary)\"},\"children\":\"Get the FREE AI Skills Starter Guide\"}],\" β€” \",[\"$\",\"a\",null,{\"href\":\"/register\",\"style\":{\"color\":\"#00d4ff\",\"textDecoration\":\"underline\"},\"children\":\"Subscribe β†’\"}]]}],[\"$\",\"$L4\",null,{}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$5\"}}],\"$L6\",\"$L7\",\"$L8\"]}]}]}]]}]]}],{\"children\":[\"$L9\",{\"children\":[\"$La\",{\"children\":[\"$Lb\",{},null,false,null]},null,false,\"$@c\"]},null,false,\"$@c\"]},null,false,null],\"$Ld\",false]],\"m\":\"$undefined\",\"G\":[\"$e\",[\"$Lf\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"10:I[39756,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n11:I[37457,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n12:I[22016,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0ka051yepewro.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"\"]\n13:I[90940,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n14:I[16397,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n16:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"OutletBoundary\"]\n17:\"$Sreact.suspense\"\n1a:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"ViewportBoundary\"]\n1c:I[97367,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"MetadataBoundary\"]\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"main\",null,{\"children\":[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"style\":{\"minHeight\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"background\":\"#050611\",\"color\":\"#e5e7eb\"},\"children\":[[\"$\",\"style\",null,{\"children\":\"\\n        .nf-box { text-align: center; padding: 60px 32px; }\\n        .nf-code { font-size: 6rem; font-weight: 900; color: #22d3ee; line-height: 1; margin: 0; }\\n        .nf-title { font-size: 1.8rem; font-weight: 800; margin: 12px 0 8px; }\\n        .nf-desc { color: var(--text-muted2); font-size: 1rem; margin-bottom: 32px; max-width: 440px; }\\n        .nf-link { display: inline-block; padding: 12px 28px; background: linear-gradient(135deg,#34d399,#22d3ee); color: #000; font-weight: 900; border-radius: 12px; text-decoration: none; }\\n      \"}],[\"$\",\"div\",null,{\"className\":\"nf-box\",\"children\":[[\"$\",\"p\",null,{\"className\":\"nf-code\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"nf-title\",\"children\":\"Page Not Found\"}],[\"$\",\"p\",null,{\"className\":\"nf-desc\",\"children\":\"The skill or page you're looking for doesn't exist or has been moved.\"}],[\"$\",\"$L12\",null,{\"className\":\"nf-link\",\"href\":\"/\",\"children\":\"Back to BytesAgain\"}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n"])</script><script>self.__next_f.push([1,"7:[\"$\",\"$L13\",null,{}]\n8:[\"$\",\"$L14\",null,{}]\n9:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L10\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L11\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nb:[\"$\",\"$1\",\"c\",{\"children\":[\"$L15\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L16\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@18\"}]}]]}]\n19:[]\nc:\"$W19\"\nd:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1a\",null,{\"children\":\"$L1b\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1c\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1d\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\nf:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/051nc0vy_6.rl.css?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"1e:I[27201,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"IconMark\"]\n18:null\n"])</script><script>self.__next_f.push([1,"1d:[[\"$\",\"title\",\"0\",{\"children\":\"Notion Enhanced β€” AI Agent Skill | BytesAgain | BytesAgain\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Integrate with Notion workspaces to read pages, query databases, create entries, and manage content.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"3\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"4\",{\"name\":\"llms-txt\",\"content\":\"https://bytesagain.com/llms.txt\"}],[\"$\",\"meta\",\"5\",{\"name\":\"llms-full-txt\",\"content\":\"https://bytesagain.com/llms-full.txt\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://bytesagain.com/skill/openclaw-notion-skill\"}],[\"$\",\"meta\",\"7\",{\"name\":\"baidu-site-verification\",\"content\":\"codeva-0evUqX1TFs\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"Notion Enhanced β€” AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"Integrate with Notion workspaces to read pages, query databases, create entries, and manage content.\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:url\",\"content\":\"https://bytesagain.com/skill/openclaw-notion-skill\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:site_name\",\"content\":\"BytesAgain\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"Notion Enhanced β€” AI Agent Skill | BytesAgain\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Integrate with Notion workspaces to read pages, query databases, create entries, and manage content.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://bytesagain.com/social-preview.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"$L1e\",\"23\",{}]]\n"])</script><script>self.__next_f.push([1,"1f:T1562,"])</script><script>self.__next_f.push([1,"\n        .skill-page { max-width: 1100px; margin: 0 auto; padding: 32px 20px 80px; }\n        .two-col { display: flex; gap: 32px; align-items: flex-start; }\n        .two-col-main { flex: 1; min-width: 0; }\n        .two-col-side { width: 300px; flex-shrink: 0; }\n        @media (max-width: 860px) {\n          .two-col { flex-direction: column; }\n          .two-col-side { width: 100%; }\n        }\n        .breadcrumb { font-size: .82em; color: var(--text-muted2); margin-bottom: 28px; }\n        .breadcrumb a { color: #818cf8; text-decoration: none; }\n        .breadcrumb a:hover { text-decoration: underline; }\n        .skill-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 20px; padding: 28px; margin-bottom: 24px; }\n        .skill-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }\n        .skill-badges { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n        .skill-top-actions { display: flex; align-items: center; gap: 10px; margin-left: auto; }\n        .badge { display: inline-flex; align-items: center; gap: 5px; font-size: .75em; font-weight: 600; padding: 4px 12px; border-radius: 999px; border: 1px solid transparent; }\n        .skill-title { font-size: 1.6em; font-weight: 800; color: var(--text-primary); margin: 0 0 4px; line-height: 1.2; }\n        .skill-owner { font-size: .82em; color: var(--text-muted2); margin: 0 0 14px; }\n        .skill-owner span { color: #818cf8; }\n        .skill-desc { font-size: .92em; color: var(--text-secondary); line-height: 1.65; margin: 0 0 16px; }\n        .skill-meta { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid var(--border-card); }\n        .meta-item { display: flex; flex-direction: column; gap: 2px; }\n        .meta-label { font-size: .7em; color: var(--text-muted5); text-transform: uppercase; letter-spacing: 1px; font-weight: 600; }\n        .meta-value { font-size: .92em; color: var(--text-muted2); font-weight: 600; }\n        .tags-row { display: flex; gap: 6px; flex-wrap: wrap; }\n        .tag { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 3px 10px; text-decoration: none; }\n        .tag:hover { background: #6366f125; }\n        .install-box { background: var(--bg-deep); border: 1px solid var(--border-card); border-radius: 12px; overflow: hidden; margin-bottom: 24px; }\n        .install-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-bottom: 1px solid var(--border-card); }\n        .install-dots { display: flex; gap: 6px; }\n        .dot { width: 10px; height: 10px; border-radius: 50%; }\n        .install-label { font-size: .72em; color: var(--text-muted5); font-family: monospace; letter-spacing: 1px; }\n        .install-body { padding: 16px 20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n        .install-cmd { color: var(--text-code);\n font-family: 'Courier New', monospace; font-size: 1em; }\n        .copy-btn { font-size: .75em; color: #6366f1; background: #6366f115; border: 1px solid #6366f130; border-radius: 6px; padding: 5px 12px; cursor: pointer; white-space: nowrap; transition: all .15s; }\n        .copy-btn:hover { background: #6366f125; }\n        .btn-secondary { display: inline-flex; align-items: center; gap: 8px; padding: 13px 24px; background: transparent; border: 1px solid var(--border-card); border-radius: 10px; color: #6b7280; text-decoration: none; font-weight: 600; font-size: .95em; transition: all .15s; }\n        .btn-secondary:hover { border-color: #818cf8; color: #818cf8; }\n        .ours-badge { display: inline-flex; align-items: center; gap: 6px; font-size: .72em; font-weight: 700; color: #22d3ee; background: #22d3ee10; border: 1px solid #22d3ee30; border-radius: 999px; padding: 4px 14px; }\n        .section-card { background: var(--bg-card); border: 1px solid var(--border-card); border-radius: 16px; padding: 22px 24px; margin-bottom: 20px; }\n        .section-title { color: var(--text-primary); font-size: 1.08em; font-weight: 800; margin: 0 0 12px; display: flex; align-items: center; gap: 8px; }\n        /* Script box */\n        .script-header { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; background: var(--bg-input); border-bottom: 1px solid var(--border-card); }\n        .script-filename { font-size: .72em; color: var(--text-muted2); font-family: 'Courier New', monospace; }\n        .script-copy-btn { font-size: .72em; color: #6366f1; background: none; border: 1px solid #6366f130; border-radius: 4px; padding: 2px 10px; cursor: pointer; }\n        .script-copy-btn:hover { background: #6366f115; }\n        .script-body { padding: 14px 16px; font-family: 'Courier New', monospace; font-size: .82em; line-height: 1.6; color: var(--text-code); overflow-x: auto; max-height: 420px; overflow-y: auto; white-space: pre; }\n        /* Articles */\n        .article-card { display: block; background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: 10px; padding: 14px 16px; text-decoration: none; transition: border-color .15s; }\n        .article-card:hover { border-color: #6366f1; }\n        @media (max-width: 600px) {\n          .skill-card { padding: 20px; }\n          .skill-title { font-size: 1.5em; }\n        }\n      "])</script><script>self.__next_f.push([1,"15:[[\"$\",\"style\",null,{\"children\":\"$1f\"}],\"$L20\",\"$L21\"]\n"])</script><script>self.__next_f.push([1,"22:I[78297,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"20:[\"$\",\"div\",null,{\"className\":\"skill-page\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"SoftwareApplication\\\",\\\"name\\\":\\\"Notion Enhanced\\\",\\\"description\\\":\\\"Integrate with Notion workspaces to read pages, query databases, create entries, and manage content. Perfect for knowledge bases, project tracking, content calendars, CRMs, and collaborative documentation. Works with any Notion page or database you explicitly share with the integration.\\\",\\\"url\\\":\\\"https://bytesagain.com/skill/openclaw-notion-skill\\\",\\\"applicationCategory\\\":\\\"clawhub\\\",\\\"operatingSystem\\\":\\\"Any\\\",\\\"offers\\\":{\\\"@type\\\":\\\"Offer\\\",\\\"price\\\":\\\"0\\\",\\\"priceCurrency\\\":\\\"USD\\\"},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"BytesAgain\\\",\\\"url\\\":\\\"https://bytesagain.com\\\"}}\"}}],[\"$\",\"div\",null,{\"className\":\"breadcrumb\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"children\":\"BytesAgain\"}],\" β€Ί \",[\"$\",\"a\",null,{\"href\":\"/skills\",\"children\":\"Skills\"}],\" β€Ί \",\"Notion Enhanced\"]}],[\"$\",\"div\",null,{\"className\":\"two-col\",\"children\":[[\"$\",\"div\",null,{\"className\":\"two-col-main\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"skill-badges\",\"children\":[[\"$\",\"span\",null,{\"className\":\"badge\",\"style\":{\"color\":\"#818cf8\",\"background\":\"#818cf822\",\"borderColor\":\"#818cf844\"},\"children\":[\"πŸ¦€\",\" \",\"ClawHub\"]}],false]}],[\"$\",\"div\",null,{\"className\":\"skill-top-actions\",\"children\":[\"$\",\"$L22\",null,{\"slug\":\"openclaw-notion-skill\"}]}]]}],[\"$\",\"h1\",null,{\"className\":\"skill-title\",\"children\":\"Notion Enhanced\"}],[\"$\",\"p\",null,{\"className\":\"skill-owner\",\"children\":[\"by \",[\"$\",\"span\",null,{\"children\":[\"@\",\"moikapy\"]}]]}],[\"$\",\"p\",null,{\"className\":\"skill-desc\",\"children\":\"Integrate with Notion workspaces to read pages, query databases, create entries, and manage content. Perfect for knowledge bases, project tracking, content calendars, CRMs, and collaborative documentation. Works with any Notion page or database you explicitly share with the integration.\"}],[\"$\",\"div\",null,{\"className\":\"skill-meta\",\"children\":[[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Version\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":[\"v\",\"0.1.0\"]}]]}],[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Downloads\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":\"3,091\"}]]}],[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Installs\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":\"11\"}]]}],[\"$\",\"div\",null,{\"className\":\"meta-item\",\"children\":[[\"$\",\"span\",null,{\"className\":\"meta-label\",\"children\":\"Stars\"}],[\"$\",\"span\",null,{\"className\":\"meta-value\",\"children\":[\"⭐ \",\"4\"]}]]}],false,[\"$\",\"div\",null,{\"className\":\"meta-item\",\"style\":{\"flexDirection\":\"row\",\"gap\":6,\"alignItems\":\"center\"},\"children\":[[\"$\",\"a\",\"database\",{\"href\":\"/?q=database\",\"className\":\"tag\",\"children\":[\"#\",\"database\"]}],[\"$\",\"a\",\"writing\",{\"href\":\"/?q=writing\",\"className\":\"tag\",\"children\":[\"#\",\"writing\"]}],[\"$\",\"a\",\"legal\",{\"href\":\"/?q=legal\",\"className\":\"tag\",\"children\":[\"#\",\"legal\"]}],[\"$\",\"a\",\"communication\",{\"href\":\"/?q=communication\",\"className\":\"tag\",\"children\":[\"#\",\"communication\"]}],[\"$\",\"a\",\"productivity\",{\"href\":\"/?q=productivity\",\"className\":\"tag\",\"children\":[\"#\",\"productivity\"]}]]}]]}],[\"$\",\"div\",null,{\"style\":{\"marginTop\":6},\"children\":[\"$\",\"a\",null,{\"href\":\"https://clawhub.ai/moikapy/openclaw-notion-skill\",\"target\":\"_blank\",\"rel\":\"noopener\",\"className\":\"btn-secondary\",\"style\":{\"padding\":\"6px 12px\",\"fontSize\":\".82em\",\"borderRadius\":8,\"background\":\"transparent\",\"border\":\"1px solid var(--border-card)\",\"color\":\"var(--text-muted2)\",\"textDecoration\":\"none\",\"whiteSpace\":\"nowrap\"},\"children\":[\"View on \",\"ClawHub\",\" β†’\"]}]}]]}],[\"$\",\"div\",null,{\"className\":\"install-box\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"install-dots\",\"children\":[[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#ef4444\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#eab308\"}}],[\"$\",\"div\",null,{\"className\":\"dot\",\"style\":{\"background\":\"#22c55e\"}}]]}],[\"$\",\"span\",null,{\"className\":\"install-label\",\"children\":\"TERMINAL\"}]]}],[\"$\",\"div\",null,{\"className\":\"install-body\",\"style\":{\"flexWrap\":\"wrap\"},\"children\":[\"$L23\",\"$L24\"]}]]}],\"$L25\",null,null,\"$L26\",null,null,null,null,false,false]}],\"$L27\"]}]]}]\n"])</script><script>self.__next_f.push([1,"21:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n        document.querySelectorAll('.copy-btn, .script-copy-btn').forEach(btn =\u003e {\\n          btn.addEventListener('click', () =\u003e {\\n            const cmd = btn.getAttribute('data-cmd');\\n            if (!cmd) return;\\n            navigator.clipboard.writeText(cmd).then(() =\u003e {\\n              const orig = btn.textContent;\\n              btn.textContent = 'Copied!';\\n              setTimeout(() =\u003e btn.textContent = orig, 1500);\\n            }).catch(() =\u003e {});\\n          });\\n        });\\n      \"}}]\n"])</script><script>self.__next_f.push([1,"2a:I[71521,[\"/_next/static/chunks/0ph_0rx9ah5dc.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/0i_x3w546rsb3.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/06ig5gym-0n-u.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\",\"/_next/static/chunks/12w5ognupk9fb.js?dpl=dpl_9zPFH6pojPkqyspdDNz28GzCc6KQ\"],\"default\"]\n23:[\"$\",\"code\",null,{\"className\":\"install-cmd\",\"children\":\"clawhub install openclaw-notion-skill\"}]\n24:[\"$\",\"button\",null,{\"className\":\"copy-btn\",\"data-cmd\":\"clawhub install openclaw-notion-skill\",\"style\":{\"fontWeight\":700},\"children\":\"Copy\"}]\n28:T7906,"])</script><script>self.__next_f.push([1,"\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\nname: notion\nversion: 0.1.0\ndescription: Integrate with Notion workspaces to read pages, query databases, create entries, and manage content. Perfect for knowledge bases, project tracking, content calendars, CRMs, and collaborative documentation. Works with any Notion page or database you explicitly share with the integration.\n\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eNotion Integration\u003c/h2\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eConnect your Notion workspace to OpenClaw for seamless knowledge management and project tracking.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eWhen to Use This Skill\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eUse Notion when the user wants to:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAdd items to a database\u003c/strong\u003e (backlog, todos, tracking)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCreate new pages\u003c/strong\u003e in a database or as children of existing pages  \u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eQuery/search\u003c/strong\u003e their Notion workspace for information\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eUpdate existing pages\u003c/strong\u003e (status, notes, properties)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eRead page content\u003c/strong\u003e or database entries\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSetup\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e1. Create Notion Integration\u003c/h4\u003e\n1. Go to \u003ca href=\"https://www.notion.so/my-integrations\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003enotion.so/my-integrations\u003c/a\u003e\n2. Click \u003cstrong style=\"color:#e5e7eb\"\u003eNew integration\u003c/strong\u003e\n3. Name it (e.g., \"OpenClaw\")\n4. Select your workspace\n5. Copy the \u003cstrong style=\"color:#e5e7eb\"\u003eInternal Integration Token\u003c/strong\u003e (starts with \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003esecret_\u003c/code\u003e)\n6. Save this token securely in OpenClaw config or environment: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eNOTION_TOKEN=secret_...\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e2. Share Pages with Integration\u003c/h4\u003e\n\u003cstrong style=\"color:#e5e7eb\"\u003eImportant:\u003c/strong\u003e Notion integrations have NO access by default. You must explicitly share:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. Go to any page or database in Notion\n2. Click \u003cstrong style=\"color:#e5e7eb\"\u003eShare\u003c/strong\u003e β†’ \u003cstrong style=\"color:#e5e7eb\"\u003eAdd connections\u003c/strong\u003e\n3. Select your \"OpenClaw\" integration\n4. The skill can now read/write to that specific page/database\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e3. Get Database/Page IDs\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eFrom URL:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eDatabase: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ehttps://www.notion.so/workspace/XXXXXXXX?v=...\u003c/code\u003e β†’ ID is \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eXXXXXXXX\u003c/code\u003e (32 chars)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePage: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ehttps://www.notion.so/workspace/XXXXXXXX\u003c/code\u003e β†’ ID is \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eXXXXXXXX\u003c/code\u003e\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eNote:\u003c/strong\u003e Remove hyphens when using IDs. Use the 32-character string.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eCore Operations\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eQuery Database\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eRetrieve entries from any database you've shared.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Using the Notion skill via exec\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js query-database ${databaseId}\u003c/code\u003e\n});\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// With filters (example: status = \"In Progress\")\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js query-database ${databaseId} --filter '{\"property\":\"Status\",\"select\":{\"equals\":\"In Progress\"}}'\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eReturns:\u003c/strong\u003e Array of pages with properties as configured in your database.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eAdd Database Entry\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eCreate a new row in a database.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Add entry with multiple properties\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js add-entry ${databaseId} \\\n    --title \"My New Content Idea\" \\\n    --properties '${JSON.stringify({\n      \"Status\": { \"select\": { \"name\": \"Idea\" } },\n      \"Platform\": { \"multi_select\": [{ \"name\": \"X/Twitter\" }] },\n      \"Tags\": { \"multi_select\": [{ \"name\": \"3D Printing\" }, { \"name\": \"AI\" }] },\n      \"Priority\": { \"select\": { \"name\": \"High\" } }\n    })}'\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eGet Page Content\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eRead the content of any page (including database entries).\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js get-page ${pageId}\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eReturns:\u003c/strong\u003e Page title, properties, and block content (text, headings, lists, etc.).\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eUpdate Page\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eModify properties or append content to an existing page.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Update properties\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js update-page ${pageId} \\\n    --properties '${JSON.stringify({\n      \"Status\": { \"select\": { \"name\": \"In Progress\" } }\n    })}'\u003c/code\u003e\n});\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Append content blocks\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js append-body ${pageId} \\\n    --text \"Research Notes\" --type h2\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eSearch Notion\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFind pages across your shared workspace.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js search \"content ideas\"\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eCommon Use Cases\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eContent Pipeline (Content Creator Workflow)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eDatabase Structure:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTitle (title)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eStatus (select: Idea β†’ Draft β†’ Scheduled β†’ Posted)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePlatform (multi_select: X/Twitter, YouTube, MakerWorld, Blog)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePublish Date (date)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eTags (multi_select)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eDraft Content (rich_text)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eOpenClaw Integration:\u003c/strong\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Research scout adds findings to Notion\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js add-entry ${contentDbId} \\\n    --title \"New 3D Print Technique\" \\\n    --properties '${JSON.stringify({\n      \"Status\": { \"select\": { \"name\": \"Idea\" } },\n      \"Platform\": { \"multi_select\": [{ \"name\": \"YouTube\" }] },\n      \"Tags\": { \"multi_select\": [{ \"name\": \"3D Printing\" }] }\n    })}'\u003c/code\u003e\n});\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Later: Update when drafting\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js update-page ${entryId} \\\n    --properties '${JSON.stringify({\n      \"Status\": { \"select\": { \"name\": \"Draft\" } },\n      \"Draft Content\": { \"rich_text\": [{ \"text\": { \"content\": \"Draft text here...\" } }] }\n    })}'\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eProject Management (Solo Entrepreneur)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eDatabase Structure:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eName (title)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eStatus (select: Not Started β†’ In Progress β†’ Blocked β†’ Done)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePriority (select: Low β†’ Medium β†’ High β†’ Critical)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eDue Date (date)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eEstimated Hours (number)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eActual Hours (number)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eLinks (url)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eNotes (rich_text)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eWeekly Review Integration:\u003c/strong\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Query all \"In Progress\" projects\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js query-database ${projectsDbId} --filter '{\"property\":\"Status\",\"select\":{\"equals\":\"In Progress\"}}'\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eCustomer/Quote CRM (3D Printing Business)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eDatabase Structure:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eCustomer Name (title)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eStatus (select: Lead β†’ Quote Sent β†’ Ordered β†’ Printing β†’ Shipped)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eEmail (email)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eQuote Value (number)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFilament Type (select)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eDue Date (date)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eShopify Order ID (rich_text)\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eShopify Integration:\u003c/strong\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// New order β†’ create CRM entry\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js add-entry ${crmDbId} \\\n    --title \"${customerName}\" \\\n    --properties '${JSON.stringify({\n      \"Status\": { \"select\": { \"name\": \"Ordered\" } },\n      \"Email\": { \"email\": customerEmail },\n      \"Shopify Order ID\": { \"rich_text\": [{ \"text\": { \"content\": orderId } }] }\n    })}'\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eKnowledge Base (Wiki Replacement for MEMORY.md)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eStructure:\u003c/strong\u003e Hub page with nested pages:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e🏠 Home (shared with integration)\u003c/li\u003e\n  - SOPs\n  - Troubleshooting\n  - Design Patterns\n  - Resource Links\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eQuery for quick reference:\u003c/strong\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Search for \"stringing\" to find 3D print troubleshooting\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js search \"stringing\"\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eProperty Types Reference\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eWhen creating/updating database entries, use these property value formats:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Title (always required for new pages)\n{ \"title\": [{ \"text\": { \"content\": \"Page Title\" } }] }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Select (single choice)\n{ \"select\": { \"name\": \"Option Name\" } }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Multi-select (multiple choices)\n{ \"multi_select\": [{ \"name\": \"Tag 1\" }, { \"name\": \"Tag 2\" }] }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Status (for new Status property type)\n{ \"status\": { \"name\": \"In progress\" } }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Text / Rich text\n{ \"rich_text\": [{ \"text\": { \"content\": \"Your text here\" } }] }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Number\n{ \"number\": 42 }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Date\n{ \"date\": { \"start\": \"2026-02-15\" } }\n{ \"date\": { \"start\": \"2026-02-15T10:00:00\", \"end\": \"2026-02-15T12:00:00\" } }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Checkbox\n{ \"checkbox\": true }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Email\n{ \"email\": \"user@example.com\" }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// URL\n{ \"url\": \"https://example.com\" }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Phone\n{ \"phone_number\": \"+1-555-123-4567\" }\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Relation (link to another database entry)\n{ \"relation\": [{ \"id\": \"related-page-id-32chars\" }] }\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSecurity \u0026 Permissions\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eCritical Security Model:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eβœ… Integration ONLY sees pages you explicitly share\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eβœ… You control access per page/database\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eβœ… Token stored securely in \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e~/.openclaw/.env\u003c/code\u003e (never in code)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e❌ Never commit \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eNOTION_TOKEN\u003c/code\u003e to git\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003e❌ Integration cannot access private teamspaces or other users' private pages\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eBest Practices:\u003c/strong\u003e\n1. Use a dedicated integration (don't reuse personal integrations)\n2. Share minimum necessary pages (granular \u003e broad)\n3. Rotate token if compromised via Notion integration settings\n4. Review shared connections periodically\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eEnvironment Setup\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eAdd to \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e~/.openclaw/.env\u003c/code\u003e:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eNOTION_TOKEN=secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eOr set per-command:\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003eNOTION_TOKEN=secret_xxx node notion-cli.js ...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eError Handling\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eCommon errors and fixes:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Error | Cause | Fix |\n|-------|-------|-----|\n| \"API token is invalid\" | Wrong token or integration deleted | Check token at notion.so/my-integrations |\n| \"object_not_found\" | Page not shared with integration | Share page: Share β†’ Add connections |\n| \"validation_error\" | Property format incorrect | Check property type in database |\n| \"rate_limited\" | Too many requests | Add delay between requests |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eQuick Install (One Command)\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003ecd ~/.agents/skills/notion\n./install.sh\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eManual install (if above fails):\u003c/strong\u003e\n\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003ecd ~/.agents/skills/notion\nnpm install\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eThat's it! No build step required for the standalone version.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eQuick Test\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# After setting NOTION_TOKEN in ~/.openclaw/.env\nnode notion-cli.js test\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eSmart ID Resolution\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eReference entries by \u003cstrong style=\"color:#e5e7eb\"\u003eNotion auto-ID\u003c/strong\u003e (e.g., \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e#3\u003c/code\u003e) or \u003cstrong style=\"color:#e5e7eb\"\u003edirect UUID\u003c/strong\u003e.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eBy Notion ID (Recommended for Manual Use)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eUse the number you see in your database's ID column:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Get entry #3\nnode notion-cli.js get-page '#3' DATABASE_ID\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd content to entry #3\u003c/h2\u003e\nnode notion-cli.js append-body '#3' --database DATABASE_ID \\\n  --text \"Research notes\" --type h2\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd bullet to entry #3\u003c/h2\u003e\nnode notion-cli.js append-body '#3' --database DATABASE_ID \\\n  --text \"Key finding\" --type bullet\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eBy Direct UUID (For Automation)\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Using full UUID from Notion URL\nnode notion-cli.js get-page 2fb3e4ac...\nnode notion-cli.js append-body 2fb3e4ac... \\\n  --text \"Content\" --type paragraph\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eAuto-detection:\u003c/strong\u003e Starts with \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003e#\u003c/code\u003e = Notion ID lookup. 32-char hex = Direct UUID.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003ePro Tip:\u003c/strong\u003e Add an \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eID\u003c/code\u003e property (type: unique ID) to auto-number entries as #1, #2, #3...\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003ePage Body Editing\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eAdd rich content to page bodies, not just properties.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eAppend Content Blocks\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Add heading\nnode notion-cli.js append-body PAGE_ID --text \"Research Summary\" --type h2\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd paragraph (default)\u003c/h2\u003e\nnode notion-cli.js append-body PAGE_ID --text \"Detailed findings go here...\"\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd bullet list item\u003c/h2\u003e\nnode notion-cli.js append-body PAGE_ID --text \"First key finding\" --type bullet\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd numbered list item\u003c/h2\u003e\nnode notion-cli.js append-body PAGE_ID --text \"Step one description\" --type numbered\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd TODO checkbox\u003c/h2\u003e\nnode notion-cli.js append-body PAGE_ID --text \"Create video script\" --type todo\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd quote\u003c/h2\u003e\nnode notion-cli.js append-body PAGE_ID --text \"Important quote from source\" --type quote\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003eAdd code block\u003c/h2\u003e\nnode notion-cli.js append-body PAGE_ID --text \"const result = optimizeSupports();\" --type code --lang javascript\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eSupported Block Types\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e| Type | Description | Example Use |\n|------|-------------|-------------|\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eparagraph\u003c/code\u003e | Regular text (default) | Descriptions, explanations |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eh1\u003c/code\u003e, \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eh2\u003c/code\u003e, \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eh3\u003c/code\u003e | Headings | Section organization |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ebullet\u003c/code\u003e | Bulleted list | Key findings, features |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enumbered\u003c/code\u003e | Numbered list | Step-by-step instructions |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003etodo\u003c/code\u003e | Checkbox item | Action items, tasks |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003equote\u003c/code\u003e | Blockquote | Source citations |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ecode\u003c/code\u003e | Code block | Snippets, commands |\n| \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003edivider\u003c/code\u003e | Horizontal line | Section separation |\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eGet Page with Body Content\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# Get full page including formatted body\nnode notion-cli.js get-page PAGE_ID\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eReturns:\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePage properties\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eFormatted body blocks (type + content preview)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eBlock count\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eAdvanced: Raw JSON Blocks\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor complex layouts, use raw Notion block JSON:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003enode notion-cli.js append-body PAGE_ID --blocks '[\n  {\"object\":\"block\",\"type\":\"heading_2\",\"heading_2\":{\"rich_text\":[{\"text\":{\"content\":\"Research Notes\"}}]}},\n  {\"object\":\"block\",\"type\":\"bulleted_list_item\",\"bulleted_list_item\":{\"rich_text\":[{\"text\":{\"content\":\"Finding 1\"}}]}},\n  {\"object\":\"block\",\"type\":\"code\",\"code\":{\"rich_text\":[{\"text\":{\"content\":\"console.log(1)\"}}],\"language\":\"javascript\"}}\n]'\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eAdvanced: Webhook Sync\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eFor bidirectional sync (Notion changes β†’ OpenClaw):\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. Set up Notion webhook integration (requires Notion partner account)\n2. Configure webhook endpoint to your OpenClaw Gateway\n3. Skill processes incoming webhooks and updates memory files\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eSee \u003ca href=\"references/webhooks.md\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003ereferences/webhooks.md\u003c/a\u003e for implementation details.\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003chr style=\"border:none;border-top:1px solid #1e1e3f;margin:12px 0\"\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eNeed help?\u003c/strong\u003e Check your Notion integration settings at https://www.notion.so/my-integrations\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch3 style=\"color:#e5e7eb;margin:18px 0 8px;font-size:1.05em\"\u003eUsing in OpenClaw\u003c/h3\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eQuick Setup\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e# 1. Install\ncd ~/.agents/skills/notion\nnpm install\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003e2. Configure token\u003c/h2\u003e\necho \"NOTION_TOKEN=secret_xxxxxxxxxx\" \u003e\u003e ~/.openclaw/.env\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch2 style=\"color:#f3f4f6;margin:20px 0 10px;font-size:1.15em\"\u003e3. Test connection\u003c/h2\u003e\nnode notion-cli.js test\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eFrom OpenClaw Agent\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e// Query database\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js query-database YOUR_DB_ID\u003c/code\u003e\n});\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Add entry\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js add-entry YOUR_DB_ID \\\\\n    --title \"New Content Idea\" \\\\\n    --properties '{\"Status\":{\"select\":{\"name\":\"Idea\"}}}'\u003c/code\u003e\n});\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e// Search\nawait exec({\n  command: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003enode ~/.agents/skills/notion/notion-cli.js search \"tree support\"\u003c/code\u003e\n});\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003eCron Job Usage\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003eUpdate your Research Topic Scout to push to Notion:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cpre style=\"background:#0a0a1c;border:1px solid #1e1e3f;border-radius:6px;padding:10px 12px;overflow-x:auto;font-size:.9em;margin:8px 0\"\u003e\u003ccode style=\"color:#a5f3fc;background:none;padding:0;font-size:1em\"\u003e\"message\": \"Research trends and add to Notion: \n  node ~/.agents/skills/notion/notion-cli.js add-entry DB_ID \n    --title '\u003ctitle\u003e' \n    --properties '{...,\\\"Platform\\\":{\\\"multi_select\\\":[{\\\"name\\\":\\\"X\\\"}]}}'\"\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/p\u003e"])</script><script>self.__next_f.push([1,"25:[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"πŸ“– About This Skill\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$28\"}}]]}]\n29:T8ee,"])</script><script>self.__next_f.push([1,"\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e1. Create Notion Integration\u003c/h4\u003e\n1. Go to \u003ca href=\"https://www.notion.so/my-integrations\" target=\"_blank\" rel=\"noopener\" style=\"color:#6366f1\"\u003enotion.so/my-integrations\u003c/a\u003e\n2. Click \u003cstrong style=\"color:#e5e7eb\"\u003eNew integration\u003c/strong\u003e\n3. Name it (e.g., \"OpenClaw\")\n4. Select your workspace\n5. Copy the \u003cstrong style=\"color:#e5e7eb\"\u003eInternal Integration Token\u003c/strong\u003e (starts with \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003esecret_\u003c/code\u003e)\n6. Save this token securely in OpenClaw config or environment: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eNOTION_TOKEN=secret_...\u003c/code\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e2. Share Pages with Integration\u003c/h4\u003e\n\u003cstrong style=\"color:#e5e7eb\"\u003eImportant:\u003c/strong\u003e Notion integrations have NO access by default. You must explicitly share:\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e1. Go to any page or database in Notion\n2. Click \u003cstrong style=\"color:#e5e7eb\"\u003eShare\u003c/strong\u003e β†’ \u003cstrong style=\"color:#e5e7eb\"\u003eAdd connections\u003c/strong\u003e\n3. Select your \"OpenClaw\" integration\n4. The skill can now read/write to that specific page/database\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003ch4 style=\"color:#d1d5db;margin:14px 0 6px;font-size:.95em\"\u003e3. Get Database/Page IDs\u003c/h4\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eFrom URL:\u003c/strong\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003eDatabase: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ehttps://www.notion.so/workspace/XXXXXXXX?v=...\u003c/code\u003e β†’ ID is \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eXXXXXXXX\u003c/code\u003e (32 chars)\u003c/li\u003e\n\u003cli style=\"color:#94a3b8;margin:3px 0\"\u003ePage: \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003ehttps://www.notion.so/workspace/XXXXXXXX\u003c/code\u003e β†’ ID is \u003ccode style=\"background:#0d0d1e;color:#a5f3fc;padding:1px 5px;border-radius:3px;font-size:.88em\"\u003eXXXXXXXX\u003c/code\u003e\u003c/li\u003e\u003c/p\u003e\u003cp style=\"margin:8px 0\"\u003e\u003cstrong style=\"color:#e5e7eb\"\u003eNote:\u003c/strong\u003e Remove hyphens when using IDs. Use the 32-character string.\u003c/p\u003e"])</script><script>self.__next_f.push([1,"26:[\"$\",\"section\",null,{\"className\":\"skill-card\",\"style\":{\"marginBottom\":20},\"children\":[[\"$\",\"h2\",null,{\"style\":{\"color\":\"#f8fafc\",\"fontSize\":\"1.2em\",\"fontWeight\":800,\"margin\":\"0 0 16px\",\"display\":\"flex\",\"alignItems\":\"center\",\"gap\":8},\"children\":\"βš™οΈ Configuration\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\".92em\",\"color\":\"#94a3b8\",\"lineHeight\":1.75},\"dangerouslySetInnerHTML\":{\"__html\":\"$29\"}}]]}]\n27:[\"$\",\"div\",null,{\"className\":\"two-col-side\",\"children\":[\"$\",\"$L2a\",null,{\"category\":\"clawhub\",\"currentSlug\":\"openclaw-notion-skill\",\"name\":\"Notion Enhanced\",\"tags\":[\"database\",\"writing\",\"legal\",\"communication\",\"productivity\"]}]}]\n"])</script></body></html>