| name | notion-format |
| description | Format and publish rich Notion documents with structured sections, code blocks, tables, callouts, quotes, mermaid diagrams, and emojis. Use when the user asks to organize, write, or save content to Notion (e.g., "notion์ ์ ๋ฆฌํด์ค", "notion์ ์ ์ฅํด์ค"), or when invoked with /notion-format. Detects content type (tech-doc, meeting-notes, analysis, tutorial, bug-report) and applies the appropriate formatting template automatically.
|
| license | MIT |
| metadata | {"compatibility":"Claude Code, Cursor","type":"execution","category":"documentation","maturity":"draft","estimated_time":"3 min"} |
Skill: Notion Format
Type: Execution
Purpose
Transform unstructured or loosely structured content into richly formatted
Notion-ready documents. Automatically detect content type from keywords and
context, select the matching template, and apply visual formatting elements
(headings, callouts, code blocks, tables, mermaid diagrams, emojis, toggles).
Optionally publish to Notion via MCP.
When to Use
- User says "notion์ ์ ๋ฆฌํด์ค", "notion์ ์ ์ฅํด์ค", or similar
- User invokes
/notion-format explicitly
- Conversation produces output that should be persisted as a structured document
- Raw notes, logs, or analysis results need visual structure before sharing
When NOT to Use
- Content is already well-formatted and user just wants to push to Notion as-is
- User explicitly requests plain text or minimal formatting
- The output is code-only (a script, config file) โ not a document
- Content belongs in a database row, not a document page
Inputs Required
Do not run this skill without:
Optional but recommended:
Output Format
- Detected content type and rationale
- Formatted Notion-ready Markdown document
- Notion save prompt (if MCP available)
- Notion page URL (if saved)
Procedure
Step 1 โ Content Type Detection
Match content against keyword signals. If multiple types match,
use the priority order below (first match wins):
| Priority | Type | Keywords / Signals | Emoji |
|---|
| 1 | bug-report | ๋ฒ๊ทธ, ์ด์, ์ค๋ฅ, ์๋ฌ, ์ฅ์ , ์์ธ, incident, error, stack trace | ๐ |
| 2 | meeting-notes | ํ์, ๋ฏธํ
, ๋
ผ์, ๊ฒฐ์ ์ฌํญ, ์ก์
์์ดํ
, meeting, agenda, attendees | ๐ |
| 3 | tutorial | ํํ ๋ฆฌ์ผ, ๊ฐ์ด๋, ์ฌ์ฉ๋ฒ, ์ค์น, how-to, step-by-step, prerequisites | ๐ |
| 4 | tech-doc | ํ์ดํ๋ผ์ธ, ์ํคํ
์ฒ, API, ์คํค๋ง, ์์คํ
์ค๊ณ, spec, schema, infra | ๐๏ธ |
| 5 | analysis | ๋ถ์, ๋น๊ต, ์กฐ์ฌ, ๊ฒํ , ๊ฒฐ๊ณผ, ์ธ์ฌ์ดํธ, benchmark, evaluation, comparison | ๐ |
| 6 | general | (fallback โ none of the above) | ๐ |
Priority rationale: Bug reports and meeting notes have the most
distinctive structure; misclassifying them causes the most damage.
Analysis and tech-doc overlap heavily, so tech-doc takes priority
when both match (structural docs benefit more from mermaid/code blocks).
If the user explicitly states a type, skip detection and use it directly.
Step 2 โ Apply Format Template
Each template defines the section skeleton. Adapt section count and depth
to actual content โ do not generate empty placeholder sections.
์น์
์ ๋ชฉ ์ธ์ด๋ ์
๋ ฅ ์ธ์ด๋ฅผ ๋ฐ๋ฅธ๋ค โ ์๋ ์ค์ผ๋ ํค์ ํ๊ตญ์ด ์์์ด๋ฉฐ,
์์ด ์ฝํ
์ธ ์๋ ๋๋ฑํ ์์ด ์ ๋ชฉ์ ์ฌ์ฉํ๋ค (์: ์ฆ์ โ Symptoms,
ํ์๋ผ์ธ โ Timeline).
bug-report ๐
# ๐ [๋ฒ๊ทธ๋ช
] ์ฅ์ ๋ฆฌํฌํธ
> **์ฌ๊ฐ๋**: ๐ด Critical / ๐ก High / ๐ข Low | **์ํ**: ์กฐ์ฌ์ค / ํด๊ฒฐ๋จ
## ๐ ์ฆ์
- ๋ฐ์ ํ์ bullet
## ๐ ํ์๋ผ์ธ
| ์๊ฐ | ์ด๋ฒคํธ |
|---|---|
## ๐ฌ ์์ธ ๋ถ์
```
์๋ฌ ๋ฉ์์ง ๋๋ ์คํ ํธ๋ ์ด์ค
```
> ๐ก ๊ทผ๋ณธ ์์ธ: ... (callout)
## ๐ ๏ธ ํด๊ฒฐ ๋ฐฉ๋ฒ
1. ์์ ์กฐ์น
2. ์๊ตฌ ์กฐ์น
## ๐งช ๊ฒ์ฆ
- [ ] ์ฌํ ๋ฐฉ๋ฒ / ๊ฒ์ฆ ๊ธฐ์ค
## ๐ ๊ด๋ จ ์ด์
- ๋งํฌ
meeting-notes ๐
# ๐ [๋ ์ง] ํ์๋ก โ [์ฃผ์ ]
> ์ฐธ์์: A, B, C | ์ผ์: YYYY-MM-DD HH:mm
## ๐ ์๊ฑด
1. ...
2. ...
## ๐ฌ ์ฃผ์ ๋
ผ์
### ์๊ฑด 1
- ๋
ผ์ ๋ด์ฉ bullet
## โ
๊ฒฐ์ ์ฌํญ
> [๊ฒฐ์ ๋ด์ฉ] โ ๊ฒฐ์ ์
## ๐ฏ ์ก์
์์ดํ
| ๋ด๋น์ | ๋ด์ฉ | ๊ธฐํ | ์ํ |
|---|---|---|---|
| @name | task | YYYY-MM-DD | ๐ฒ |
## ๐
๋ค์ ํ์
- ์ผ์ / ์๊ฑด ์๊ณ
tutorial ๐
# ๐ [์ฃผ์ ] ๊ฐ์ด๋
> **Prerequisites**: ์ฌ์ ์กฐ๊ฑด (callout)
## ๐ ๋น ๋ฅธ ์์
```bash
ํต์ฌ ์ปค๋งจ๋
```
## ๐ ๋จ๊ณ๋ณ ์ค๋ช
### Step 1 โ [๋จ๊ณ๋ช
]
์ค๋ช
...
```์ฝ๋```
### Step 2 โ [๋จ๊ณ๋ช
]
...
## ๐ก Tips
> ํ ๋ด์ฉ (callout)
## โ FAQ
| ์ง๋ฌธ | ๋ต๋ณ |
|---|---|
## ๐ ๊ด๋ จ ์๋ฃ
- ๋งํฌ
tech-doc ๐๏ธ
# ๐๏ธ [์ ๋ชฉ]
> ํ ์ค ์์ฝ (quote ๋ธ๋ก)
## ๐ฏ ๊ฐ์
- ๋ชฉ์ ยท๋ฐฐ๊ฒฝ bullet
## ๐๏ธ ์ํคํ
์ฒ
```mermaid
graph TD / flowchart / sequenceDiagram
```
## โ๏ธ ์์ธ ์คํ
| ํญ๋ชฉ | ๊ฐ | ๋น๊ณ |
|---|---|---|
## ๐ป ์ฝ๋ ์์
```์ธ์ด
์ฝ๋
```
## โ ๏ธ ์ฃผ์์ฌํญ
> โ ๏ธ WARNING callout
## ๐ ์ฐธ์กฐ
- ๋งํฌ/๋ฌธ์
analysis ๐
# ๐ [๋ถ์ ์ฃผ์ ]
> **ํต์ฌ ์์ฝ**: ํ ๋ฌธ์ฅ ๊ฒฐ๋ก (callout)
## ๐ ๋ถ์ ๋ฐฐ๊ฒฝ
- ๋ฌธ์ ์ ์ / ๋ถ์ ๋ชฉ์
## ๐ ๋ฐ์ดํฐ / ๊ทผ๊ฑฐ
| ํญ๋ชฉ | ํํฉ | ๋ชฉํ | ๋น๊ณ |
|---|---|---|---|
## ๐ก ์ธ์ฌ์ดํธ
1. ...
2. ...
## ๐ ๊ฒฐ๋ก ๋ฐ ๊ถ๊ณ
> ๊ถ๊ณ ์ฌํญ (callout)
## ๐ ์ถ์ฒ
- ์ฐธ์กฐ ์๋ฃ
general ๐
No fixed skeleton. Apply these rules:
- 3๊ฐ ์ด์ ๋
ผ๋ฆฌ ๋จ์ โ H2๋ก ์น์
๋ถ๋ฆฌ
- ๋์ดํ โ bullet list ๋๋ numbered list
- ๋น๊ต/๋์กฐ โ table
- ํต์ฌ ๋ฉ์์ง โ quote ๋๋ callout
- ์ฝ๋ ํฌํจ ์ โ ์ธ์ด ์ง์ code block
- ๋ฌธ์ ์๋จ์ ํ ์ค ์์ฝ quote ๋ธ๋ก ์ถ๊ฐ
Step 3 โ Formatting Rules
ํญ์ ์ ์ฉ:
- ๋ฌธ์ ์๋จ์ ํ ์ค ์์ฝ
quote ๋ธ๋ก
- ์ฃผ์ ๊ฒฝ๊ณ /ํ์
callout (์์ด์ฝ ์ด๋ชจ์ง ํฌํจ)
- ์ฝ๋๋ ๋ฐ๋์ ์ธ์ด ์ง์ (
python, bash, typescript, json, mermaid, sql ๋ฑ)
- ํ๋ฆ/๊ตฌ์กฐ ์ค๋ช
์ด ์์ผ๋ฉด
mermaid ๋ค์ด์ด๊ทธ๋จ ์ถ๊ฐ
- ๋น๊ต ๋ฐ์ดํฐ๋ ํ
์ด๋ธ ์ฐ์
- ์น์
๊ฐ
divider ์ฝ์
- ์น์
์ ๋ชฉ์ ์ด๋ชจ์ง ํฌํจ
์ฝํ
์ธ ๊ธธ์ด๋ณ ์กฐ์ :
| ๊ธธ์ด | ํฌ๋งท ์ ๋ต |
|---|
| ์งง์ (~300์) | ์น์
์ต์ํ, callout + quote ์์ฃผ |
| ์ค๊ฐ (300~1000์) | ํ ํ
ํ๋ฆฟ ์ ์ฉ |
| ๊ธด (1000์+) | toggle ๋ธ๋ก์ผ๋ก ์์ธ ๋ด์ฉ ์ ๊ธฐ, TOC ์ญํ ์ ์์ฝ ์น์
์ถ๊ฐ |
๋น ์น์
๊ธ์ง: ํ
ํ๋ฆฟ ์น์
์ค ์ฑ์ธ ๋ด์ฉ์ด ์์ผ๋ฉด ํด๋น ์น์
์ ์๋ตํ๋ค.
Step 4 โ Notion MCP Save (Optional)
์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ ์ฅ์ ์์ฒญํ ๊ฒฝ์ฐ(์: "notion์ ์ ์ฅํด์ค"๋ก ์์ํ ์์ฒญ)์๋
๋ค์ ๋ฌป์ง ์๊ณ ์ ์ฅ์ ์งํํ๋ค. ์ด๋ ๋ถ๋ชจ ํ์ด์ง ID๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ID๋ฅผ
๋ชจ๋ฅด๋ฉด ๊ทธ๊ฒ๋ง ๋ฌผ์ด๋ณธ๋ค.
์ ์ฅ ์์ฒญ์ด ์์๋ ๊ฒฝ์ฐ์๋ ํฌ๋งทํ
์๋ฃ ํ ๋ฌผ์ด๋ณด๊ธฐ:
"Notion์ ์ ์ฅํ ๊น์? ์ ์ฅํ ๊ฒฝ์ฐ ๋ถ๋ชจ ํ์ด์ง ID๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ID๋ฅผ ์๋ ค์ฃผ์ธ์."
์ ์ฅ ์งํ ์:
API-post-search๋ก ๋์ผ ์ ๋ชฉ ํ์ด์ง ์กด์ฌ ์ฌ๋ถ ํ์ธ
- ์์ผ๋ฉด
API-post-page๋ก ์ ๊ท ์์ฑ
- ์ด๋ฏธ ์กด์ฌํ๋ฉด ์ฌ์ฉ์์๊ฒ "๋์ผ ์ ๋ชฉ์ ํ์ด์ง๊ฐ ์์ต๋๋ค. ๋ฎ์ด์ธ๊น์?" ํ์ธ ํ
API-patch-block-children์ผ๋ก ์
๋ฐ์ดํธ
- ์๋ฃ ํ Notion ํ์ด์ง URL ๋ฐํ
Notion Block ํ์
๋งคํ:
| Markdown / ์์ | Notion Block type |
|---|
# H1 | heading_1 |
## H2 | heading_2 |
### H3 | heading_3 |
| ์ผ๋ฐ ํ
์คํธ | paragraph |
- bullet | bulleted_list_item |
1. list | numbered_list_item |
- [ ] checkbox | to_do |
```code``` | code (language ์ง์ ) |
> quote | quote |
| callout (์ด๋ชจ์ง + ๊ฐ์กฐ ํ
์คํธ) | callout (icon emoji ํฌํจ) |
--- | divider |
| ํ
์ด๋ธ | table + table_row |
| toggle (์ ๊ธฐ) | toggle |
| URL ๋จ๋
| bookmark |
| ์ด๋ฏธ์ง URL | image (external) |
Guardrails
- ์ฝํ
์ธ ๊ฐ ๋น์ด์๊ฑฐ๋ ๋๋ฌด ์งง์ผ๋ฉด(<20์) ์ถ๊ฐ ์
๋ ฅ ์์ฒญ
- ๋ช
์์ ์ ์ฅ ์์ฒญ์ด ์์ผ๋ฉด Notion ์ ์ฅ ์ ์ฌ์ฉ์ ํ์ธ (์ด๋ฏธ ์์ฒญํ๋ค๋ฉด
์ฌํ์ธ ์์ด ์งํํ๋, parent ID๋ฅผ ๋ชจ๋ฅด๋ฉด ๊ทธ๊ฒ๋ง ํ์ธ)
- ๊ธฐ์กด ํ์ด์ง ๋ฎ์ด์ฐ๊ธฐ ์ ๋ช
์์ ๋์ ํ์
- Notion MCP ๋ถ๊ฐ ์ ํฌ๋งทํ
๋ ๋งํฌ๋ค์ด๋ง ์ ๊ณตํ๊ณ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๋ ฅ
- parent_id ๋ฏธ์ ๊ณต ์ workspace ์ต์์์ ์ ์ฅํ์ง ๋ง๊ณ ์ฌ์ฉ์์๊ฒ ์์ฒญ
- ์ฌ์ฉ์๊ฐ ๋ช
์ํ ์ฝํ
์ธ ํ์
์ด ์์ผ๋ฉด ์๋ ๊ฐ์ง๋ฅผ ๋ฌด์
- ๋น ์น์
์ placeholder๋ก ๋จ๊ธฐ์ง ์์
Failure Patterns
Common bad outputs:
- ์ฝํ
์ธ ํ์
์ ์๋ชป ๊ฐ์งํด ํ์๋ก์ tech-doc ํํ๋ก ํฌ๋งทํ
- ๋ชจ๋ ์น์
์ ๋น์ด์๋ ์ฑ๋ก ๋จ๊ฒจ๋ ์ค์ผ๋ ํค๋ง ์ถ๋ ฅ (๋น ์น์
๊ธ์ง ๊ท์น ์๋ฐ)
- mermaid ๋ค์ด์ด๊ทธ๋จ์ ์ธ์ด ์ง์ ์์ด ์ผ๋ฐ ์ฝ๋ ๋ธ๋ก์ผ๋ก ์ถ๋ ฅ
- ๊ธด ๋ฌธ์์์ toggle ์์ด ๋ชจ๋ ๋ด์ฉ์ ํผ์ณ ๊ฐ๋
์ฑ ์ ํ
- Notion ์ ์ฅ ์ ๋์ผ ์ ๋ชฉ ํ์ด์ง๋ฅผ ํ์ธํ์ง ์๊ณ ์ค๋ณต ์์ฑ
- callout์ ์ผ๋ฐ quote๋ก ๋์ฒดํด ์๊ฐ์ ๊ฐ์กฐ ํจ๊ณผ ์์ค
- ์ด๋ชจ์ง๋ฅผ ์น์
์ ๋ชฉ์์ ๋๋ฝํด ๋ฐ๋ฐํ ๊ตฌ์กฐ ์์ฑ
- ์ฌ์ฉ์๊ฐ ๋ช
์ํ ํ์
์ ๋ฌด์ํ๊ณ ์๋ ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ
- ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ ์ฅ์ ์์ฒญํ๋๋ฐ "์ ์ฅํ ๊น์?"๋ฅผ ๋ค์ ๋ฌผ์ด ํ๋ฆ์ ๋์
Example 1 (Minimal Context)
Input:
์ฌ์ฉ์๊ฐ ๋ํ ์ค ์ ๋ฆฌํ ๋ด์ฉ:
"Redis ์บ์ ๋์
๊ฒํ . ํ์ฌ DB ์ง์ ์กฐํ๋ก ์๋ต์๊ฐ 200ms. ์บ์ ์ ์ฉ ์ ์์ 50ms. TTL์ 5๋ถ์ผ๋ก ์ค์ . ๋ง๋ฃ ์ ๋ต์ LRU. ๋น์ฉ์ ์ $50 ์ถ๊ฐ."
Output:
Detected type: analysis (๊ฒํ ํค์๋ + ์์น ๋น๊ต ๊ตฌ์กฐ)
# ๐ Redis ์บ์ ๋์
๊ฒํ
> **ํต์ฌ ์์ฝ**: DB ์ง์ ์กฐํ ๋๋น ์๋ต์๊ฐ 75% ๊ฐ์ ์์ (200ms โ 50ms), ์ $50 ์ถ๊ฐ ๋น์ฉ
---
## ๐ ๋ถ์ ๋ฐฐ๊ฒฝ
- ํ์ฌ DB ์ง์ ์กฐํ ๋ฐฉ์์ ์๋ต์๊ฐ ๋ณ๋ชฉ ํด์ ํ์
## ๐ ๋น๊ต ๋ถ์
| ํญ๋ชฉ | ํ์ฌ (DB ์ง์ ) | ์บ์ ์ ์ฉ ํ |
|---|---|---|
| ์๋ต์๊ฐ | 200ms | ~50ms |
| ์ ๋น์ฉ | - | +$50 |
| TTL | - | 5๋ถ |
| ๋ง๋ฃ ์ ๋ต | - | LRU |
## ๐ ๊ฒฐ๋ก ๋ฐ ๊ถ๊ณ
> ๐ก ์๋ต์๊ฐ 75% ๊ฐ์ ํจ๊ณผ ๋๋น ๋น์ฉ์ด ํฉ๋ฆฌ์ . ๋์
๊ถ๊ณ .
Example 2 (Realistic Scenario)
Input:
์ฌ์ฉ์๊ฐ ์ฅ์ ๋์ ๋ด์ฉ์ ์ ๋ฆฌ ์์ฒญ:
"์ค๋ 14์์ ๊ฒฐ์ API์์ 500 ์๋ฌ ๋ฐ์. ์์ธ์ PG์ฌ ์ธ์ฆ์ ๋ง๋ฃ. 15์์ ์ธ์ฆ์ ๊ต์ฒด ํ ๋ณต๊ตฌ. ์ฌ๋ฐ ๋ฐฉ์ง๋ฅผ ์ํด ์ธ์ฆ์ ๋ง๋ฃ 30์ผ ์ ์๋ฆผ ์ค์ ํ์. ์ํฅ ๋ฒ์๋ ์ฝ 200๊ฑด ๊ฒฐ์ ์คํจ."
Output:
Detected type: bug-report (์๋ฌ, ์ฅ์ , ์์ธ ํค์๋)
# ๐ ๊ฒฐ์ API 500 ์๋ฌ โ PG์ฌ ์ธ์ฆ์ ๋ง๋ฃ
> **์ฌ๊ฐ๋**: ๐ด Critical | **์ํ**: ํด๊ฒฐ๋จ
---
## ๐ ์ฆ์
- ๊ฒฐ์ API์์ 500 Internal Server Error ๋ฐํ
- ์ฝ 200๊ฑด ๊ฒฐ์ ์คํจ ๋ฐ์
## ๐ ํ์๋ผ์ธ
| ์๊ฐ | ์ด๋ฒคํธ |
|---|---|
| 14:00 | ๊ฒฐ์ API 500 ์๋ฌ ์ต์ด ๊ฐ์ง |
| 14:00~15:00 | ์์ธ ๋ถ์ โ PG์ฌ ์ธ์ฆ์ ๋ง๋ฃ ํ์ธ |
| 15:00 | ์ธ์ฆ์ ๊ต์ฒด ์๋ฃ, ์๋น์ค ๋ณต๊ตฌ |
## ๐ฌ ์์ธ ๋ถ์
> ๐ก ๊ทผ๋ณธ ์์ธ: PG์ฌ SSL/TLS ์ธ์ฆ์ ๋ง๋ฃ๋ก ์ธํ ์ฐ๋ ์คํจ
## ๐ ๏ธ ํด๊ฒฐ ๋ฐฉ๋ฒ
1. **์์ ์กฐ์น**: PG์ฌ ์ธ์ฆ์ ์๋ ๊ต์ฒด (15:00 ์๋ฃ)
2. **์๊ตฌ ์กฐ์น**: ์ธ์ฆ์ ๋ง๋ฃ 30์ผ ์ ์๋ ์๋ฆผ ์ค์
## ๐งช ๊ฒ์ฆ
- [ ] ๊ฒฐ์ API ์ ์ ์๋ต ํ์ธ
- [ ] ์ธ์ฆ์ ๋ง๋ฃ ์๋ฆผ ์คํฌ๋ฆฝํธ ๋์ ํ
์คํธ
## ๐ ๊ด๋ จ ์ด์
- ์ํฅ: ์ฝ 200๊ฑด ๊ฒฐ์ ์คํจ (14:00~15:00)
Notes
FAST MODE (only if explicitly requested):
- ์ฝํ
์ธ ํ์
๊ฐ์ง ์๋ต โ
general ์ ์ฉ
- ์น์
์ต์ํ (H2 + bullet ์์ฃผ)
- Step 4 (Notion save) ๊ฑด๋๋