GUIDE FOR THE LLM ERA

A4 PDF & 바닐라 프리젠테이션 가이드

마우스로 일일이 맞추는 번거로움 없이, LLM 에이전트에게 맡겨 A4 문서와 발표 슬라이드를 만드는 법

0. 이 도구는 무엇이고, 왜 HTML인가

이력서·계약서·제안서 같은 A4 문서(PDF), 그리고 세미나·발표용 슬라이드를 파워포인트(PPT)나 한글(HWP)에서 마우스로 칸을 맞추느라 고생하는 대신, 텍스트만으로 만드는 도구 모음입니다.

가장 먼저 알아둘 전제가 있습니다. 이건 여러분이 직접 코딩하는 도구가 아니라, LLM 에이전트에게 맡기는 스킬입니다. 여러분은 코드를 외울 필요 없이, "이런 문서를 만들어줘"라고 말로 시키고 결과를 보고 다듬으면 됩니다. 이 가이드도 명령어 암기가 아니라 원리를 이해하고 에이전트에게 잘 맡기는 법에 초점을 둡니다.

💡 그런데 왜 하필 HTML일까요?

LLM이 가장 잘 다루는 포맷이라서입니다. HTML·CSS는 글자(텍스트)로 된 코드라, 에이전트가 정확히 읽고 쓰고 고칠 수 있습니다.
수정과 재사용이 쉽습니다. 한 단어만 바꿔도 즉시 반영되고, 같은 양식을 계속 찍어낼 수 있습니다.
마우스로 1px씩 맞출 필요가 없습니다. "간격 16px, 3등분" 같은 규칙(CSS)을 주면 컴퓨터가 알아서 줄을 맞춰 줍니다.

📒 먼저 알아둘 용어 (비유로 설명)

HTML: 정보가 들어갈 문서의 뼈대(텍스트)를 세우는 언어입니다.
CSS: 뼈대에 간격·정렬·색 같은 화장을 입히는 규칙입니다.
터미널(Terminal): 마우스 클릭 대신 키보드로 컴퓨터에 명령을 입력하는 검은 창입니다. (보통은 에이전트가 대신 다룹니다)
LLM 에이전트: Claude Code처럼 여러분의 말을 알아듣고 파일을 만들고 명령을 대신 실행해 주는 AI입니다.
스킬(Skill): 에이전트가 특정 작업을 잘하도록 정리해 둔 설명서(SKILL.md)와 도구 묶음입니다.

🔗 공식 소스코드 저장소 (GitHub · 공개)

이 가이드에서 다루는 A4 조판 도구와 슬라이드 템플릿의 원본 소스는 아래 공개 저장소에 있습니다.
공식 저장소: jih4855/custom-productivity-suite

1. 딱 한 번만 준비하기

처음 한 번만 도구를 내 컴퓨터에 받아두면 됩니다. 그런데 이것조차 터미널을 열어 명령어를 칠 필요가 없습니다. 에이전트에게 아래 저장소 주소를 던지면서 "준비해줘"라고 말하면 알아서 내려받고 폴더 정리까지 끝내 줍니다.

이 저장소 받아서 A4 PDF랑 슬라이드 만들 준비해줘 → https://github.com/jih4855/custom-productivity-suite

그러면 에이전트가 저장소를 내려받고(클론), 도구 폴더로 들어가, 사용 설명서(SKILL.md)까지 미리 읽어 둡니다. 여러분은 곧바로 다음 단계로 넘어가 만들고 싶은 것을 말하기만 하면 됩니다.

🚫 weasyprint는 설치하지 마세요

다른 글이나 옛 메모가 pip install weasyprint를 시키는 경우가 있는데, 이 도구는 weasyprint를 쓰지 않습니다. 변환은 여러분 컴퓨터에 이미 깔린 구글 크롬(Chrome)이 담당합니다. weasyprint는 맥에서 의존성(gobject) 문제로 설치가 자주 깨지고, 깔아도 쓰이지 않습니다. 구글 크롬만 설치돼 있으면 준비 끝입니다. 파이썬(Python 3.9 이상)이 필요한데, 이것도 없으면 에이전트에게 "파이썬도 설치 도와줘"라고 하면 됩니다.

⌨️ 직접 받아보고 싶다면 (선택 · 몰라도 됩니다)

명령어가 궁금한 분을 위해 적어둡니다. 위처럼 에이전트에게 맡기면 칠 필요가 없습니다.

git clone https://github.com/jih4855/custom-productivity-suite cd custom-productivity-suite/skills/html-to-a4-pdf

2. LLM에게 맡기는 법

