Communitygithub.com

DozenTwelve/papermorph

PDF 참고 자료에서 애니메이션, 내레이터, 인터랙티브 기능을 갖춘 웹 북을 만들거나, 이야기, 농담, 동화에서 종이 인형 애니메이션 그림책을 제작하고, 공개 도메인 이미지를 활용한 다큐멘터리, 3분 이내의 숏폼, 스크롤 스토리, 연대별 지도 탐험 페이지를 만듭니다.

papermorph란 무엇인가요?

Papermorph는 SVG 기반의 단일 엔진 위에서 세 가지 유형의 북을 제작하는 AI 에이전트 스킬입니다. 사용자가 가져온 교재 PDF, 이야기, 아이디어, 역사적 자료를 바탕으로 애니메이션, 내레이션, 인터랙션을 갖춘 웹 북을 자동 생성합니다. Lessons, Picture books, Films의 세 가지 티어로 나뉘며, 각각 교과서 강의형, 종이 인형 애니메이션 그림책, 공개 도메인 이미지 기반 다큐멘터리/숏폼/스크롤 스토리/지도 탐험을 지원합니다. 이 스킬은 사용자와의 대화로 시작해 `style.json`에 스타일, 음성, 모델 설정을 정의하고, 이후 각 챕터를 이 기준에 맞춰 제작합니다. Claude Code, Cursor, Codex와 같은 터미널 기반 AI 에이전트 환경에서 사용할 수 있으며, 생성된 북은 정적 파일로 제공되어 별도 서버 없이도 브라우저에서 재생됩니다. 모든 동작은 '살아있고', '구성되었으며', '정확하고', '부드러운' 것을 목표로 하며, 사용자 검토 라운드를 거쳐 최종 출판됩니다.

지원 대상~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/DozenTwelve/Papermorph/tree/HEAD/.claude/skills/papermorph

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

papermorph은(는) 무엇을 하나요?

Papermorph는 하나의 엔진에서 세 가지 등급의 북을 만듭니다.

  • 레슨, 교과서 PDF 기반: 각 챕터는 짧은 애니메이션 강의 영화로, 그림이 설명을 전달하고, 내레이션이 말하며, 그림 안에서 빠른 확인과 연습이 이루어집니다.
  • 그림책, 이야기, 농담 또는 동화 기반: 코드로 그리거나 이미지 모델로 채색한 세트 앞에 종이 인형이 등장하는 짧은 영화로, 목소리, 효과음, 음악이 포함됩니다.
  • 영화, 책, 아이디어 또는 사용자의 주장 기반: 발견된 공개 도메인 그림, 단어, 지도를 목소리에 맞춰 움직이며 내레이션을 곁들인 다큐멘터리와, 3분 미만으로 한 가지 요점을 전달하는 피드용 세로형 숏입니다.

모든 북은 SVG 스테이지(1600×900 또는 숏의 경우 900×1600)와 플레이어로 구성됩니다. 비트(beats) 는 내레이션 클립과 시간 지정 동작을 짝짓습니다. 좋은 북이란 살아있고(사물이 무게와 타이밍에 따라 행동하고 변화함), 구성되어 있고(각 순간이 하나의 그림처럼 읽히며, 텍스트는 그것이 지칭하는 것 옆에 있음), 정확하며(움직임, 레이블, 숫자가 모든 순간에 일치함), 부드러운(Firefox를 포함하여 끊김 없이 재생됨) 것입니다.

