Skip to main content

notion-mcp-large-page-content-truncates-the-call

Notion MCP `create-pages` 에 큰 `content`(대략 10KB+, 한글이면 `\uXXXX` 이스케이프로 3배 부풀어 더 빨리)를 넘기면 툴 호출 JSON 자체가 중간에서 잘려 `InputValidationError: could not be parsed as JSON` 이 난다 — 내용 문제가 아니라 크기 문제다. **create(앞부분) → update-page `insert_content` `{"type":"end"}`(뒷부분)** 으로 나눠라. 문서 아카이빙처럼 긴 마크다운을 옮길 때 반드시 걸린다. 트리거 - Notion 에 긴 문서 이관, create-pages 가 JSON 파싱 에러, 한글 문서를 Notion 페이지로.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
blas1n/claude-skills
آخر نشاط في المصدر
١٢ سبتمبر ٢٠٢٦ في ٠٤:٢٣
لغة SKILL.md المكتشفة
الكورية
النجوم
٢
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
notion-mcp-large-page-content-truncates-the-call
description
Notion MCP `create-pages` 에 큰 `content`(대략 10KB+, 한글이면 `\uXXXX` 이스케이프로 3배 부풀어 더 빨리)를 넘기면 툴 호출 JSON 자체가 중간에서 잘려 `InputValidationError: could not be parsed as JSON` 이 난다 — 내용 문제가 아니라 크기 문제다. **create(앞부분) → update-page `insert_content` `{"type":"end"}`(뒷부분)** 으로 나눠라. 문서 아카이빙처럼 긴 마크다운을 옮길 때 반드시 걸린다. 트리거 - Notion 에 긴 문서 이관, create-pages 가 JSON 파싱 에러, 한글 문서를 Notion 페이지로.
# Notion MCP 는 큰 content 에서 호출 자체가 잘린다 ## Problem 2026-09-12, 세션 인수인계 5건(각 5~21KB 마크다운)을 Notion 으로 아카이빙했다. - 5.6KB 문서 → ✅ 한 번에 성공 - 10KB 문서 → ❌ `InputValidationError: ... could not be parsed as JSON` 에러 본문이 결정적이다: ``` You sent (first 200 of 17184 bytes): {"parent": {...}, "pages": [{"properties": ... Common causes: unescaped backslashes, unescaped control characters, or truncated output. ``` **`17184 bytes` 를 보냈다고 하면서 JSON 이 안 닫혔다** — 내용이 잘못된 게 아니라 **호출이 중간에서 끊긴** 것이다. 같은 내용을 반으로 나누니 둘 다 통과했다. ### 한글은 3배로 부푼다 툴 호출 JSON 에서 비ASCII 는 `\uXXXX` 로 이스케이프된다. 한글 1자 = **6바이트**. | 원본 마크다운 | 호출 JSON 실측 | |---|---| | 10,339 bytes (한글 위주) | **17,184 bytes** | 그래서 "10KB 문서"가 실제로는 17KB 페이로드다. **원본 크기로 판단하지 마라.** ## Rule ### 나눠서 만들어라 — create 로 앞부분, insert_content 로 뒷부분 ``` 1) notion-create-pages parent: {type: "page_id", page_id: "<부모>"} allow_async: false # ← id 를 즉시 받아야 다음 단계가 된다 pages: [{properties: {title}, icon, content: "<앞 절반>"}] → 반환된 page id 를 받는다 2) notion-update-page page_id: "<위에서 받은 id>" command: "insert_content" position: {"type": "end"} # ← 뒤에 이어 붙인다 allow_async: false content: "<뒷 절반>" ``` **끊는 자리**: 마크다운의 `---` 나 최상위 `##` 경계. 표나 코드펜스 **안**에서 자르면 두 조각 다 렌더가 깨진다. ### 목표 크기 | 상황 | 한 호출당 content | |---|---| | 영문 위주 | ~10KB 이하 | | **한글 위주** | **~5KB 이하** (JSON 에서 3배가 된다) | | 여러 페이지를 한 번에 | 합계로 따져라 — `pages` 배열 전체가 한 호출이다 | ### 순서 부모 페이지를 먼저 만들고(`creation_mode: "draft"` 로 private draft), 그 `page_id` 아래에 자식들을 하나씩 만든다. **자식을 배열로 한꺼번에 만들지 마라** — 합계가 넘는다. ``` create(부모, draft) → id for 문서 in 문서들: create(자식, parent=id, content=앞) → child_id update(child_id, insert_content, content=뒤) ``` ### 실패해도 재시도로 낫지 않는다 크기 문제라서 같은 페이로드를 다시 보내면 **같은 자리에서 또 잘린다.** 에러를 보면 즉시 분할로 전환하라 — "일시적 오류" 가설에 시간을 쓰지 마라. ## 곁가지 — 원문 아카이빙의 정직성 역사 기록(인수인계·회고·요청)은 **원문 그대로** 옮긴다. 다만 나중 세션이 반증한 대목이 있으면 **원문을 고치지 말고** 인용 블록으로 정정 주석만 덧붙여라: ```markdown > ⚠️ 이 절은 다음 세션(09-08)에서 반증됐다. 실제는 164·4 였고 … ``` 원문을 고치면 "그때 무엇을 믿었나"가 사라지고, 안 고치면 다음 사람이 틀린 진단을 근거로 삼는다. **덧붙이기가 둘 다 지킨다.** ## Checklist - [ ] content 가 한글 위주면 원본 크기 × 3 으로 페이로드를 어림했나 - [ ] 5KB(한글)/10KB(영문) 넘으면 **처음부터** create + insert_content 로 계획했나 - [ ] 끊는 자리가 표·코드펜스 **밖**인가 - [ ] 부모 id 가 필요하면 `allow_async: false` 로 받았나 - [ ] 여러 페이지를 `pages` 배열에 담았다면 **합계**를 따졌나 - [ ] 원문 아카이빙이면 본문을 고치지 않고 정정을 **덧붙였나** ## Related - `a-living-doc-repeats-a-fact-and-updates-only-one-copy` — 문서 이주 시 무엇이 살아있나를 먼저 재는 법 - `mcp-remote-tools-attach-race` — MCP 툴 가용성 관련 함정
عرض على GitHub