Skip to content

infograb/notion-cli

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

62 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—     β–ˆβ–ˆβ•—
β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ•—  β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ•”β•β•β•β•β•β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β–ˆβ–ˆβ•— β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘    β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•‘ β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•‘    β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘
β•šβ•β•  β•šβ•β•β•β• β•šβ•β•β•β•β•β•    β•šβ•β•   β•šβ•β• β•šβ•β•β•β•β•β• β•šβ•β•  β•šβ•β•β•β•     β•šβ•β•β•β•β•β•β•šβ•β•β•β•β•β•β•β•šβ•β•

CI/CD Pipeline Code Coverage npm version Node.js Version License

μ€‘μš” κ³ μ§€:

이 ν”„λ‘œμ νŠΈλŠ” 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 init

init λͺ…λ Ήμ–΄κ°€ λ‹€μŒμ„ μ•ˆλ‚΄ν•©λ‹ˆλ‹€: API 토큰 μ„€μ • β†’ μ—°κ²° ν…ŒμŠ€νŠΈ β†’ μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 동기화

μˆ˜λ™ μ„€μ •:

export NOTION_TOKEN="secret_your_token_here"
notion-cli whoami   # μ—°κ²° 확인
notion-cli sync     # μ›Œν¬μŠ€νŽ˜μ΄μŠ€ μΊμ‹œ 동기화

토큰 λ°œκΈ‰: https://developers.notion.com/docs/create-a-notion-integration


πŸ”‘ 핡심 κΈ°λŠ₯

Simple Properties β€” λ³΅μž‘λ„ 70% κ°μ†Œ

-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

Smart ID Resolution β€” μžλ™ ID λ³€ν™˜

# database_id와 data_source_id λͺ¨λ‘ μ‚¬μš© κ°€λŠ₯
notion-cli db retrieve 1fb79d4c71bb8032b722c82305b63a00  # database_id
notion-cli db retrieve 2gc80e5d82cc9043c833d93416c74b11  # data_source_id

JSON Mode β€” AI 처리 μ΅œμ ν™”

notion-cli db query <ID> --json | jq '.data.results[].properties'
# μ—λŸ¬λ„ JSON λ°˜ν™˜: {"success": false, "error": {"code": "NOT_FOUND", ...}}

μ’…λ£Œ μ½”λ“œ: 0 = 성곡, 1 = API 였λ₯˜, 2 = CLI 였λ₯˜

Schema Discovery β€” μŠ€ν‚€λ§ˆ 탐색

notion-cli db schema <DATA_SOURCE_ID> --json            # 전체 μŠ€ν‚€λ§ˆ
notion-cli db schema <ID> --with-examples --json        # 볡사 κ°€λŠ₯ν•œ μ˜ˆμ‹œ 포함
notion-cli db schema <ID> --properties Status,Priority  # νŠΉμ • μ†μ„±λ§Œ

Workspace Caching β€” μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 캐싱

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:* 둜 디버그 λ‘œκΉ…

πŸš€ μ„±λŠ₯ μ΅œμ ν™” (v5.9.0)

배치 μž‘μ—…κ³Ό 반볡 데이터 μ ‘κ·Όμ—μ„œ 전체 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

About

Enterprise-grade Notion CLI for AI agents and automation. Non-interactive, structured output, advanced retry/caching. Notion API v5.2.1 with data sources support.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 98.7%
  • JavaScript 1.3%