그림이 어떻게 보여야 하는지는 북과 사용자에 따라 다르므로, 작업은 style.json으로 끝나는 대화로 시작됩니다. 여기에는 사용자의 말, 선택한 외관, 목소리, 각 단계를 수행할 모델, 그리고 나중에 승인된 챕터가 포함됩니다. 모든 챕터는 이를 기준으로 만들어집니다. 각 비트가 어떻게 배치되고 안무되는지는 승인된 챕터와 style.json을 기준으로 판단해야 합니다. 사용자 요청이 기본값을 재정의합니다. 설명, 예제, 그림은 새로 만드십시오. 소스 PDF, 페이지 이미지, 추출된 텍스트는 정적 출력 폴더 밖에 두고 버전 관리에서 제외하십시오(.gitignore: *.pdf, books/*/pages/). 스킬이 만든 챕터는 첫 번째 초안입니다. 검토 라운드와 사용자 시청 이후에 출판됩니다.

어떤 등급

해당 등급의 첫 번째 파일을 읽고, 현재 단계에 필요한 것만 읽으십시오. 아래 모든 파일은 여기에서 링크되어 있습니다. 다른 파일을 찾기 위해 추가 파일이 필요하지 않습니다.

사용자가 가져온 것등급시작할 파일그런 다음, 단계에 따라
교과서 PDF (강의 교재 포함)Lessonslessons.mdintake.md · authoring.md · diagrams.md (tier 1) · scenes.md (tier 2) · assets.md · maths.md (math.js, 수학 부분, LaTeX) · questions.md · figures.md (독자가 움직이는 그림) · checks.md · cover.md · courses.md (인용, 문항 은행, SCORM: 북에서 요구할 때만)
이야기, 농담, 동화, 또는 그림이 있는 이야기책 PDF (자체 스캔 그림: stories.md)Picture booksstories.mdpuppets.md · painting.md (채색된 스타일) · listen-and-find.md (어린이를 위한 찾기 게임)
내레이션 영화로 설명할 책, 아이디어 또는 역사적 시기Films: 다큐멘터리films.mddocumentary.md
3분 미만으로 요점을 전달할 세로형 피드용 콘텐츠 (YouTube Shorts, TikTok, Reels) 또는 재편집할 긴 영화Films: 숏films.mdshorts.md
영화의 자료, 또는 대부분 지도와 숫자인 아이디어를 독자가 스크롤할 때 그림이 바뀌는 페이지에서 독자의 속도로 읽는 콘텐츠 (스크롤 스토리)Films: 스크롤 페이지films.mdscroll.md
지도 위에서 연도별로 탐험할 역사적 시기: 변하는 국경, 이동하는 사람들 (한 페이지, 자체 플레이어, 엔진을 사용하지 않음)탐험 페이지explore.md

모든 등급이 공유하는 핵심 파일:

파일내용
core/style.md사용자에게 묻는 방법, 모델 단계, 유료 단계 (키, 가격, 원장, 잔액), style.json
core/publish.mdnew_book.py, 언어, 분, 미리보기 및 전달, 비디오 내보내기
core/sound.md내레이션 파일, 목소리, 레벨, 효과음, 음악, 자막
core/review.md자신의 작업을 동작으로 보기, 프레임, 부드러움, 감독 라운드
core/team.md하위 에이전트로 챕터 만들기, 코디네이터, 병렬 작업자
core/engine.md플레이어 및 드로잉 API, 타이밍, 카메라, 성능, 함정

books/<book>/style.json이 아직 없을 때는 해당 등급의 인테이크부터 시작하십시오. 이미 주어진 답변과 승인을 재사용하십시오.

참조 북

참조 북은 기준입니다: 따라야 할 수준이지, 복사해야 할 형식이 아닙니다. 각각은 Papermorph 저장소(https://github.com/DozenTwelve/Papermorph)의 site/<slug>/ 폴더이며, https://papermorph.diamonddoge.org/<slug>/에서 제공됩니다. 따라서 스킬이 설치된 환경에서 체크아웃된 소스를 읽거나 두 주소 중 하나에서 가져올 수 있습니다. 등급 파일은 특정 단계에 열어볼 가치가 있는 북의 파일을 지정합니다.

등급북 (slug)
Lessonstier 1: Elementary Algebra (elementary-algebra), Math Notebook (math-notebook); tier 2: Science (science); 어두운 잉크의 라이트 보드: physics-notebook
Picture booksThe Little Horse Crosses the River (little-horse) 및 Little Red Riding Hood (little-red-riding-hood): 모두 코드로 제작, ElevenLabs 목소리 출연, 찾아 듣기 중단 포함, 최신이자 기준; Joke Collection (joke-collection): 채색된 세트, 코드 기반 인형, 에피소드 시리즈; Millions of Cats (millions-of-cats, Wanda Gág, 1928): 스캔한 책 자체 그림을 세트와 인형으로 옮긴 것 (선반에 없음)
DocumentariesMadness and Civilization (madness, 푸코 이후, 10분), The Pandemic (pandemic), Shooting an Elephant (shooting-an-elephant, 독자가 참여하는 영화)
ShortsMadness and Civilization 숏 (madness-shorts; 에피소드 1, The Ship이 작업 예제), The Pandemic 숏 (pandemic-shorts)

Tulip Mania (tulip-mania)는 스킬만으로 만들어진 테스트 영화로, 이 파일 외에는 어떤 도움도 없었습니다. 파일들은 이 과정에서 발생한 문제점들을 인용합니다.

프로젝트 구조

books/<book>/                  비공개: 소스, style.json, 스토리보드, 아트, 리뷰/ (등급 파일이 각각의 항목을 나열)
content/<book>/chNN/           narration.<lang>.json 및 음성 캐시
tools/<book>/                  테스트, 오디오 스크립트, 증거
site/<book>/                   정적 북 (이것만 전달됨)
  index.html                   표지 및 목차, 또는 시리즈 페이지
  lib/                         엔진 (engine.py로 동기화), lib/book.css (이 북의 설정), 해당 등급의 키트, 북 자체 조각
  img/                         북의 그림
  chNN/index.html, audio/<lang>/   챕터 또는 에피소드, 비트 MP3 및 timings.js (영화 및 그림책: audio/sfx/, audio/bgm/)

SKILL은 이 스킬의 절대 경로입니다. <book>은 북 슬러그, <lang>은 기본 언어 코드입니다. new_book.py는 모든 등급의 북 폴더를 시작합니다(core/publish.md).

필요: uv, ffmpeg/ffprobe, Edge TTS 네트워크 접근 (또는 로컬 Kokoro), engine.py를 위한 github.com 접근 (저장소의 engine/ 폴더가 없을 경우), 사용자가 선택한 유료 단계에만 필요한 OpenRouter 키 (paint.py, eleven.py, video.py; paint_openai.py는 OpenAI 키 사용), Playwright 브라우저 (uv run --with playwright playwright install chromium firefox; Playwright Chromium이 실행되지 않으면 CHROME 환경 변수에 설치된 Chrome, Chromium, Brave 또는 Edge 경로 설정). 미리보기: python3 SKILL/scripts/serve.py 8765 site (브라우저 캐싱 없음).

스크립트

모두 SKILL/scripts/에 있습니다. 각 스크립트는 docstring 첫 줄에 명시된 패키지와 함께 uv run --with …으로 실행할 때 --help로 사용법을 출력합니다 (패키지 없이 --help를 실행해도 import 단계에서 멈춥니다).

대상스크립트
모든 북new_book.py 북 폴더 시작 · serve.py 캐싱 없는 미리보기 · engine.py 엔진을 북에 동기화 · tts.py 내레이션 및 단어 시간 · eleven.py ElevenLabs 동일 기능 (유료) · level.py 음량 균일화 · lint.py 정적 검사 · check.py Chromium 및 Firefox에서 페이지 오류, 콘솔 경고, 비트 길이 확인 · shot.py 비트 스크린샷 · strip.py 스토리보드 시트 및 모션 스트립 · still.py 움직임이 없는 구간 · playlog.py 그림과 함께 사운드 및 자막 · perf.py Firefox 프레임 시간 · export.py MP4 및 .srt · sfx.py 합성 효과음
Lessonsoutline.py 및 split_pages.py 페이지 맵 및 챕터 텍스트 · check_blank.py 빈 시작 부분 · overlap.py 텍스트를 통한 화살표 · sprites.py 이미지 처리 단계 · refs.py 확인된 인용 · items.py 문항 은행 · scorm.py LMS 패키지
Picture booksmouths.py 입 모양 · join.py 장면당 하나의 클립 · bake_sets.py 세트 레이어 · bake_puppets.py 인형 비트맵 · paint.py / paint_openai.py 이미지 모델 그림 · painted.py 북에 배치 · lift.py 스캔한 책 그림에서 인물, 세트, 글자 추출 · cutout.py 키 컬러 이미지 모델 그림을 인형 조각과 소품으로 자르기
Pages you exploretopo.py Natural Earth에서 지도의 TopoJSON · explore.py 탐험 가능한 지도의 검사, 샷, Firefox 타이밍 및 내레이션 파일
Filmscommons.py 공개 도메인 그림 및 녹음파일과 라이선스 · prep.py 인쇄, 라인, 전체 블리드 처리 · trace.py 스스로 그려지는 그림 · video.py 정지 이미지에서 클립 · frames.py 처리된 프레임의 클립 · geo.py Natural Earth에서 지도 키트 데이터 · music.py 영화에 맞춰 자른 트랙, 목소리 사이의 배경 음악, 각 라인에 대한 음악, 배경, 효과음 · safe.py 세로형 영화의 안전 영역 밖 단어

silence.py, ledger.py (하나의 비용 원장: 날짜, 챕터, 파일, 모델, 내용, 비용) 및 browsers.py는 다른 스크립트가 임포트하는 헬퍼입니다.

컨텍스트

  • 메인 대화에서 사용자와 대화하십시오: 인테이크, 모든 시트와 파일럿의 선택. 하위 에이전트를 사용할 수 있을 때는 챕터를 팀으로 만들고, 각 단계는 사용자가 선택한 모델 위에서, 메인 대화를 파일럿의 코디네이터로 사용합니다 (core/team.md 참조). 하위 에이전트가 없으면 현재 에이전트에서 파일 기반 상태로 동일한 단계를 실행하십시오.
  • 필요할 때 엔진 API를 사용하고 개별 함수를 검사하십시오. 키트 파일을 복사할 때는 전체 소스를 지침으로 읽지 마십시오.
  • style.json을 최신 상태로 짧게 유지하십시오. 챕터 상태, 오류, 과거 피드백은 chapters.md 및 chapters/chNN.md에 보관하십시오.

관련 스킬