Meadow slides
Meadow 스타일의 덱을 제작합니다. 작은 JSON 명세를 스크립트로 빌드하여 모든 슬라이드가 Meadow 자체 영업 덱과 동일한 그리드, 서체 크기, 색상을 따르도록 합니다. 콘텐츠를 작성하고 레이아웃을 선택하면, 스크립트가 픽셀 단위 작업을 수행하고 텍스트가 맞지 않을 때 경고합니다.
scripts/meadow_deck.py spec.json -> .pptx (+ Figma용 --figma-json 레이아웃)
scripts/preview.py .pptx -> 슬라이드별 PNG + 접촉 시트 (LibreOffice 또는 Keynote)
scripts/figma_render.js use_figma를 통해 레이아웃 덤프의 슬라이드 하나를 그립니다
scripts/install_fonts.sh 현재 사용자용 Geist / Geist Mono / Syne 설치
references/layouts.md 모든 레이아웃, 각 필드 및 사용 시기 <- spec 작성 전에 읽으세요
references/design-system.md 레이아웃 뒤에 있는 토큰 및 규칙 <- 레이아웃을 벗어날 때 읽으세요
references/image-prompts.md 덱 이미지용 프롬프트 라이브러리 <- 덱에 새 이미지가 필요할 때 읽으세요
references/figma.md Figma 출력 레시피 및 주의사항 <- Figma를 원할 때만 읽으세요
examples/sample-deck.json 주요 레이아웃을 다루는 6슬라이드 덱 (가상 데이터)
examples/skill-intro-deck.json 이 스킬을 소개하는 덱 (README 이미지)
워크플로우
- 콘텐츠를 먼저 확보하세요. 각 슬라이드의 메시지를 요청하거나 (브리프/기존 덱/문서에서) 추출합니다. 사용자가 소스 덱을 재배치하도록 건넨 경우, 단어를 그대로 유지하세요: 변경을 요청한 부분만 바꾸고, 잘라내기나 새 헤드라인은 별도 제안으로 제공하세요. 사용자는 자신의 텍스트가 조용히 다시 쓰여지는 것을 알아챕니다.
- 개요를 작성합니다. 슬라이드당 하나의 아이디어. 각 슬라이드를
references/layouts.md의 레이아웃에 매핑합니다 (표지 → 콘텐츠 슬라이드 → 연락처가 일반적인 흐름). 덱이 약 6슬라이드보다 길거나 브리프가 모호한 경우 사용자에게 개요를 보여주고, 그렇지 않으면 바로 빌드로 넘어갑니다. - 숫자를 확인합니다. 상업용 덱은 예산, CPM/CPV, 조회수에 기반합니다. 조판 전에 파생 수치(CPM = 예산 / 조회수 × 1000, 합계, 백분율)를 다시 계산합니다. 합계가 맞지 않더라도 사용자가 제공한 대로 조판하고, 어떤 숫자가 얼마나 차이가 나는지 알려줍니다. 고객도 동일한 산술을 할 것입니다.
- Spec 작성 (
deck.json), 예제와references/layouts.md를 참조하세요. 이미지는 번들된 짧은 이름(wave-05,meadow-night-02,people-02-camera-blue) 또는 경로로 지정합니다. - 빌드:
python3 scripts/meadow_deck.py deck.json -o deck.pptx. 모든WARN을 버그로 취급: 복사본을 줄이거나, 슬라이드를 나누거나, 레이아웃을 전환한 후 다시 빌드하세요.WARN라인은 다음을 다룹니다: 텍스트 오버플로, Syne으로 설정된 키릴 문자 (키릴 문자 글리프 없음), 한 슬라이드에 두 개 이상의 악센트 플레이트, 그리고 정렬 게이트는 빌드마다 실행됩니다:- 필, 칩, 버튼, 배지 내에서 텍스트가 광학적으로 중앙에 오지 않음 (잉크 패딩 좌우 및 대문자 높이 상하가 1.5px 이내로 일치해야 함);
- 콘텐츠가 96px 측면 여백을 넘음 (이미지가 슬라이드 밖으로 넘치는 것은 괜찮음);
- 거의 정렬되는 가장자리, 1–4px 떨어짐: 스냅하거나 명확히 떨어뜨리세요;
- 같은 크기의 카드 행이나 열에서 간격이 고르지 않음.
새로운 필 모양 요소는
Slide.pill()을 통해 크기와 중앙이 맞춰집니다; 다른 텍스트 뒤에 인라인으로 오는 텍스트(숫자 뒤의 아이콘, 단위, 배지)는flow=True로 빌드되어 맞춤 여부는 확인되지만 그리드에 고정되지는 않습니다.
- 확인합니다. 가장 빠르며 어디서나 작동: 빌드에
--png preview/를 추가하세요. Pillow로 동일한 레이아웃을 그리고 Keynote와 같은 방식으로 텍스트를 측정합니다. Mac에서 PPTX가 폰트를 잘 인식하는지 확인하려면,qlmanage -t -s 1600 -o preview/ deck.pptx로 시스템을 통해 슬라이드 1을 렌더링합니다(앱 열림 없음).python3 scripts/preview.py deck.pptx는 LibreOffice를 사용하고, 최후의 수단으로 Keynote를 사용합니다: Keynote 스크립팅은 멈추거나 사용자 화면에 대화상자를 남길 수 있으므로 루프에서 재시도하지 마세요.contact-sheet.png와 개별 슬라이드를 확인하세요. 정렬, 빽빽함, 사진 위의 대비, 빈 반쪽 카드, 푸터와의 충돌을 확인하세요. Office 렌더링에는 폰트 설치가 필요합니다(scripts/install_fonts.sh). - 전달 .pptx를 전달합니다. 수신자에게 폰트(
assets/fonts, 모두 OFL 하에서 무료)가 필요하거나--portable빌드를 사용해야 한다고 알려주십시오 (아래 참조). - Figma (선택 사항) 요청 시:
references/figma.md를 따르세요. 요청하지 않은 한 다른 사람의 Figma 파일에 쓰지 마세요.
Meadow처럼 보이게 만드는 규칙
사람들이 가장 먼저 확인하는 규칙입니다. 레이아웃이 이미 적용하므로, 주로 복사본을 작성하거나 레이아웃을 구부릴 때 중요합니다.
- 어두운 캔버스, 하나의 라임 플레이트. 배경 #0E1013, 카드 #1A1D21, 내부 행 #23262B. 라임 #D3FF31은 슬라이드가 하나에 대해 말하는 것을 표시합니다 (제안, 결과, 주요 콜아웃). 슬라이드에 두 개의 라임 플레이트는 계층을 평평하게 만듭니다. 악센트를 위해 무작위 카드를 라임으로 칠하지 마세요: 슬라이드에 악센트가 없을 수도 있습니다. 라임 위의 텍스트는 거의 검은색이며 흰색이 아닙니다.
- 서체. 라틴어로 작성된 제목은 Syne으로 설정되며, 러시아어 덱 내부라도 마찬가지입니다 (표지의 «Meadow Slides» 같은 제품 이름). 키릴 문자가 포함된 제목은 Geist입니다. Syne에는 키릴 문자가 없기 때문입니다. 스크립트가 제목별로 결정하므로(표지, 섹션, 진술문, 슬라이드 및 연락처 제목), 원하는 언어로 제목을 작성하세요. 본문은 항상 Geist, 레이블은 Geist Mono 대문자, 독립형 숫자/KPI는 Syne (약 36px부터).
- 그리드. 96px 여백, 상단에 헤더 (모노 눈썹 + 64px 제목), 콘텐츠는 y=264와 y=944 사이, 푸터 = 로고 +
NN / NN. 간격 24, 카드 반경 24, 패딩 40. - 표면으로 말하고 획으로 말하지 마십시오. 카드는 채움으로 구분되며 외곽선이 아닙니다. 외곽선이 있는 유일한 요소는 카테고리 칩입니다(1px 흰색 18%).
- 복사본에 경쟁사 이름을 넣지 마십시오. 사용자가 제공한 경우에만 클라이언트 로고/사용후기.
- 타이포그래피: 스크립트는 짧은 전치사/접속사와 대시를 NBSP로 붙여서 줄이 «в», «и», «—»로 끝나지 않도록 합니다. 숫자는 러시아어 덱에서
10 000+,$5 000,1,5 млн으로 작성하세요. - 차트는 라임 위의 단색 어두운 막대 또는 어두운 위의 라임이며, 기준선은 0, 높이는 데이터에 비례합니다. 반투명 검정색이 라임 위에서 탁해지므로 사용하지 마십시오.
이미지
번들: 추상 파랑/라임 웨이브 6개 (wave-01…06), 야간 초원 3개 (meadow-night-01…03), 라이프스타일 인물 샷 4개 (people-…), 흰색 플랫폼 글리프 (instagram, tiktok, youtube, vk, telegram, x, linkedin, twitch). 웨이브는 표지와 섹션 구분에 적합하고, 초원은 연락처와 마무리 슬라이드에, 인물 샷은 연락처와 이미지-텍스트 슬라이드에 적합합니다.
덱에 새로운 것이 필요할 때 (콘텐츠 팩토리 바닥 같은 테마 표지, 사례 연구용 장면), references/image-prompts.md에서 프롬프트를 작성하세요: 하우스 스타일 접두사 + 장면 + 채울 슬롯에 대한 구성 노트. 이미지 생성 도구가 연결되어 있으면 (예: Magnific MCP images_generate), 생성을 제안하고, 그렇지 않으면 프롬프트를 넘기고 반환된 파일을 경로로 spec에 연결하세요.
출력 변형
--portable: 모든 굵기를 동일 패밀리의 Regular/Bold로 매핑합니다. Google Slides 가져오기나 폰트를 설치할 수 없는 수신자용입니다. 계층 구조는 유지되지만 미세한 차이는 사라집니다.--figma-json layout.json: Figma 렌더러용 계산된 레이아웃을 덤프합니다.- 발표자 노트: 모든 슬라이드에
"notes"를 추가합니다. PPTX 옆에deck-notes.md로 저장됩니다. Keynote는 python-pptx로 작성된 노트 슬라이드가 있는 PPTX 열기를 거부하기 때문입니다.--embed-notes를 사용하면 PowerPoint에서만 열릴 덱을 위해 내부에 넣습니다. - PDF:
--pdf deck.pdf를 추가합니다 (모든 슬라이드의 전체 1920×1080 렌더, 텍스트 선택 불가). 보내거나 읽기 위해 PDF를 요청할 때 사용하며, Keynote나 LibreOffice가 필요하지 않습니다.
레이아웃이 맞지 않을 때
콘텐츠를 두 슬라이드에 나누는 것이 한 슬라이드에 쑤셔 넣는 것보다 낫습니다. 슬라이드가 정말로 새로운 배열을 필요로 한다면, 동일한 헬퍼(header, card, grid, bullets, kpi_tile, footer)와 토큰으로부터 빌드된 layout_<name> 함수를 scripts/meadow_deck.py에 추가하여 시스템을 상속받게 하세요. 그 전에 references/design-system.md를 읽으십시오.