# 검증과 한도
JSON 문법이 맞는 것과 학습에 적절한 컬렉션인 것은 다릅니다. 파일 형식, 참조 구조, 내용의 의미를 차례로 확인하세요.

## 확인 순서
1. **JSON 문법:** 쉼표·따옴표·괄호가 맞는지 확인합니다.
2. **스키마:** 필수 필드, role, 관계 type, 번역 키를 확인합니다.
3. **구조:** ID 중복, 없는 관계 대상, 역할 조합, 순환을 확인합니다.
4. **내용:** 사실·예제·관계의 의미와 번역이 정확한지 검토합니다.

[앱 코드에서 생성한 JSON Schema](/downloads/collection.schema.json)

## 구조 규칙
카드 ID는 컬렉션 안에서 고유해야 합니다. 관계 대상은 같은 컬렉션 안에 있어야 하며, 자기 자신을 대상으로 하거나 같은 type·target 조합을 중복할 수 없습니다. 사용자 정의 관계는 사용 전에 컬렉션에 정의합니다.

`subclass_of`, `part_of`, `prerequisite`의 순환은 금지됩니다. 동등 관계의 연결과 동일하게 취급하지 마세요. 이미지 ID·경로·해시는 실제 자산과 일치해야 합니다.

## 경로별 한도를 구분하세요
| 경로 | 확인할 한도 |
| --- | --- |
| 기기 파일 가져오기 | JSON 파일 최대 64 MiB |
| MCP·계정 초안 서버 | HTTP JSON 요청 2 MiB, 서명 봉투를 포함한 저장 객체 2 MiB |
| MCP 이미지 업로드 | 이미지 한 장 최대 5 MiB |
| 서버 초안의 텍스트 | 제목 200자, 설명 20,000자 |
| 서버 초안의 카드 | 카드당 이미지 최대 5개, 관계 최대 256개 |

컬렉션의 카드 장수 자체를 1,000장 등으로 제한하지 않습니다. 다만 전송·저장 크기 한도는 별도로 적용됩니다. 기기 파일 가져오기와 MCP 서버 한도를 하나의 공통 제한으로 안내하지 않습니다.

## 자주 만나는 문제
- **같은 컬렉션이 이미 있음:** 다른 내용으로 자동 덮어쓰지 않습니다. 새 컬렉션이면 새 ID를 사용하세요.
- **관계 대상 없음:** title이 아니라 정확한 cardId를 연결했는지 확인합니다.
- **역할이 맞지 않음:** [역할 표](/ko/docs/protocol/relations/)를 확인하거나 의미에 맞는 사용자 정의 관계를 정의합니다.
- **이미지를 찾지 못함:** 경로만 든 로컬 JSON 대신 이미지 포함 내보내기 파일을 사용하세요.
- **번역만 있고 기본 내용이 없음:** 기본 title과 description은 유지하고 언어별 내용을 추가하세요.
