마지막 업데이트: 2026년 7월 28일

TL;DR CBZ(Comic Book Zip)는 일련의 순차 이미지 파일을 묶은 표준 ZIP 아카이브에 불과하며, 선택적 메타데이터를 추가해 DRM‑무료 만화 컨테이너 하나로 만든 것입니다. 널리 쓰이는 ZIP 형식에 의존하기 때문에 모든 압축 도구로 열 수 있으며, 리더는 이미지를 알파벳 순으로 정렬해 페이지를 순서대로 표시합니다. 최신 CBZ는 종종 풍부한 라이브러리 데이터를 위해 ComicInfo.xml을 포함하고, WebP/AVIF와 같은 효율적인 이미지 코덱을 사용하며, 인터랙티브한 “enhanced” 만화를 위해 HTML을 삽입하기도 합니다.
CBZ가 정확히 무엇인가요?
- Name: Comic Book Zip –
.cbz확장자를 가진 ZIP 파일. - MIME type:
application/vnd.comicbook+zip(2012년 IANA에 등록됨). - Origins: ComicRack 커뮤니티(2005‑2008)에서 CBR이나 PDF와 같은 독점 포맷에 대한 오픈소스 대안으로 널리 알려졌습니다.
- Cross‑platform: 모든 ZIP‑호환 유틸리티(7‑Zip, WinRAR, macOS Archive Utility, Linux
unzip)로 열 수 있습니다. 내용을 확인하는 데 특별한 소프트웨어가 필요하지 않습니다.
실제로 CBZ는 이미지(JPEG, PNG, WebP 등) 폴더를 압축하고 이름을 바꾼 것에 불과합니다. 그 단순함 때문에 PC, 태블릿, 휴대폰에서 디지털 만화의 사실상 표준이 되었습니다.
CBZ 내부: 파일 구조
잘 구성된 CBZ는 평평한 계층 구조를 따르며—추가 중첩이 없으므로—독자가 페이지를 즉시 찾을 수 있습니다. 아래는 일반적인 트리 뷰입니다:
MyComic.cbz
│
├─ 001.jpg ← first page (front cover)
├─ 002.jpg
├─ 003.jpg
│ …
├─ 050.jpg ← last page (back cover)
├─ ComicInfo.xml ← optional rich metadata
└─ cover.jpg ← optional thumbnail for library views
핵심 요소
| 요소 | 무엇인지 | 왜 중요한가 |
|---|---|---|
| 연속 이미지 파일 | 알파벳 순서대로 정렬되도록 이름이 지정됨 (001.jpg, 002.jpg, …) | 모든 리더에서 올바른 페이지 순서를 보장합니다. |
| 이미지 형식 | JPEG, PNG, GIF, WebP, AVIF, BMP, TIFF | 파일 크기, 시각적 충실도 및 장치 호환성을 결정합니다. |
| ComicInfo.xml | ComicRack 스키마를 따르는 선택적 XML | 제목, 저자, 시리즈, 호 번호, 언어, 페이지 유형 플래그 및 썸네일 데이터까지 저장합니다. 강력한 라이브러리 관리를 가능하게 합니다. |
| 표지 이미지 | cover.jpg/cover.png를 루트에 배치 | 많은 앱에서 갤러리의 만화 썸네일로 사용됩니다. |
| Unicode 파일명 | 최신 ZIP은 UTF‑8을 지원합니다 | 라틴어가 아닌 제목과 국제 만화에 필수적입니다. |
| ZIP 중앙 디렉터리 | 아카이브 끝에 있는 인덱스 | 리더는 이를 읽어 페이지 목록을 빠르게 구축하며; 여기에서 손상이 발생하면 전체 CBZ가 손상될 수 있습니다. |
아카이브는 이미 압축된 이미지만 압축하기 때문에 최종 크기는 보통 원본 파일들의 합계에 ZIP 오버헤드 몇 킬로바이트(< 5 %).
메타데이터 마법: ComicInfo.xml 및 페이지‑타입 플래그
CBZ는 추가 파일 없이도 완벽하게 작동하지만, ComicInfo.xml을 추가하면 단순한 이미지 스택이 검색 가능하고 풍부하게 설명된 만화가 됩니다. 다음은 최소 예시입니다:
<?xml version="1.0" encoding="utf-8"?>
<ComicInfo>
<Title>Starship Voyager</Title>
<Series>Space Adventures</Series>
<Number>12</Number>
<Writer>Jane Doe</Writer>
<Penciller>John Smith</Penciller>
<Inker>Alex Lee</Inker>
<Publisher>Galaxy Press</Publisher>
<Year>2024</Year>
<LanguageISO>en</LanguageISO>
<PageCount>50</PageCount>
<Pages>
<Page Image="001.jpg" Type="FrontCover"/>
<Page Image="002.jpg" Type="Story"/>
<Page Image="025.jpg" Type="DoublePage"/>
<Page Image="050.jpg" Type="BackCover"/>
</Pages>
</ComicInfo>
왜 신경 쓰나요?
- 라이브러리 도구 (ComicRack, Calibre 등)는 이러한 필드를 기준으로 정렬, 필터링 및 검색할 수 있습니다.
- 페이지 유형 플래그 (
FrontCover,BackCover,Advert,Deleted등)는 독자가 광고를 숨기고, 스토리 페이지만 표시하거나, 사용자 정의 표지 썸네일을 표시하도록 합니다. - 미래 대비 – Digital Comics Initiative가 CBZ v2.0 사양을 초안 중이며, 매니페스트 파일(
manifest.json)이 필수가 될 수 있지만 기존 리더는 여전히ComicInfo.xml을 지원합니다.
CBZ 파일 만들기 및 변환 (단계별)
1. 이미지 준비하기
- 각 만화 페이지를 이미지로 내보냅니다.
- 올바른 정렬을 보장하기 위해 제로 패딩된 번호(
001.jpg,002.jpg, …)로 이름을 지정합니다. - 대상 독자에 맞는 코덱을 선택하세요: 가장 작은 크기를 위해 JPEG, 무손실 아트를 위해 PNG, 최신 고품질 압축을 위해 WebP/AVIF.
2. (선택 사항) 메타데이터 생성
Tools like ComicTagger, cbr2cbz,와 같은 도구나 사용자 정의 스크립트를 사용하면 OCR + LLM을 이용해 ComicInfo.xml을 자동으로 채울 수 있습니다. 이 단계는 선택 사항이지만 대규모 라이브러리에는 강력히 권장됩니다.
3. 압축하기
# Navigate to the folder containing the pages
cd /path/to/pages
# Create a CBZ without extra compression (JPEGs are already compressed)
zip -0 -r ../MyComic.cbz *.jpg *.png ComicInfo.xml cover.jpg
# -0 = store (no compression) – speeds up the process
아카이버가 자동으로 처리하지 않았다면 생성된 .zip을 .cbz로 이름을 바꾸세요.
4. 아카이브 확인
import zipfile, pathlib, sys
def list_pages(cbz_path: pathlib.Path):
with zipfile.ZipFile(cbz_path, 'r') as z:
# Guard against zip‑bombs (max 500 MB uncompressed)
total = sum(z.getinfo(name).file_size for name in z.namelist())
if total > 500 * 1024 * 1024:
raise ValueError("Archive too large")
images = [n for n in z.namelist()
if n.lower().endswith(('.jpg', '.jpeg', '.png', '.webp', '.avif'))]
images.sort() # natural alphabetical order
return images
if __name__ == "__main__":
cbz = pathlib.Path(sys.argv[1])
for page in list_pages(cbz):
print(page)
python list_pages.py MyComic.cbz를 실행하면 페이지 파일 이름의 깔끔하고 정렬된 목록이 출력됩니다.
5. PDF로 변환 (인쇄 가능한 버전이 필요할 경우)
unzip -q MyComic.cbz -d tmp_pages
convert tmp_pages/*.jpg MyComic.pdf # ImageMagick's `convert`
rm -r tmp_pages
트렌드, 보안, 그리고 CBZ의 미래
| 트렌드 | 무슨 일이 일어나고 있나요 | CBZ에 미치는 영향 |
|---|---|---|
| 웹‑우선 배포 | 출판사는 사전 서명된 URL을 사용해 클라우드 스토리지에 CBZ를 호스팅합니다. | 더 빠른 DRM‑무료 다운로드; 더 쉬운 자체 출판. |
| 하이브리드/인터랙티브 만화 | index.html + 자산을 아카이브에 추가하면 “향상된” 만화(오디오, 비디오, HTML5)가 생성됩니다. | 웹 뷰를 지원하는 리더는 멀티미디어 레이어를 렌더링할 수 있습니다. |
| WebP 및 AVIF 채택 | ~15 %의 신규 릴리스(2024)에서 이러한 코덱을 사용합니다. | 품질을 유지하면서 30‑50 % 용량 감소—모바일 대역폭에 필수적입니다. |
| AI‑생성 메타데이터 | 이제 ComicTagger와 같은 도구가 OCR + LLM을 사용하여 ComicInfo.xml을 채웁니다. | 향상된 검색 가능성, 자동 태깅 및 라이브러리 정리. |
| 클라우드 동기화 독서 앱 | Chunky, Perfect Viewer 등은 Firebase/iCloud를 통해 진행 상황을 동기화합니다. | 휴대폰, 태블릿, 데스크톱 전반에 걸친 원활한 독서. |
| 표준화 추진 (CBZ v2.0) | DCI는 필수 manifest.json, 다중 해상도 자산 및 <DRM> 플래그를 제안합니다. | 고해상도 DPI 장치와 선택적 권리 관리에 대해 CBZ를 더욱 견고하게 만들 것입니다. |
| 보안 인식 | Zip‑bomb 공격(작은 ZIP → 압축 해제 시 기가바이트)은 실제 위협입니다. | 리더는 이제 추출 크기 제한을 적용하고 안전한 라이브러리(예: 검사 기능이 포함된 Python의 zipfile)를 사용합니다. |
개발자를 위한 보안 팁
CBZ를 추출하기 전에 전체 압축 해제 크기를 항상 검증하십시오. Python 코드 조각에 표시된 간단한 검사는 악성 아카이브가 디스크 공간이나 메모리를 고갈시키는 것을 방지합니다.
리더가 실제로 CBZ를 렌더링하는 방법
- 아카이브 열기 – 앱은 ZIP 중앙 디렉터리를 읽어 항목의 빠른 인덱스를 얻습니다.
- 이미지 파일 필터링 – 이미지가 아닌 항목(
ComicInfo.xml,__MACOSX/등)은 무시됩니다. - 알파벳 순 정렬 – 제로 패딩된 파일명 때문에 정렬된 목록이 의도한 페이지 순서와 일치합니다.
- 메타데이터 파싱 –
ComicInfo.xml이 존재하면 리더가 페이지 유형 플래그, 제목, 저자 등을 추출하고Advert또는Deleted로 표시된 페이지를 숨길 수 있습니다. - 페이지 렌더링 – 이미지가 디코딩됩니다(종종 최신 전자잉크 태블릿의 하드웨어 가속 JPEG/WebP 디코더를 사용) 그리고 한 장씩 표시되며, 부드러운 스크롤을 위해 다음 몇 페이지를 미리 가져옵니다.
- 상태 유지 – 읽기 위치, 북마크 및 주석이 로컬에 저장되거나 앱에 따라 클라우드와 동기화됩니다.
그 파이프라인 덕분에 CBZ는 네이티브 PDF만큼 빠르고 반응성이 뛰어나면서도 완전히 개방적이고 편집이 가능합니다.
핵심 요약: CBZ의 우아함은 그 단순성에 있습니다—누구나 열고, 편집하고, 재활용할 수 있는 일반 ZIP 파일이죠. 선택적인 ComicInfo.xml 메타데이터, 최신 이미지 코덱, 그리고 새로운 표준과 함께, DRM‑free이며 크로스‑플랫폼인 뿌리를 유지하면서 지속적으로 발전하고 있습니다.