一键导入
notion-context
Fetch project-scoped context from Notion using the official REST API for use in <workplace>ProjectSync and other orchestrators.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Fetch project-scoped context from Notion using the official REST API for use in <workplace>ProjectSync and other orchestrators.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Thin shell wrapper over the Linear GraphQL API for use from agent directives. Reads Linear projects + issues, creates/updates issues, resolves viewers/cycles/labels/project IDs. Replaces the legacy src/linear/*.ts; orchestration logic now lives in vault directives (linear-import.md, linear-uplink.md), this skill only owns the HTTP boundary.
Multi-reference image composition via fal-ai/nano-banana/edit. Use when a directive needs to combine 2+ reference images into a single composed output (character + location, brand sigil + character, multi-character ensemble shot, etc.). Sister tool: bible-to-prompt assembles a canonical prompt from a character/location bible MD before calling nano-compose.
Fire a single openclaw notification per runtime contract (notifications). Always echoes to stdout in §15.4 format; also dispatches via openclaw CLI if OPENCLAW_NOTIFY_TARGET is set. Replaces src/notify/notify.ts (99 LOC); batching responsibility shifts to callers.
Read, write, and search Obsidian vault markdown files
Spawn a Claude Code or Cursor agent in non-interactive mode (`--print` style) with a prompt + repo workspace. Replaces src/agents/{claudeCodeSpawn,cursorSpawn,spawnAgent}.ts (179 LOC).
Master audio to streaming-spec LUFS (two-pass ffmpeg loudnorm) and concatenate multiple mastered files into one with silence gaps. Use when a directive needs podcast/album/narration audio prepared for Spotify, YouTube, Apple Podcasts, etc. One skill, many callers — pass --codec and --target-lufs to tune per platform.
| name | notion-context |
| description | Fetch project-scoped context from Notion using the official REST API for use in <workplace>ProjectSync and other orchestrators. |
| version | 0.1.0 |
| author | <the-author> |
| metadata | {"clawdbot":{"emoji":"🧱","requires":["curl","jq"]}} |
Fetch structured project context from Notion using the official REST API so orchestrators (e.g. ProjectSync) can enrich phase roadmaps and knowledge nodes.
Create an .env for this skill at:
~/clawd/skills/notion-context/.env
with at least:
NOTION_API_KEY=secret_xxx # Notion integration token
NOTION_SEARCH_FILTER=<workplace> # Optional: string to filter search results
NOTION_MAX_RESULTS=10 # Optional: cap number of pages per query (default 10)
Permissions:
NOTION_API_KEY.This skill uses the official Notion REST API:
https://api.notion.com/v1Notion-Version: 2022-06-28 (or newer)Authorization: Bearer ${NOTION_API_KEY}Primary endpoint used:
POST https://api.notion.com/v1/search
Content-Type: application/json
Authorization: Bearer ${NOTION_API_KEY}
Notion-Version: 2022-06-28
{
"query": "AI Notes v2",
"filter": { "value": "page", "property": "object" },
"sort": { "direction": "descending", "timestamp": "last_edited_time" }
}
The script normalizes results to a compact JSON shape suitable for feeding into project-atomizer and vault-graph-builder.
Main script:
node ~/clawd/skills/notion-context/scripts/fetch-project-context.js \
--project-name "AI Notes v2" \
--output /tmp/notion-context-ai-notes-v2.json
Flags:
--project-name (required): Name of the project (e.g. Linear project name) to search for.--limit (optional): Max pages to return (defaults to NOTION_MAX_RESULTS or 10).--output (optional): File path to write JSON to. If omitted, JSON is printed to stdout.Exit codes:
0 — success1 — missing env or invalid args2 — Notion API/network errorThe script returns JSON like:
{
"project": "AI Notes v2",
"query": "AI Notes v2",
"pages": [
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"title": "AI Notes v2 – Design Spec",
"url": "https://www.notion.so/...",
"last_edited_time": "2026-03-18T12:34:56.000Z",
"icon": "📝",
"cover": null,
"summary": "Short plain-text preview of the page (first few lines)."
}
],
"meta": {
"total": 1,
"fetched_at": "2026-03-18T12:35:00.000Z"
}
}
Notes:
summary is derived from the first few non-empty text blocks if available.To use this skill inside your-sync.js:
Add a script reference in the orchestrator:
const SCRIPT = {
fetchLinear: ...,
atomize: ...,
buildVault: ...,
applyPlan: ...,
notionCtx: resolve(SKILLS, "notion-context/scripts/fetch-project-context.js"),
};
After linear-fetch (once the project is known), call the Notion skill:
// After selecting `project`
const notionArgs = ["--project-name", project.name];
const notionResult = runScript(SCRIPT.notionCtx, notionArgs);
let notionContext = null;
if (notionResult.ok && notionResult.stdout) {
try {
notionContext = JSON.parse(notionResult.stdout);
} catch {
console.error("[your-sync] WARN: failed to parse Notion context JSON");
}
}
Attach the context to the roadmap before atomization (or pass it alongside):
atomize-project to accept Notion context via stdin/flags.Example: in buildKnowledge, if rm.metadata.notion.pages.length > 0, append a section:
## 📎 External Docs (Notion)
- [AI Notes v2 – Design Spec](https://www.notion.so/...)
- [...]
NOTION_MAX_RESULTS and uses a single search call per invocation (no heavy crawling).This keeps Notion integration simple, robust, and safe to call inside automation pipelines.