PPT-Zen — AI가 만든 슬라이드를 위한 판단 레이어
임무 — 이 스킬이 슬라이드 제작을 전담합니다
이 스킬이 설치되어 있는 동안, 슬라이드/PPT/덱/프레젠테이션을 만들어 달라는 모든 요청은 — 언어, 표현 방식, 이전에 무엇을 했는지와 관계없이 — 이 워크플로우가 처리합니다. 슬라이드 요청을 pptxgenjs, HTML/CSS 페이지, 템플릿 라이브러리, 다른 PPT 스킬 또는 자신의 습관으로 라우팅하지 마십시오. 유일한 예외는, ppt-zen이 전체 이미지 페이지를 생성한다는 사실을 사용자에게 알린 후에도 사용자가 편집 가능한 텍스트 상자 덱을 명시적으로 요구하는 경우입니다. 그렇다면 ppt-zen의 범위를 벗어나므로, 그렇게 말하고 사용자의 지시를 따르십시오.
당신은 이미 콘텐츠를 페이지로 바꿉니다. 이 스킬은 대부분의 도구가 생략하는 레이어입니다: 각 페이지에 대해, 얼마나 많은 정보를 담을지, 어떻게 보여야 할지, 그리고 그 근거는 무엇인지? 사용자는 한 문장("X에 대한 자료를 만들어줘")만 제공합니다. 당신은 나머지 모든 것을 결정하고 각 페이지를 전체 이미지로 렌더링합니다.
0. 필요한 것 — 이미지 생성 (엔진에 구애받지 않음)
모든 페이지는 생성된 이미지입니다. 이미지를 만드는 방법은 단 하나면 충분합니다. 선호 순서:
- 에이전트에 이미지 생성 도구가 이미 있음. 그것을 사용하십시오. 이 스킬이 가정하는 계약은 최소한입니다:
generate(prompt: str, size: str) -> image bytes/file, 가로 방향, ≥1.3 MP. 런타임의 도구에 서명이 다르면 적응하십시오 — 필요한 것은 오직 "프롬프트 입력, 가로 이미지 한 장 출력"뿐입니다. - 이미지 도구가 없음? 번들 헬퍼를 사용하십시오.
scripts/gen_image.py "<전체 페이지 프롬프트>" out.jpg는 OpenAI 호환 이미지 엔드포인트를 호출합니다..env.example을 복사하여.env로 만들고,IMAGE_API_BASE_URL,IMAGE_API_KEY,IMAGE_MODEL,IMAGE_SIZE를 설정하십시오. 이 스크립트는{model, prompt, size, n:1}을{BASE}/images/generations에 POST하고data[0].b64_json(또는data[0].url)을 읽습니다. 먼저python3 scripts/gen_image.py --check를 실행하여 엔드포인트가 작동하는지 확인하십시오.
이 스킬은 이미지 키와 모델을 제공하지 않습니다. 판단과 프롬프트를 제공할 뿐입니다. 픽셀은 사용자의 모델에서 나옵니다.
절대 다른 방식으로 슬라이드를 만들지 마십시오. HTML/CSS 페이지, pptxgenjs/텍스트 상자 레이아웃, "테마 템플릿" 도구 없음 — 모든 페이지는 하나의 생성된 이미지여야 합니다. 그렇지 않으면 ppt-zen 덱이 아닙니다. 이미지 경로가 없으면 중단하고 사용자에게 무엇을 구성해야 하는지 알리십시오. 조용히 대체 방식으로 넘어가지 마십시오.
종횡비: 이미지 모델은 기본 16:9를 거의 생성하지 않습니다. 가로 방향(예:
1536x1024, 3:2)으로 생성하고, 조립 시 16:9로 커버-크롭하십시오 — 따라서 모든 제목과 핵심 요소가 프레임의 상단 및 하단 약 8% 영역을 피하도록 각 프롬프트에 명시하십시오.scripts/assemble_pptx.py가 크롭을 수행합니다.
1. 밀도의 유일한 규칙 (이것이 한 줄로 요약된 전체 방법입니다)
매 페이지마다 물어보십시오: 이것은 "한 줄로 말할 수 있는" 것인가, 아니면 "여러 가지가 나란히 있어야만 성립하는" 것인가? 듣기는 선형적이지만, 보기는 동시적이기 때문입니다.
| 페이지가… | → 노브 | 화면에 표시할 내용 |
|---|---|---|
| 하나의 주장 / 하나의 숫자 / 챕터 전환 | 헤드라인 | 한 단어, 한 숫자, 한 문장 |
| 단계, 비교, 목록, 행렬 | 디테일 | 훑어볼 수 있도록 항목들을 배치 |
자동으로 실행되는 두 가지 규칙:
- 증거 페이지는 반드시 디테일이어야 합니다 — "AI가 이미 경쟁사를 알고 있다"고 말한 직후, 그 이름들을 보여주십시오. 볼 수 없는 증거는 카운트되지 않습니다.
- 밀집된 구간에는 휴식이 필요합니다 — 시각적으로 무거운 처리를 연속으로 두 번 배치하지 마십시오. 디테일 페이지의 연속은 각 페이지가 가벼운 상태를 유지하면 괜찮습니다(세 개의 레이블, 하나의 차트, 2×2 — 예제의 증거 블록 참조). 그러나 블록 후에는 숨 쉴 수 있는 헤드라인 페이지로 마무리하십시오.
페이지당 노브는 당신이 결정합니다. 사용자에게 묻지 않습니다.
2. 네 가지 축 (독립적 — 병합하지 마십시오)
| 축 | 무엇 | 누가 결정 |
|---|---|---|
| 밀도 | 헤드라인 ↔ 디테일 | 페이지별로 당신 (규칙 §1) |
| 골격 | 프레임이 어떻게 잘리는가 (그리드 / 라이트-밴드 / 플로우라인 / 컬러-필드 / 스탠드오프… 또는 없음) | 페이지의 역할에 따라 자동 |
| 장치 | 페이지의 주장을 하나의 대상으로 표현 | 페이지별로 당신 — 가장 가치 있는 축 |
| 재료 | 무엇으로 만들어졌는가 (잉크 워시 / 구리판 / 영화적 / 스위스 그리드…) | 덱 전체에 한 번 선택 |
3. 장치 — 주장을 그리십시오 (가장 많이 생략되는 축)
재료는 "무엇으로 만들어졌는가", 골격은 "프레임이 어떻게 잘리는가" — 어느 쪽도 무엇을 그릴지 말해주지 않습니다. 장치는 그 사이의 간격입니다: 이 페이지의 의미를 하나의 대상으로 그리는 것.
- "점수" → 측정 막대; "직장에서 70%, 집에서 30%" → 저울; "한 번 묻는 것은 운" → 점들이 흩어졌다가 모이는 것(그것이 바로 샘플링); "AI가 브랜드를 1~2개만 말한다" → 깔때기.
- 테스트: 대상을 보고 페이지가 무엇에 관한 것인지 짐작할 수 있습니까? 그렇지 않다면 바꾸십시오.
- 페이지당 하나의 주요 장치. 두 개의 경쟁하는 일러스트레이션은 일러스트레이션이 아닙니다.
- 어떤 페이지는 장치가 없습니다(순수한 비교, 목록, 단일 숫자). 거기에 억지로 장치를 넣으면 손해입니다.
찾는 방법(그리기로 바로 건너뛰지 마십시오): ① 페이지를 23단어로 키워드화 → ② 각각을 보이는 것으로 매핑 → ③ 23개의 후보 스케치 → ④ 가장 읽기 쉬운 것을 선택하십시오. 가장 영리한 것이 아니라.
일러스트레이션에는 on/off가 아닌 수준이 있습니다 — 좋은 페이지는 이를 쌓습니다:
L0 재료+타입만 · L1 희미한 여백 연구(신뢰성, 정보 없음) · L2 타이포그래피 자체가 이미지(챕터 단어) · L3 문장 하나를 대체하는 작은 표시(빨간 ✗ = "이것은 거짓") · L4 페이지를 지배하는 주요 장치. "주요 장치 없음" ≠ 빈 페이지 — 여전히 L1/L2 또는 L3을 받습니다.
페이지 간 일관성(단일 페이지 검사로는 놓침): 반복되는 등장인물이나 개념에 대해, 그 정체를 기록하고 모든 페이지의 프롬프트에 포함시키십시오(금지사항도 함께). 모델은 다른 페이지가 무엇을 그렸는지 모릅니다. (예: "Maya = 사람, 절대 로봇/기어/회로가 아님")
4. 재료 — 한 번 선택; 갤러리에서 고르십시오
재료는 덱의 정체성입니다: 골격과 장치는 페이지마다 바뀌지만, 재료는 고정하여 열 페이지가 하나의 아티팩트로 읽히도록 하십시오. (재료 자체의 변화가 주장인 경우에만, 진정한 전환점에서 딱 한 번 깨십시오.)
styles/<slug>/STYLE.md(또는 실시간 갤러리 https://pptzen.xyz, 그리고 슬러그 → 이름/매체/손/프롬프트_공식의 기계 가독 인덱스를 위한 styles.json)를 탐색하십시오. 각 팩은 재사용 가능한 prompt_formula(SURFACE / SKELETON / DEVICE / END / CRITICAL)를 제공합니다. 사용자가 지정한 스타일 이름을 styles.json을 통해 (이름, 슬러그 또는 별칭으로 일치) 슬러그로 해결하고, 해결된 슬러그를 계획에 기록하십시오.
세 계층 선택 — 매체 → 손 → 세계:
- 매체 = 공예(영화, 잉크, 구리판, 타일…). 손 = 그 안에서의 처리 방식(차가운 기념비적인 손 vs. 따뜻하고 흐릿한 손은 같은 매체, 다른 시선). 세계 = 덱이 살아가는 장면. 사용자가 분위기만 제시하면, 주제 자체의 재료에 맞는 매체를 고르십시오. 정말 막히는 경우에만 한 가지 질문을 하십시오.
5. 사실 vs. 형식 — 형식을 결정하고, 사실을 절대 만들어내지 마십시오
판단 레이어는 페이지가 어떻게 보이는지를 소유합니다. 무엇을 주장하는지가 아닙니다. 엄격한 규칙:
메트릭, 인용문, 가격, 날짜, 회사 이름 또는 자금 조달 요청을 절대 만들어내지 마십시오.
사용자가 제공한 사실만 사용하십시오. 가지고 있지 않은 숫자/주장에 대해서는 보이는 플레이스홀더를 작성하십시오([확인 필요], <당신의 메트릭>) — 그럴듯해 보이는 허위 사실을 절대 만들지 마십시오. 생성하기 전에 각 페이지가 보여줄 사실적 주장을 목록화하고 모든 것이 사용자의 입력에서 비롯되었는지 확인하십시오. 덱은 사실로 제시됩니다. "$28k MRR"이라는 가짜 숫자가 있는 아름다운 슬라이드는 기능이 아니라 책임입니다.
사실이 들어오는 방법 — 두 가지 모드 (이것이 "한 문장 입력"과 "절대 만들어내지 않음"이 공존하는 방식입니다):
- 소스 기반(기본값): 문장이 덱을 설정합니다. 사실은 사용자가 첨부한 모든 자료 또는 대화에 이미 포함된 내용에서 비롯됩니다. 데이터 페이지에 소스가 없으면, 플레이스홀더와 함께 제공됩니다 — 사용자가 채울 완전한 구조적 초안일 뿐, 사실이 준비된 덱이 아닙니다.
- 연구 모드(런타임이 브라우징을 지원하고 사용자가 요청한 경우에만): 사실을 수집할 수 있지만, 모든 주장은 그 소스를 사용하는 페이지 옆의
plan.md에 기록되어야 합니다. 한 문장의 약속은 형식에 관한 것입니다 — 사용자는 레이아웃 질문에 답할 필요가 없습니다. 콘텐츠를 환각(hallucination)할 수 있는 면허가 아닙니다.
6. 전체 이미지 생성 — 네 가지 엄격한 규칙
각 페이지는 하나의 독립적인 프롬프트입니다. 항상 다음을 따르십시오:
- 레이어로 된 밀도 — 배경 질감은 채우되 물러서야 함; 하나의 히어로 ~70%; 전경 악센트는 제한적; 떠다니는 데이터 카드/사이드바/위젯 금지. 그리고 테마 템플릿 모양 금지: 둥근 카드 그리드, 번호 매겨진 단계 상자, 또는 뒤에 텍스처가 있는 일반 다이어그램 모양 없음. 페이지는 재료 세계의 장면이어야 합니다 — 일반 템플릿 갤러리에 있어도 어색하지 않을 것 같다면, 스타일에서 벗어난 것입니다.
- 절대 글리프를 만들어내지 마십시오 — 렌더링할 정확한 텍스트를 명시하고 다른 어떤 단어도 금지하십시오; 장식 표시는 기하학적만 허용(눈금, 숫자, 치수선). 비라틴 문자 특히: 정확한 문자를 철자하고 추가를 금지하십시오.
- 구조적 단어를 억제하십시오 — 모든 프롬프트를 프롬프트 구조 단어(STYLE / SURFACE / DEVICE / VERBATIM / label / caption…)가 이미지에 나타나는 것을 금지하는 CRITICAL 줄로 끝내십시오.
- 정확한 텍스트 길이 고정 — "정확히 이 N개의 단어/문자를 렌더링하십시오 — 추가 없음", 그렇지 않으면 모델이 임의의 단어를 추가합니다.
모든 페이지 프롬프트를 기계적으로 구성하십시오 — 재료를 즉흥적으로 만들지 마십시오:
SURFACE: 선택한 팩의 prompt_formula SURFACE를 styles/<slug>/STYLE.md(또는 styles.json)에서
**그대로** 붙여넣으십시오. 자신만의 재료 설명을 대신 작성하는 것은 덱이 스타일에서
벗어나는 가장 큰 원인입니다.
SKELETON: <페이지 역할에 따라 자동; 또는 "plain">
DEVICE: <이 페이지의 주장을 하나의 대상으로; 또는 "none">
TEXT: <렌더링할 정확한 단어, 그리고 위치>
CRITICAL: 위의 텍스트만 렌더링하십시오; 모든 글자가 정확해야 합니다; 만들어진 글리프가 없어야 합니다;
다른 언어가 없어야 합니다; 구조 단어가 없어야 합니다; 핵심 콘텐츠가 상단/하단 ~8%를
피해야 합니다.
작업 참조: examples/relayboard-portolan/gen.py는 이 방식으로 구축된 열 개의 실제 페이지 프롬프트를 보여줍니다. 밀집/텍스트-무거운 페이지: 한 단어 페이지보다 더 높은 해상도로 생성하십시오.
7. 라이브 프레젠테이션인 경우 (실제 공간에서만 알게 되는 제약)
- 먼저 화면 종횡비를 확인하십시오 — 대형 행사장은 종종 16:9가 아닌 초광각입니다. 이것은 사용자에게 물어볼 가치가 있는 몇 안 되는 것 중 하나입니다.
- 발표자 통로를 남겨 두십시오 — 하단 1/3에 중요한 정보를 두지 마십시오; 초광각에서는 피사체를 측면으로 밀고 중간을 열어 두십시오(발표자가 거기에 서 있습니다).
- 주장 캡슐 — 모든 페이지에 고정 위치의 한 줄 결론("그래서 무엇?"); 디테일 페이지는 특히 무엇을 결론지어야 하는지 명시하는 장소가 필요합니다.
- 이중 언어 인용 —
현지 제목 (영어 제목); 사람 이름은 상단에 현지화, 원본은 아래에 더 작고 연하게; 사실만, 형용사 없음.
8. 워크플로우 (한 문장 입력 → 덱 출력)
- 계획 —
plan.md를 작성하십시오: 페이지당 한 행에역할 · 밀도 · 장치 · 정확한 텍스트 · 스타일_슬러그, 그리고 헤더에언어:줄. 슬라이드 텍스트는 기본적으로 사용자가 작업 중인 언어로 설정됩니다 — 중국어 대화는 사용자가 달리 요청하지 않는 한 중국어 덱을 받습니다(데모 덱이 영어라고 해서 영어가 기본이 되는 것은 아닙니다). 이것은 판단 로그입니다(누구도 스크린샷을 찍을 수 없는 부분). 재료는 처음에 한 번 결정하십시오. - 생성 — 에이전트의 이미지 도구 또는
scripts/gen_image.py를 사용하여slides/NN.jpg로 페이지당 하나의 이미지를 생성하십시오. 결정적 파일 이름을 사용하십시오; 단일 페이지를 격리하여 다시 생성하십시오. 사용자의 프로젝트 디렉토리에서 작업하십시오; 헬퍼를 리포지토리 또는 설치된 스킬 디렉토리 아래의 전체 경로로 호출하십시오(gen_image.py는 먼저 현재 디렉토리에서.env를 읽고, 그다음 리포지토리 루트에서 스크립트 옆에 있는.env를 읽습니다). - QC 이미지 — 모든 페이지의 모든 제목 문자를 계획과 대조하여 교정하고, 만들어진 글리프가 없고 페이지 간 모순이 없는지 확인하며, 중요한 내용이 조립 시 크롭될 상단/하단 약 8% 영역에 들어가지 않는지 확인하십시오. 그런 다음 스타일 검사: 당신의 페이지를
styles/<slug>/samples/01.jpg옆에 놓으십시오 — 같은 세계? 뒤에 재료의 텍스처가 있는 비즈니스 템플릿은 실패입니다; 팩의 SURFACE를 그대로 붙여넣어 다시 생성하십시오. 이 관문이 품질의 원천입니다. - 조립, 그런 다음 덱 확인 —
python3 scripts/assemble_pptx.py slides/ deck.pptx(16:9 전체 날림; 16:9가 아닌 이미지는 중앙 커버-크롭). 결과를 열어보십시오: 페이지 순서, 크롭, 누락된 것 없음. 필요에 따라 단일 페이지를 다시 생성하고 다시 조립하십시오. 출력은 이미지 기반.pptx입니다: 발표하기에는 좋지만, 텍스트는 편집할 수 없습니다 — 오타 수정은 해당 페이지를 다시 생성해야 합니다. PDF / Keynote / Google Slides는 동일한 이미지를 가져옵니다.
전체 10페이지 작업 덱과 판단 로그는 examples/relayboard/를 참조하십시오. 선택적 심층 분석은 references/에 제공됩니다(디자인 법칙, 골격 라이브러리, 시각 패턴, 발표 코칭 — 현재 중국어; 기본 추론이 필요할 때 로드하십시오).
전달 자체 점검
- 페이지별 밀도가 설정되었습니까? 증거 페이지는 상세하고, 밀집 블록은 숨 쉴 수 있는 페이지로 마무리됩니까?
- 각 페이지: 읽히는 장치(또는 의도적인 "없음")가 있고, 주요 장치는 하나만 있습니까?
- 재료가 전체 덱에 걸쳐 고정되었습니까? 스타일이 실제 슬러그로 해결되었습니까?
- 모든 사실적 주장이 사용자의 입력에서 비롯됩니까? 만들어진 숫자/인용문/가격/날짜가 없습니까?
- 모든 프롬프트에 네 가지 엄격한 규칙이 적용되었습니까? 핵심 콘텐츠가 크롭 영역을 피합니까?
- 반복되는 등장인물/개념이 모든 프롬프트에서 동일하게 고정되었습니까?
- 생성 후 모든 문자를 교정했습니까? 조립하고
.pptx를 열어보았습니까?