Add File to Notion Database
Trigger
When the user asks to add a local file (markdown, text, etc.) to a Notion database, e.g.:
- "add X to Notion Control Center"
- "send this file to Notion DB"
- "create a Notion page from this file in [database name]"
Inputs
- File path — local file to add (required)
- Database name — Notion database to add to (default: "Control Center")
- Status — property value like "To do", "To review", etc. (optional)
- Title override — custom page title; defaults to file's H1 heading or filename (optional)
- Properties — any additional properties to set (optional)
Control Center Schema (Quick Reference)
Database ID: 32b9a1fd-a351-8064-9375-dc9a8f839d7a
Data source: collection://32b9a1fd-a351-809d-bd4d-000b0d579048
| Property |
Type |
Values |
| Name |
title |
— |
| Status |
status |
To do, Need input, In progress, To review, Done |
| Project |
select |
WeDance, ikigai, razbakov.com, sdtv, smm-manager, facts-collector, montuno-club, dancegods, dancegodscompany, brievcase, voice-assistant, tasks-dashboard, call-agent, skill-mix, cv, web100, ai-study-group |
| Priority |
select |
🔴 High, 🟡 Medium, 🟢 Low |
| GTD Type |
select |
Action, Content Idea, Reference, Someday, Rule |
| Source |
select |
Telegram, Manual, Daily Review, Agent, Bookmark |
| Telegram ID |
number |
message ID |
| Due Date |
date |
any |
| Effort |
select |
S, M, L |
Process
Step 1: Read the local file
Read the file to get its content. Extract the H1 heading as the default title.
Step 2: Infer properties from content
Analyze the file content and any user-provided context to set:
- Project — infer from keywords, file path, or content (e.g. "dance" → WeDance, "blog" → razbakov.com, "recipe" → ikigai). Always set this.
- GTD Type — classify: is it an Action (something to do), Content Idea (something to write/create), Reference (info to file), Someday (nice-to-have), or Rule (behavioral rule)?
- Priority — 🔴 High if deadline-driven or blocking, 🟡 Medium for important but not urgent, 🟢 Low for nice-to-have
- Source — set based on where it came from (Telegram, Daily Review, Bookmark, Manual, Agent)
- Effort — S (<1h), M (1-4h), L (4h+)
- Telegram ID — if source is Telegram and message ID is known
Step 3: Search Notion for the database (if not Control Center)
notion-search(query: "<database name>", page_size: 5, max_highlight_length: 0)
Find the database by name. Confirm it's type: "database".
For Control Center, skip search — use the known IDs above.
Step 4: Fetch database schema (if not Control Center)
notion-fetch(id: "<database_id>")
From the response, extract:
- Data source ID from
<data-source url="collection://<data_source_id>">
- Schema — property names, types, and allowed values
Step 5: Create the page
notion-create-pages(
parent: { data_source_id: "<data_source_id>" },
pages: [{
properties: {
"Name": "<title>",
"Status": "<status>",
"Project": "<project>",
"GTD Type": "<gtd_type>",
"Priority": "<priority>",
"Source": "<source>",
"Effort": "<effort>",
"Telegram ID": <telegram_id_or_null>
},
content: "<file content adapted to Notion markdown>",
icon: "<emoji>"
}]
)
Content adaptation rules:
- Remove the H1 heading from content (it becomes the page title)
- Keep tables, bold, links, lists — Notion markdown supports them
- For very long files, include a summary version with a reference to the local file path at the bottom
- Add an icon emoji that matches the content topic
S3 Analysis (required for Control Center):
When adding to the Control Center database, prepend S3 analysis before the file content:
## S3 Analysis
### Tension
[1-2 sentences — what gap or dissonance prompted this]
### Driver
| Conditions | Effect | Relevance |
|------------|--------|-----------|
| [observable facts] | [consequences] | [why it matters for mission/OKRs] |
### Requirement
> [who] needs [conditions] so that [outcomes]
### Response Options
- [ ] [concrete action A]
- [ ] [alternative approach B]
- [ ] [defer/skip option]
---
[file content below]
Step 6: Confirm
Return the Notion page URL to the user.
Multi-task messages
A single Telegram message may contain multiple actions. When processing:
- Split into separate Notion cards — one per actionable item
- Each card references the same Telegram ID
- Each card gets its own GTD Type, Priority, and Effort
Output
- Notion page URL(s)
- Confirmation of title, database, project, and all properties set
1---2name: notion-add-to-db3description: Add File to Notion Database4---5# Add File to Notion Database67## Trigger8When the user asks to add a local file (markdown, text, etc.) to a Notion database, e.g.:9- "add X to Notion Control Center"10- "send this file to Notion DB"11- "create a Notion page from this file in [database name]"1213## Inputs141. **File path** — local file to add (required)152. **Database name** — Notion database to add to (default: "Control Center")163. **Status** — property value like "To do", "To review", etc. (optional)174. **Title override** — custom page title; defaults to file's H1 heading or filename (optional)185. **Properties** — any additional properties to set (optional)1920## Control Center Schema (Quick Reference)21Database ID: `32b9a1fd-a351-8064-9375-dc9a8f839d7a`22Data source: `collection://32b9a1fd-a351-809d-bd4d-000b0d579048`2324| Property | Type | Values |25|----------|------|--------|26| Name | title | — |27| Status | status | To do, Need input, In progress, To review, Done |28| Project | select | WeDance, ikigai, razbakov.com, sdtv, smm-manager, facts-collector, montuno-club, dancegods, dancegodscompany, brievcase, voice-assistant, tasks-dashboard, call-agent, skill-mix, cv, web100, ai-study-group |29| Priority | select | 🔴 High, 🟡 Medium, 🟢 Low |30| GTD Type | select | Action, Content Idea, Reference, Someday, Rule |31| Source | select | Telegram, Manual, Daily Review, Agent, Bookmark |32| Telegram ID | number | message ID |33| Due Date | date | any |34| Effort | select | S, M, L |3536## Process3738### Step 1: Read the local file39Read the file to get its content. Extract the H1 heading as the default title.4041### Step 2: Infer properties from content42Analyze the file content and any user-provided context to set:43- **Project** — infer from keywords, file path, or content (e.g. "dance" → WeDance, "blog" → razbakov.com, "recipe" → ikigai). Always set this.44- **GTD Type** — classify: is it an Action (something to do), Content Idea (something to write/create), Reference (info to file), Someday (nice-to-have), or Rule (behavioral rule)?45- **Priority** — 🔴 High if deadline-driven or blocking, 🟡 Medium for important but not urgent, 🟢 Low for nice-to-have46- **Source** — set based on where it came from (Telegram, Daily Review, Bookmark, Manual, Agent)47- **Effort** — S (<1h), M (1-4h), L (4h+)48- **Telegram ID** — if source is Telegram and message ID is known4950### Step 3: Search Notion for the database (if not Control Center)51```52notion-search(query: "<database name>", page_size: 5, max_highlight_length: 0)53```54Find the database by name. Confirm it's `type: "database"`.55For Control Center, skip search — use the known IDs above.5657### Step 4: Fetch database schema (if not Control Center)58```59notion-fetch(id: "<database_id>")60```61From the response, extract:62- **Data source ID** from `<data-source url="collection://<data_source_id>">`63- **Schema** — property names, types, and allowed values6465### Step 5: Create the page66```67notion-create-pages(68 parent: { data_source_id: "<data_source_id>" },69 pages: [{70 properties: {71 "Name": "<title>",72 "Status": "<status>",73 "Project": "<project>",74 "GTD Type": "<gtd_type>",75 "Priority": "<priority>",76 "Source": "<source>",77 "Effort": "<effort>",78 "Telegram ID": <telegram_id_or_null>79 },80 content: "<file content adapted to Notion markdown>",81 icon: "<emoji>"82 }]83)84```8586**Content adaptation rules:**87- Remove the H1 heading from content (it becomes the page title)88- Keep tables, bold, links, lists — Notion markdown supports them89- For very long files, include a summary version with a reference to the local file path at the bottom90- Add an icon emoji that matches the content topic9192**S3 Analysis (required for Control Center):**93When adding to the Control Center database, prepend S3 analysis before the file content:9495```96## S3 Analysis9798### Tension99[1-2 sentences — what gap or dissonance prompted this]100101### Driver102| Conditions | Effect | Relevance |103|------------|--------|-----------|104| [observable facts] | [consequences] | [why it matters for mission/OKRs] |105106### Requirement107> [who] needs [conditions] so that [outcomes]108109### Response Options110- [ ] [concrete action A]111- [ ] [alternative approach B]112- [ ] [defer/skip option]113114---115116[file content below]117```118119### Step 6: Confirm120Return the Notion page URL to the user.121122## Multi-task messages123A single Telegram message may contain multiple actions. When processing:124- Split into separate Notion cards — one per actionable item125- Each card references the same Telegram ID126- Each card gets its own GTD Type, Priority, and Effort127128## Output129- Notion page URL(s)130- Confirmation of title, database, project, and all properties set