이 가이드의 핵심입니다. 도구를 깔았다면, 이제 직접 코드를 짜는 대신 에이전트에게 맡깁니다. 전체 흐름은 이렇습니다.

  • ① 스킬을 먼저 읽힌다 — 에이전트에게 "이 폴더의 SKILL.md부터 읽어"라고 합니다. 그래야 여백·간격·페이지 나눔 규칙을 지켜서 만듭니다.
  • ② 만들 것을 말로 설명한다 — 내용과 원하는 형태를 자연어로 전달합니다.
  • ③ 에이전트가 HTML 작성 → 크롬으로 PDF 변환 → 화면에 미리보기까지 자동으로 처리합니다.
  • ④ 결과를 보고 고칠 곳을 말한다 — 마음에 안 드는 부분을 그대로 말로 지시하면 다시 다듬어 줍니다.

처음 시킬 때

html-to-a4-pdf 스킬의 SKILL.md를 먼저 읽고, 아래 경력 내용으로 A4 한 장짜리 이력서를 PDF로 만들어줘.
이 계약 조건으로 표준 근로계약서를 A4 PDF로 만들어줘. 다 만들면 화면에 띄워줘.

결과를 보고 다듬을 때

표 칸 간격이 좁아 보여. 조금 더 넓혀줘.
내용이 한 장을 넘쳤어. 여백 줄이지 말고 2페이지로 자연스럽게 나눠줘.
제목이 너무 작아. 한 단계 키우고, 본문이랑 간격도 살짝 띄워줘.

느낌으로도 되지만, 숫자로 말하면 더 정밀합니다

코드 용어를 몰라도 됩니다. "무엇을, 어떤 느낌으로, 몇 장에"만 말해도 에이전트가 알아서 만들어 줍니다. 다만 디자인을 "느낌"으로만 전달하면(예: "간격이 좁아 보여") 결과가 그때그때 들쭉날쭉할 수 있습니다. 더 정밀하게 맞추고 싶다면, 양식의 각 요소를 이름과 숫자로 짚어 주는 편이 훨씬 정확합니다.

숫자를 모를 때는 어렵지 않습니다. 먼저 에이전트에게 "각 요소가 지금 몇 px인지 알려줘"라고 물어본 뒤, 돌려받은 숫자를 기준으로 "이걸 이 값으로 바꿔줘"라고 지시하면 됩니다.

이 표의 셀 여백, 제목 글자 크기, 칸 사이 간격이 지금 각각 몇 px인지 먼저 알려줘.
표 셀 여백을 8px에서 12px로 늘리고, 제목 글자는 24px에서 32px로 키워줘.
💡 핵심

느낌("좁아", "커 보여")으로도 되지만, 요소 이름 + 숫자("셀 여백 8 → 12px", "제목 24 → 32px")로 말할수록 결과가 정확해집니다. 숫자가 막막하면 "지금 값부터 알려달라"고 하면 됩니다.

3. A4 PDF가 만들어지는 원리

원리를 알면 에이전트에게 더 정확히 시킬 수 있습니다. 일반 웹페이지는 아래로 끝없이 스크롤되지만, 이력서·계약서는 A4 한 장(가로 210mm, 세로 297mm) 안에서 레이아웃이 딱 맞아야 합니다. 그래서 이 도구는 '한 장씩 끊어지는 종이(하드 페이지)' 방식으로 동작합니다.

① 종이 틀은 a4-base.css가 고정

a4-base.css 파일이 종이 크기·여백·페이지 나눔 같은 '종이의 틀'을 잡아 줍니다. 덕분에 에이전트는 종이 규격을 매번 다시 계산하지 않고, 종이 안에 담길 내용과 디자인에만 집중합니다.

② 변환은 구글 크롬이 담당

완성된 HTML은 convert.py구글 크롬을 화면 없이(headless) 실행해 '인쇄하기 → PDF로 저장'을 자동으로 눌러 주는 방식으로 변환합니다. 별도 변환 프로그램(weasyprint 등)이 필요 없는 이유가 이것입니다. 에이전트가 대신 실행하지만, 명령 자체는 이렇게 단순합니다.

# HTML 문서를 A4 규격 PDF로 변환합니다. python3 convert.py my_document.html -o my_document.pdf # 생성된 PDF를 바로 열어 검수합니다. open my_document.pdf

③ 에이전트가 지키는 조판 규칙

스킬의 SKILL.md에는 문서를 전문가가 만든 것처럼 보이게 하는 규칙들이 정리돼 있습니다. 핵심만 추리면 이렇습니다.

  • 간격은 4의 배수로: 8, 12, 16, 24, 32px처럼 4의 배수만 씁니다. 9, 13px 같은 어중간한 값은 정밀도를 떨어뜨립니다.
  • 여러 칸은 1fr로 균등 분할: 표나 카드를 가로로 놓을 때 CSS Grid의 repeat(N, 1fr)로 컴퓨터가 폭을 균등하게 나눕니다.
  • 페이지는 분량으로 나눈다: 내용이 한 장을 넘치면 여백을 줄이지 말고 내용 분량과 페이지 분배로 조정합니다.
  • 인라인 스타일 금지: 태그 안에 style="..."을 직접 넣지 않고, 모든 디자인 규칙을 <style> 한곳에 모읍니다. 나중에 수정·추적이 쉬워집니다.
