🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.9 KiB
5.9 KiB
Notion Organizer Examples
Quick Reference: Common Tasks
1. Database Audit
Request:
Audit my "Client Projects" database and recommend optimizations
Expected Actions:
- Fetch database schema using MCP
- Analyze properties: types, naming, usage
- Report findings in Korean
- Recommend specific improvements
Sample Output:
## Database Audit: Client Projects
### 현재 구조 (Current Structure)
- Properties: 15개
- 페이지 수: 234개
### 발견된 문제점 (Issues Found)
1. **중복 속성**: "담당자"와 "Assignee" 동일한 용도
2. **미사용 속성**: "Legacy ID" - 모든 값이 비어있음
3. **명명 불일치**: "due_date" vs "Due Date" vs "마감일"
### 권장 조치 (Recommendations)
1. "담당자"와 "Assignee" 통합 → "담당자"로 유지
2. "Legacy ID" 속성 삭제
3. 명명 규칙 통일: Title Case 권장
2. Bulk Status Update
Request:
Change all pages with status "Pending Review" to "In Review"
in the Tasks database
Tier 1 Approach (MCP):
# Claude uses MCP tools:
1. mcp__notion__query-database with filter:
{"property": "Status", "select": {"equals": "Pending Review"}}
2. For each page, mcp__notion__update-page:
{"Status": {"select": {"name": "In Review"}}}
Tier 3 Approach (Python - for 50+ pages):
python scripts/async_organizer.py \
--database-id abc123 \
--operation status-update \
--old-status "Pending Review" \
--new-status "In Review" \
--dry-run # Test first!
3. Schema Migration
Request:
Migrate data from "Old Projects" to "New Projects" database.
Map Status→Stage, Due Date→Deadline, Tags→Categories
Step 1: Generate Mapping Template
python scripts/schema_migrator.py \
--source-db old_projects_id \
--target-db new_projects_id \
--generate-mapping \
--output my_mapping.json
Step 2: Customize Mapping
Edit my_mapping.json:
{
"Status": {
"target": "Stage",
"value_mapping": {
"Todo": "Backlog",
"Doing": "In Progress",
"Done": "Complete"
}
}
}
Step 3: Execute Migration
# Dry run first
python scripts/schema_migrator.py \
--source-db old_projects_id \
--target-db new_projects_id \
--mapping my_mapping.json \
--dry-run
# Execute
python scripts/schema_migrator.py \
--source-db old_projects_id \
--target-db new_projects_id \
--mapping my_mapping.json
4. Property Cleanup
Request:
Standardize all property names in "Marketing Campaigns"
to Title Case with spaces
Before:
- campaign_name → Campaign Name
- startDate → Start Date
- end-date → End Date
- STATUS → Status
- assigned_to → Assigned To
MCP Approach:
Use mcp__notion__update-database to rename properties:
{
"properties": {
"campaign_name": { "name": "Campaign Name" },
"startDate": { "name": "Start Date" },
"end-date": { "name": "End Date" },
"STATUS": { "name": "Status" }
}
}
5. Duplicate Detection
Request:
Find duplicate entries in "Contacts" database based on email
Python Script Approach:
# Pseudocode for duplicate detection
pages = fetch_all_pages(database_id)
# Group by email
email_groups = {}
for page in pages:
email = get_property(page, "Email")
if email:
email_groups.setdefault(email, []).append(page)
# Find duplicates
duplicates = {
email: pages
for email, pages in email_groups.items()
if len(pages) > 1
}
# Report
for email, dup_pages in duplicates.items():
print(f"Duplicate: {email}")
for p in dup_pages:
print(f" - {get_title(p)} (created: {p['created_time']})")
6. Archive Old Content
Request:
Move all tasks completed more than 90 days ago to Archive database
Filter:
{
"and": [
{
"property": "Status",
"status": { "equals": "Complete" }
},
{
"property": "Completed Date",
"date": {
"before": "2025-09-07"
}
}
]
}
Process:
- Query with filter
- For each page:
- Create copy in Archive database
- Update original with "Archived" status or delete
- Report summary
7. Relation Audit
Request:
Find all pages in "Tasks" that have broken relations to "Projects"
Approach:
- Fetch all Tasks pages
- For each task, check Project relation
- Verify referenced Project page exists
- Report broken relations
Sample Output:
## Relation Audit: Tasks → Projects
총 작업: 150개
정상 연결: 142개
끊어진 연결: 8개
### 끊어진 연결 목록:
1. "Website Redesign Phase 2" → Project not found
2. "Q3 Marketing Review" → Project deleted
...
### 권장 조치:
- 삭제된 프로젝트 복원 또는
- 해당 작업들을 다른 프로젝트에 재할당
Environment Setup
Quick Start
# Navigate to scripts directory
cd ~/.claude/skills/notion-organizer/scripts
# Create virtual environment
python -m venv venv
source venv/bin/activate # macOS/Linux
# Install dependencies
pip install -r requirements.txt
# Set environment variable
export NOTION_TOKEN="your_token_here"
# Or create .env file with NOTION_TOKEN=your_token
Verify Setup
# Test with audit (read-only)
python async_organizer.py --database-id YOUR_DB_ID --operation audit
Troubleshooting
Rate Limit Errors (429)
- Scripts automatically retry with exponential backoff
- If persistent, reduce
MAX_CONCURRENT_REQUESTSto 2
Permission Errors (404)
- Ensure database is shared with your integration
- Check integration has correct capabilities
Property Type Mismatch
- Use
--generate-mappingto see current types - Some conversions require manual handling (e.g., people → text)
Large Databases (1000+ pages)
- Always use Python scripts, not MCP
- Consider running in batches with checkpoints
- Monitor API usage in Notion settings