bulk-update

bulk-update is a skill for Claude Code from 2aronS/notion-md-agent. It costs 21 tokens per session (787 once invoked), scanned A, a copy of bulk-update, MIT.

A workflow for changing properties or content on many pages in a Notion database. Notion is a workspace tool where databases store pages as structured records.

In plain words
What is it for?
Use it to find all matching database pages, review proposed changes in a dry run, apply updates after confirmation, and track successes or failures.
Why use it?
It avoids missing records beyond Notion’s 100-result query limit and provides a preview and recovery process before changes are made.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter.

Part of the notion-md-agent plugin — 2 skills shipped together

Good fit Use it to find all matching database pages, review proposed changes in…

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/2arons/notion-md-agent/bulk-update
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add 2aronS/notion-md-agent --skill bulk-update
Clone the repo
git clone --depth 1 https://github.com/2aronS/notion-md-agent

Made for: Claude Code.

Or install notion-md-agent, the plugin that ships this one along with the rest of its 2 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for bulk-update

README.md
[![agentmods](https://agentmods.dev/badge/skills/2arons/notion-md-agent/bulk-update.svg)](https://agentmods.dev/skills/2arons/notion-md-agent/bulk-update)
Your own site
<a href="https://agentmods.dev/skills/2arons/notion-md-agent/bulk-update"><img src="https://agentmods.dev/badge/skills/2arons/notion-md-agent/bulk-update.svg" alt="Measured on agentmods" height="20"></a>
Per session 21 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 787 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin 97% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00021 $0.00787
Opus 5 $0.00010 $0.00394
Sonnet 5 $0.00004 $0.00157
Haiku 4.5 $0.00002 $0.00079

Measured 6d ago against content hash 6912b744a67f, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

bulk-update scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

This is a copy

97% identical to bulk-update — 3 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

skills/bulk-update/SKILL.md · 105 lines

How it starts

The opening of the file, as written. The whole thing — 105 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Bulk Update

Update properties or content across many pages in a database safely.

Pagination (Critical)

Notion returns max 100 results per query. You MUST paginate to process all pages:

# First query
databases(action="query", database_id="<id>", filter={...}, page_size=100)
# Response includes: has_more=true, next_cursor="abc123"

# Continue until has_more=false
databases(action="query", database_id="<id>", filter={...}, page_size=100, start_cursor="abc123")

Never assume a single query returns all results. Always check has_more.

Dry-Run Mode

Before making any changes, ALWAYS show the user what will change:

  1. Query the database with the filter
  2. For each matching page, show:
    • Page title (current value)
    • What will change (old value -> new value)
    • Total count of affected pages
  3. Ask for explicit confirmation before proceeding

Example dry-run output:

Found 23 pages matching filter. Changes:

1. "Project Alpha" -- Status: "Active" -> "Archived"
2. "Project Beta" -- Status: "Active" -> "Archived"
...
(21 more)

Proceed with update? (yes/no)

Update Execution

After user confirms:

  1. Track progress -- maintain counters:

    • succeeded: pages updated successfully
    • failed: pages that errored (with page ID and error message)
    • skipped: pages already in target state
  2. Update each page:

    pages(action="update", page_id="<id>", properties={
      "Status": { "select": { "name": "Archived" } }
    })
    
  3. Rate limit awareness:

    • Notion rate limit: 3 requests/second average
    • For large batches (50+ pages), warn user it may take time
    • If you get 429 errors, pause and retry
  4. Error recovery:

    • Never stop on first error -- continue processing remaining pages
    • Collect all failures with their page IDs
    • After completion, report: "Updated 20/23 pages. 3 failed: [page IDs + error reasons]"
    • Offer to retry failed pages

Property Value Format

Remember the nested format (same as organize-database skill):

// Properties must use typed nested objects
{ "Status": { "select": { "name": "Done" } } }
{ "Tags": { "multi_select": [{ "name": "urgent" }, { "name": "review" }] } }
{ "Priority": { "number": 1 } }
{ "Reviewed": { "checkbox": true } }

Read the full file on GitHub · 105 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 6d ago First seen · 105 lines · 21 tokens per session scan A 6912b744a67f

Subscribe to this mod's changes

bulk-update is a skill published in the GitHub repository 2aronS/notion-md-agent (9 stars, last pushed 3mo ago), licensed MIT. It adds 21 tokens to every session and 787 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. It is 97% identical to bulk-update, differing in 3 lines, and is treated as a copy.