🔁 한 양식을 계속 찍어낸다면

같은 형식의 문서를 반복 생성한다면(예: 매달 계약서), 스킬 안의 반복 문서 엔진(engine-creator)이나 이력서 엔진(resume)을 씁니다. 내용만 담긴 data.json을 바꾸면 같은 디자인으로 계속 출력됩니다. 이것도 "매달 쓰는 계약서 엔진 만들어줘"처럼 에이전트에게 맡기면 됩니다.

4. 바닐라 슬라이드의 원리

바닐라 프리젠테이션(Vanilla Presentation)은 파워포인트 없이, 순수 HTML·CSS·JS만으로 16:9 화면(1280px × 720px) 슬라이드 쇼를 만드는 방식입니다. 크롬 같은 브라우저만 있으면 바로 띄울 수 있고, 화면 전환 모션이 매끄럽습니다.

① 손코딩이 아니라 'JSON 스펙 → 자동 조립'

이 슬라이드는 <div>를 일일이 손으로 짜는 게 아닙니다. 먼저 슬라이드 구조를 JSON 스펙(슬라이드별 제목·메시지·구성요소)으로 잡고, build.py가 그 스펙을 읽어 HTML로 자동 조립합니다. 디자인은 테마 CSS가 통째로 담당해서, 빌드할 때 -t 옵션으로 테마를 고릅니다.

  • minimal-tech-hero — 밝은 미니멀 SaaS·AI 랜딩 느낌 (기본값)
  • flat-serif — 명조 제목 + 플랫 편집 디자인, 인디고 포인트

② 슬라이드를 잘 만드는 원칙

  • 시각 위주, 설명은 말로: 슬라이드에는 표·다이어그램·이미지를 담고, 자세한 설명은 발표자의 말로 합니다.
  • 한 장에 컴포넌트 최대 2개: 욕심내 많이 넣지 않습니다. 넘치면 슬라이드를 나눕니다.
  • 텍스트는 한 문장으로: 대주제·소주제만 줄바꿈 없이 짧게 적습니다.
  • 이동은 방향키: 다음은 오른쪽 방향키()나 [Space], 이전은 왼쪽 방향키()입니다.
이 발표 대본으로 8장짜리 슬라이드 만들어줘. 테마는 flat-serif로 하고, 슬라이드 구조 JSON부터 보여줘.

5. 자주 막히는 곳

처음 쓸 때 마주치기 쉬운 상황과 해결 방향입니다. 대부분은 에이전트에게 증상을 그대로 말하면 고쳐 줍니다.

🚨 weasyprint 관련 에러가 나요

이 도구는 weasyprint를 쓰지 않습니다. 설치하려 하지 말고, 구글 크롬이 깔려 있는지만 확인하세요. 크롬을 특이한 경로에 설치했다면 에이전트에게 "CHROME_BIN 환경변수로 크롬 경로 잡아줘"라고 하면 됩니다.

🚨 PDF가 빈 문서(백지)로 나와요

주로 HTML 태그의 짝이 안 맞을 때입니다. 여는 <div>에는 닫는 </div>가 있어야 합니다. 에이전트에게 "태그 짝이 맞는지 검사하고 다시 변환해줘"라고 시키면 점검 후 다시 만들어 줍니다.

🚨 한글이 어색하게 잘려 줄바꿈돼요

한국어는 단어 중간에서 끊기지 않게 하는 설정이 필요합니다. 보통 word-break: keep-all이 빠진 경우입니다. 에이전트에게 "한국어 줄바꿈 규칙(keep-all) 적용해줘"라고 하면 됩니다.

💡 내용이 페이지를 넘칠 때

여백을 억지로 줄이지 마세요. 글자가 답답해집니다. 분량을 줄이거나 페이지를 나누는 쪽이 항상 더 깔끔합니다. 에이전트도 이 규칙을 따르도록 SKILL.md에 정해져 있습니다.

6. 한눈에 보는 요약 비교표

A4 PDF 출력과 바닐라 슬라이드의 차이를 정리하면 다음과 같습니다.

구분 A4 PDF 출력 바닐라 프리젠테이션
주요 목적 이력서·근로계약서·기획 제안서 등 인쇄·제출·보관 대형 스크린 발표, 세미나용 슬라이드 쇼
화면 규격 A4 (210mm × 297mm, 세로형) 16:9 와이드 (1280px × 720px, 가로형)
만드는 방식 에이전트가 HTML 작성 → 크롬 headless로 PDF 변환 에이전트가 JSON 스펙 작성 → build.py로 HTML 조립
보는 방법 PDF 뷰어로 열기·인쇄 크롬에서 방향키로 넘기며 발표
핵심 팁 간격은 4의 배수, 넘치면 페이지 나누기 한 장에 컴포넌트 최대 2개, 텍스트는 한 문장