Skip to content
Back to skills

Bulk Update

ASecurity

Update properties or content across many pages in a Notion database with dry-run and error recovery

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentsgodatabase

Works with

  • cursor

Security analysis

A100/100

Scanned September 2, 2026

npx -y skills add n24q02m/claude-plugins --skill bulk-update --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bulk Update?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bulk Update
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/n24q02m-bulk-update/badge)](https://www.skillsdirectory.com/skills/n24q02m-bulk-update)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bulk-update
description: Update properties or content across many pages in a Notion database with dry-run and error recovery
argument-hint: "[database name] [what to change]"
---

# 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):
```jsonc
// Properties must use typed nested objects
{ "Status": { "select": { "name": "Done" } } }
{ "Tags": { "multi_select": [{ "name": "urgent" }, { "name": "review" }] } }
{ "Priority": { "number": 1 } }
{ "Reviewed": { "checkbox": true } }
```

## Common Bulk Operations

- **Change status**: Filter by old status, update to new status
- **Add/remove tags**: Read existing multi_select, merge/filter, write back
- **Set dates**: Update date properties across filtered pages
- **Archive**: Set `archived: true` on pages matching criteria
- **Clear field**: Set property to empty value (e.g., `{ "rich_text": [] }`)

## When to Use

- Renaming a category/tag across all pages
- Bulk-archiving completed or old items
- Adding a new tag to all pages matching a filter
- Resetting or populating a property across many pages
- Mass status transitions (e.g., sprint closeout)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.