services/openclaw/integrations.md

OpenClaw Integrations (Notion, Gog, Brave Search)

📝 Notion Integration

Set up to read/write pages, databases, and blocks.

Configuration

# API key stored at:
~/.config/notion/api_key

# Integration secret:
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

Pages must be shared with the integration to be accessible.

Note (2026-09-27): Notion is no longer used for Dom's to-do tracking — that moved to Google Tasks via the personal-todos skill. This integration is kept for other page/database work, not tasks.

📧 Gog — Google Workspace CLI

CLI for Gmail, Calendar, Drive, Contacts, Docs, Sheets via gogcli.

Setup: brew install gogcli/tap/gogcli Full docs: See documents/dev/gog.md in personal notes.

Credentials: ~/.config/gog/client_secret_598032504491-...json GCP Project: general-ai-testing (general-ai-testing-451915)

Email Auto-Filing Rules

Cron-based email filing using gog + Gmail API. Scripts in ~/Work/llm_tools/.

Rule 1: News/Articles → _news label (Label_56)

Files incoming newsletters and articles from known senders. Runs every 10 min via crontab.

Script: ~/Work/llm_tools/file-news-emails.sh

Matched senders:

Source Domains
WIRED wired.com, newsletters.wired.com
Washington Post washingtonpost.com, nl.mail.washingtonpost.com
Benedict Evans ben-evans.com
Medium medium.com
Product Hunt producthunt.com, digest.producthunt.com
NYT nytimes.com

How it works:

  • Searches unread inbox mail from these senders (is:unread -label:_news (from:...)
  • Adds _news label (internal ID: Label_56) and removes INBOX (archives)
  • Gmail modifies need Label_56 not _news in the --add flag
  • Gmail search API is unreliable for old messages — direct users.messages.list API calls work better for historical backfill

Important quirks:

  • Gmail search API only returns ~10% of actual inbox messages. For full-backfill scripts, use users.messages.list?labelIds=INBOX via OAuth directly (see file-inbox-news.py)
  • gog gmail messages modify needs the internal label ID (Label_56) not the display name (_news)
  • ^ The name _news works for gog gmail labels create _news and search queries, but not for modify --add

Log: /tmp/file-news-emails.log

🔍 Brave Search Integration

Web search capability via Brave Search API. Two methods available:

API Key

BSAcw_h1oRyXEYiSrfDjGehMCf72Oi7

Stored in config at: ~/.openclaw/openclaw.json under tools.web.search.braveApiKey

Method 1: Built-in web_search Tool

Max can use web_search() directly in conversations. Configured in openclaw.json:

"tools": {
  "web": {
    "search": {
      "enabled": true,
      "braveApiKey": "BSAcw_h1oRyXEYiSrfDjGehMCf72Oi7"
    },
    "fetch": {
      "enabled": true
    }
  }
}

Method 2: ClawdHub brave-search Skill

Installed via ClawdHub CLI to ~/.openclaw/workspace/skills/brave-search

Installation

cd ~/.openclaw/workspace
clawdhub install brave-search
cd skills/brave-search
npm ci

Usage

cd ~/.openclaw/workspace/skills/brave-search

# Basic search
BRAVE_API_KEY="BSAcw_h1oRyXEYiSrfDjGehMCf72Oi7" node search.js "query"

# More results
BRAVE_API_KEY="BSAcw_h1oRyXEYiSrfDjGehMCf72Oi7" node search.js "query" -n 10

# Include page content
BRAVE_API_KEY="BSAcw_h1oRyXEYiSrfDjGehMCf72Oi7" node search.js "query" --content

# Extract content from URL
BRAVE_API_KEY="BSAcw_h1oRyXEYiSrfDjGehMCf72Oi7" node content.js https://example.com

Get API key at: https://api.search.brave.com/