ββββ βββ βββββββ ββββββββββββ βββββββ ββββ βββ ββββββββββ βββ βββββ ββββββββββββββββββββββββββββββββββββββ βββ βββββββββββ βββ ββββββ ββββββ βββ βββ ββββββ βββββββββ βββ βββ βββ βββ βββββββββββββ βββ βββ ββββββ βββββββββββββ βββ βββ βββ βββ βββββββββββββββ βββ βββββββββββββββ ββββββ βββββββββββββββββββ βββ βββββ βββββββ βββ βββ βββββββ βββ βββββ ββββββββββββββββββ
μ€μ κ³ μ§:
μ΄ νλ‘μ νΈλ Notion APIλ₯Ό νμ©νλ λ 립μ μΈ λΉκ³΅μ CLI λꡬμ λλ€. Notion Labs, Inc.μ μ ν΄, 보μ¦, νμ κ΄κ³κ° μμ΅λλ€. "Notion"μ Notion Labs, Inc.μ λ±λ‘ μνμ λλ€.
AI μμ΄μ νΈ & μλνλ₯Ό μν Notion CLI (v5.9.0 Β· 5λ¨κ³ μ±λ₯ μ΅μ ν)
Notion APIλ₯Ό μν κ°λ ₯ν CLI λꡬλ‘, AI μ½λ© μ΄μμ€ν΄νΈμ μλν μ€ν¬λ¦½νΈμ μ΅μ νλμ΄ μμ΅λλ€.
μ£Όμ κΈ°λ₯:
- λΉ λ₯Έ λ€μ΄ν°λΈ API ν΅ν© β μΈν 리μ νΈ μΊμ±μΌλ‘ μ΅λ 100λ°° λΉ λ₯Έ λ°λ³΅ μ½κΈ°
- AI μ°μ μ€κ³ β JSON μΆλ ₯ λͺ¨λ, ꡬ쑰νλ μλ¬, νμ€ μ’ λ£ μ½λ
- λΉλνν β μ€ν¬λ¦½νΈ λ° μλνμ μλ²½ν μ ν©
- μ μ°ν μΆλ ₯ β JSON, Markdown, Pretty, Compact JSON, Raw API μλ΅
- μ΅μ API β Notion API v5.2.1, data sources μμ μ§μ
- ν₯μλ μμ μ± β μ§μ λ°±μ€ν μλ μ¬μλ + μν· λΈλ μ΄μ»€
- 5λ¨κ³ μ±λ₯ μ΅μ ν β λ°°μΉ μμ 1.5-2λ°° μ±λ₯ ν₯μ (v5.9.0)
- μ€ν€λ§ νμ β AI μΉνμ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§ μΆμΆ
- μν¬μ€νμ΄μ€ μΊμ± β API νΈμΆ μμ΄ λΉ λ₯Έ λ°μ΄ν°λ² μ΄μ€ μ‘°ν
- μ€λ§νΈ ID λ³ν β
database_idβdata_source_idμλ λ³ν - 보μ β μ΄μ μ·¨μ½μ 0건
# npm μ€μΉ (κΆμ₯)
npm install -g @infograb/notion-cli
# μ΅μ λ²μ μΌλ‘ μ
λ°μ΄νΈ
npm update -g @infograb/notion-cliμ΅μ΄ μ€μ :
# λνν μ€μ λ§λ²μ¬ μ€ν
notion-cli initinit λͺ
λ Ήμ΄κ° λ€μμ μλ΄ν©λλ€: API ν ν° μ€μ β μ°κ²° ν
μ€νΈ β μν¬μ€νμ΄μ€ λκΈ°ν
μλ μ€μ :
export NOTION_TOKEN="secret_your_token_here"
notion-cli whoami # μ°κ²° νμΈ
notion-cli sync # μν¬μ€νμ΄μ€ μΊμ λκΈ°νν ν° λ°κΈ: https://developers.notion.com/docs/create-a-notion-integration
-S νλκ·Έλ‘ νλ« JSONμ μ¬μ©ν΄ νμ΄μ§λ₯Ό μμ±Β·μμ ν©λλ€:
# κΈ°μ‘΄ λ°©μ (μ€μ²© ꡬ쑰)
notion-cli page create -d DB_ID --properties '{"Name": {"title": [{"text": {"content": "Task"}}]}, "Status": {"select": {"name": "Done"}}}'
# Simple Properties (-S νλκ·Έ)
notion-cli page create -d DB_ID -S --properties '{"Name": "Task", "Status": "Done", "Priority": 5, "Due Date": "tomorrow"}'- λμλ¬Έμ κ΅¬λΆ μμ, μλ λ μ§(
"today","+7 days") μ§μ - 13κ°μ§ μμ± νμ : title, rich_text, number, checkbox, select, multi_select, status, date, url, email, phone, people, relation
# database_idμ data_source_id λͺ¨λ μ¬μ© κ°λ₯
notion-cli db retrieve 1fb79d4c71bb8032b722c82305b63a00 # database_id
notion-cli db retrieve 2gc80e5d82cc9043c833d93416c74b11 # data_source_idnotion-cli db query <ID> --json | jq '.data.results[].properties'
# μλ¬λ JSON λ°ν: {"success": false, "error": {"code": "NOT_FOUND", ...}}μ’
λ£ μ½λ: 0 = μ±κ³΅, 1 = API μ€λ₯, 2 = CLI μ€λ₯
notion-cli db schema <DATA_SOURCE_ID> --json # μ 체 μ€ν€λ§
notion-cli db schema <ID> --with-examples --json # λ³΅μ¬ κ°λ₯ν μμ ν¬ν¨
notion-cli db schema <ID> --properties Status,Priority # νΉμ μμ±λ§notion-cli sync # μ 체 μν¬μ€νμ΄μ€ μΊμ (1ν)
notion-cli db query "Tasks Database" # μ΄λ¦μΌλ‘ μ‘°ν (API νΈμΆ μμ)
notion-cli cache:info --json # μΊμ μν νμΈ| λͺ λ Ήμ΄ | μ€λͺ |
|---|---|
notion-cli init |
λνν μ΅μ΄ μ€μ λ§λ²μ¬ |
notion-cli doctor |
7κ°μ§ ν¬μ€ μ²΄ν¬ μ§λ¨ |
notion-cli whoami |
μ°κ²° λ° λ΄ μ 보 νμΈ |
notion-cli config set-token |
API ν ν° μ€μ |
notion-cli db retrieve <ID> # λ©νλ°μ΄ν° μ‘°ν
notion-cli db query <ID> --json # 쿼리
notion-cli db schema <ID> --json # μ€ν€λ§ μΆμΆ
notion-cli db update <ID> --title "New Title" # μ
λ°μ΄νΈ
notion-cli db create --parent-page <PAGE_ID> --title "DB" # μμ±notion-cli page create -d <ID> -S --properties '{"Name": "Task"}' # μμ±
notion-cli page retrieve <PAGE_ID> --json # μ‘°ν
notion-cli page update <PAGE_ID> -S --properties '{"Status": "Done"}' # μμ notion-cli block retrieve <BLOCK_ID> # λΈλ‘ μ‘°ν
notion-cli block append <BLOCK_ID> --children '[...]' # μμ μΆκ°
notion-cli block update <BLOCK_ID> --content "ν
μ€νΈ" # μμ notion-cli user list --json # μ 체 μ¬μ©μ λͺ©λ‘
notion-cli user retrieve <USER_ID> # μ¬μ©μ μ‘°ν
notion-cli search "project" --json # μν¬μ€νμ΄μ€ κ²μ
notion-cli search "docs" --filter page # νμ΄μ§λ‘ νν°λ§notion-cli sync # μν¬μ€νμ΄μ€ λκΈ°ν
notion-cli list --json # μΊμλ λ°μ΄ν°λ² μ΄μ€ λͺ©λ‘# λ¨μΌ 쑰건
notion-cli db query <ID> --filter '{"property": "Status", "select": {"equals": "Done"}}' --json
# λ³΅ν© μ‘°κ±΄ (AND)
notion-cli db query <ID> \
--filter '{"and": [{"property": "Status", "select": {"equals": "Done"}}, {"property": "Priority", "number": {"greater_than": 5}}]}' \
--json
# ν
μ€νΈ κ²μ
notion-cli db query <ID> --search "urgent" --json
# νμΌμμ νν° λ‘λ
notion-cli db query <ID> --file-filter ./filter.json --jsonμμΈν λ΄μ©: docs/FILTER_GUIDE.md
| νλκ·Έ | μ€λͺ |
|---|---|
--json |
ꡬ쑰νλ JSON ({success, data, metadata}) |
--compact-json |
ν μ€ μμΆ JSON |
--markdown |
Markdown ν μ΄λΈ |
--pretty |
ν λ리 μλ ν μ΄λΈ |
--raw |
μμ API μλ΅ |
| λ³μ | κΈ°λ³Έκ° | μ€λͺ |
|---|---|---|
NOTION_TOKEN |
β | Notion API ν ν° (νμ) |
NOTION_RETRY_MAX_ATTEMPTS |
3 |
μ΅λ μ¬μλ νμ |
NOTION_RETRY_INITIAL_DELAY |
1000 |
μ΄κΈ° μ§μ° (ms) |
NOTION_RETRY_MAX_DELAY |
30000 |
μ΅λ μ§μ° (ms) |
NOTION_CB_FAILURE_THRESHOLD |
5 |
μν· λΈλ μ΄μ»€ μκ³κ° |
NOTION_CACHE_DISABLED |
false |
μ 체 μΊμ± λΉνμ±ν |
NOTION_CLI_VERBOSE |
false |
stderrμ ꡬ쑰ν μ΄λ²€νΈ λ‘κΉ |
NOTION_CLI_DEDUP_ENABLED |
true |
μμ² μ€λ³΅ μ κ±° |
NOTION_CLI_DELETE_CONCURRENCY |
5 |
λ³λ ¬ λΈλ‘ μμ μ |
NOTION_CLI_CHILDREN_CONCURRENCY |
10 |
λ³λ ¬ μμ νμΉ μ |
NOTION_CLI_DISK_CACHE_ENABLED |
true |
λμ€ν¬ μΊμ νμ±ν |
NOTION_CLI_DISK_CACHE_MAX_SIZE |
104857600 |
μ΅λ μΊμ ν¬κΈ° (100MB) |
NOTION_CLI_HTTP_KEEP_ALIVE |
true |
HTTP Keep-Alive |
DEBUG |
β | notion-cli:* λ‘ λλ²κ·Έ λ‘κΉ
|
λ°°μΉ μμ κ³Ό λ°λ³΅ λ°μ΄ν° μ κ·Όμμ μ 체 1.5-2λ°° μ±λ₯ ν₯μ.
| μ΅μ ν | μ΅λ ν¨κ³Ό | μΌλ° ν¨κ³Ό | μ μ© μλλ¦¬μ€ |
|---|---|---|---|
| μμ² μ€λ³΅ μ κ±° | 50% API νΈμΆ κ°μ | 5-15% κ°μ | λμ μ€λ³΅ μμ² |
| λ³λ ¬ μμ | 80% λΉ λ¦ | 60-70% λΉ λ¦ | λ°°μΉ μμ , λλ μ‘°ν |
| λμ€ν¬ μΊμ | 60% ννΈμ¨ ν₯μ | 20-30% ν₯μ | λ°λ³΅ CLI μΈμ |
| HTTP Keep-Alive | 20% λΉ λ¦ | 5-10% λΉ λ¦ | λ€μ€ μμ² μμ |
| μλ΅ μμΆ | 70% λμν μ κ° | κ°λ³ | λμ©λ JSON μλ΅ |
λͺ¨λ μ΅μ νλ νκ²½ λ³μλ‘ λ 립 μ μ΄ κ°λ₯νλ©°, νμ νΈνμ± μμ μ μ§.
μꡬ μ¬ν: Node.js >= 22.0.0, npm >= 8.0.0
# μ μ₯μ ν΄λ‘ λ° μ€μΉ
git clone https://github.com/infograb/notion-cli
cd notion-cli && npm install && npm run build
# κ°λ° λͺ
λ Ήμ΄
npm test # ν
μ€νΈ μ€ν
npm run lint # λ¦°νΈ κ²μ¬
npm run lint -- --fix # μλ μμ
npm link # μ μ λ‘컬 ν
μ€νΈκΈ°μ μ€ν: TypeScript Β· ESLint v9 Β· Prettier Β· Mocha + Chai
κΈ°μ¬: Fork β κΈ°λ₯ λΈλμΉ β ν μ€νΈ μΆκ° β Pull Request
μμΈν λ΄μ©: CONTRIBUTING.md | docs/
- λΌμ΄μ μ€: MIT β LICENSE μ°Έκ³
- μν: "Notion"μ Notion Labs, Inc.μ λ±λ‘ μνλ‘, μ΄ νλ‘μ νΈλ Notion Labs, Inc.μ 무κ΄ν λ 립 λꡬμ λλ€.
- μλνν°: NOTICE νμΌμμ μ 체 μ€νμμ€ λΌμ΄μ μ€ μ 보 νμΈ
λ¬Έμ: oss@infograb.net Β· GitHub Issues Β· npm