services/openclaw/integrations.md
Table of Contents
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-todosskill. 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
_newslabel (internal ID:Label_56) and removes INBOX (archives) - Gmail modifies need
Label_56not_newsin the--addflag - Gmail search API is unreliable for old messages — direct
users.messages.listAPI 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=INBOXvia OAuth directly (seefile-inbox-news.py) gog gmail messages modifyneeds the internal label ID (Label_56) not the display name (_news)- ^ The name
_newsworks forgog gmail labels create _newsand search queries, but not formodify --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/