Notion Content Pipeline

ReviewAudited by ClawScan on May 10, 2026.

Overview

This mostly matches a Notion markdown-sync tool, but it deserves review because it can change Notion content and one workflow uses a hard-coded Notion database fallback plus an optional external helper script.

Before installing, treat this as a Notion read/write automation. Set NOTION_PARENT_PAGE_ID, NOTION_SYNC_MAP, and especially NOTION_PIPELINE_DB_ID explicitly; run --dry-run before advance; use --no-overwrite for cautious pushes; and review or skip the external fact-checker helper.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If the token has access to that database, the skill could update the wrong Notion pipeline entry; otherwise it may fail in a confusing way.

Why it was flagged

If the user does not set NOTION_PIPELINE_DB_ID, the script falls back to a specific hard-coded database ID and can patch Notion page status using the user's Notion token.

Skill content
PIPELINE_DB_ID = os.environ.get("NOTION_PIPELINE_DB_ID", "312c9a82-0734-81bd-81a6-e58d0365e404") ... _req("patch", f"/pages/{page_id}", key, json={"properties": {"Status": {"select": {"name": new_status}}}}, timeout=15)
Recommendation

Require an explicit NOTION_PIPELINE_DB_ID or use the database ID created for the user. Run with --dry-run first and verify the target database before allowing status updates.

What this means

Running the advance command may execute code from another installed skill with access to the content file and environment credentials.

Why it was flagged

The advance workflow can execute a sibling skill's fact-checker script that is not included in this artifact set; the subprocess call does not show environment sanitization, so the helper may inherit the required Notion token and other environment values.

Skill content
FACT_CHECKER_SCRIPT = _WORKSPACE / "skills" / "fact-checker" / "scripts" / "fact_check.py" ... result = subprocess.run([PYTHON, str(FACT_CHECKER_SCRIPT), str(file_path)], capture_output=True, text=True, timeout=120)
Recommendation

Review or pin the fact-checker dependency before use, sanitize the subprocess environment, or use --skip-factcheck unless the helper is trusted.

What this means

A mistaken push can replace the tracked Notion page and change the sync map.

Why it was flagged

The default push behavior intentionally mutates Notion by archiving an existing page and creating a replacement. This is disclosed and purpose-aligned, but it is a high-impact action.

Skill content
On `push`, if the file is already tracked, the existing Notion page is archived and a fresh page is created. ... Use `--no-overwrite` to skip if already pushed.
Recommendation

Back up important Notion pages, use --no-overwrite when appropriate, and test with a sandbox page before bulk syncing.

What this means

The map may reveal local file names and Notion page IDs, and incorrect entries could sync the wrong page.

Why it was flagged

The skill relies on persistent local state that maps local file paths to Notion page IDs; stale or edited mappings can affect future push/pull targets.

Skill content
File ↔ Notion page ID mapping stored in JSON. ... Default location: `./notion_sync_map.json`
Recommendation

Keep the sync map private, review it before important syncs, and store it in a project-specific location.