PPTX 생성, 편집 및 분석
개요
사용자가 .pptx 파일을 생성, 편집 또는 분석하도록 요청할 수 있습니다. .pptx 파일은 기본적으로 ZIP 아카이브로, XML 파일 및 기타 리소스가 포함되어 있으며 이를 읽거나 편집할 수 있습니다. 다양한 작업에 대해 서로 다른 도구와 워크플로우가 제공됩니다.
콘텐츠 읽기 및 분석
텍스트 추출
프레젠테이션의 텍스트 내용만 읽으면 되는 경우, 문서를 마크다운으로 변환해야 합니다:
# 문서를 마크다운으로 변환
python -m markitdown path-to-file.pptx
원시 XML 접근
주석, 발표자 노트, 슬라이드 레이아웃, 애니메이션, 디자인 요소 및 복잡한 서식 지정을 위해서는 원시 XML 접근이 필요합니다. 이러한 기능을 사용하려면 프레젠테이션을 압축 풀고 원시 XML 내용을 읽어야 합니다.
파일 압축 풀기
python ooxml/scripts/unpack.py <office_file> <output_dir>
참고: unpack.py 스크립트는 프로젝트 루트를 기준으로 skills/pptx/ooxml/scripts/unpack.py에 있습니다. 이 경로에 스크립트가 없으면 find . -name "unpack.py"를 사용하여 찾으십시오.
주요 파일 구조
ppt/presentation.xml- 주요 프레젠테이션 메타데이터 및 슬라이드 참조ppt/slides/slide{N}.xml- 개별 슬라이드 내용 (slide1.xml, slide2.xml 등)ppt/notesSlides/notesSlide{N}.xml- 각 슬라이드의 발표자 노트ppt/comments/modernComment_*.xml- 특정 슬라이드에 대한 주석ppt/slideLayouts/- 슬라이드용 레이아웃 템플릿ppt/slideMasters/- 마스터 슬라이드 템플릿ppt/theme/- 테마 및 스타일 정보ppt/media/- 이미지 및 기타 미디어 파일
타이포그래피 및 색상 추출
따라야 할 예제 디자인이 주어졌을 때: 아래 방법을 사용하여 먼저 프레젠테이션의 타이포그래피와 색상을 분석하십시오:
- 테마 파일 읽기:
ppt/theme/theme1.xml에서 색상 (<a:clrScheme>) 및 글꼴 (<a:fontScheme>) 확인 - 슬라이드 샘플 콘텐츠:
ppt/slides/slide1.xml에서 실제 글꼴 사용 (<a:rPr>) 및 색상 확인 - 패턴 검색: grep을 사용하여 모든 XML 파일에서 색상 (
<a:solidFill>,<a:srgbClr>) 및 글꼴 참조 검색
템플릿 없이 새 PowerPoint 프레젠테이션 만들기
처음부터 새 PowerPoint 프레젠테이션을 만들 때는 html2pptx 워크플로우를 사용하여 HTML 슬라이드를 정확한 위치로 PowerPoint로 변환합니다.
디자인 원칙
중요: 프레젠테이션을 만들기 전에 콘텐츠를 분석하고 적절한 디자인 요소를 선택하십시오:
- 주제 고려: 이 프레젠테이션은 무엇에 관한 것인가? 어떤 어조, 산업 또는 분위기를 암시하는가?
- 브랜딩 확인: 사용자가 회사/조직을 언급하는 경우 해당 브랜드 색상과 아이덴티티를 고려
- 콘텐츠에 맞는 팔레트 선택: 주제를 반영하는 색상 선택
- 접근 방식 설명: 코드를 작성하기 전에 디자인 선택 사항을 설명
요구 사항:
- ✅ 코드를 작성하기 전에 콘텐츠에 기반한 디자인 접근 방식을 설명
- ✅ 웹 안전 글꼴만 사용: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS, Impact
- ✅ 크기, 굵기 및 색상을 통해 명확한 시각적 계층 구조 생성
- ✅ 가독성 보장: 강한 대비, 적절한 크기의 텍스트, 깔끔한 정렬
- ✅ 일관성 유지: 슬라이드 전반에 걸쳐 패턴, 간격 및 시각적 언어 반복
색상 팔레트 선택
창의적으로 색상 선택하기:
- 기본값 이상으로 생각하기: 이 특정 주제에 진정으로 어울리는 색상은 무엇인가? 자동 조종 장치 선택을 피하십시오.
- 다각도 고려: 주제, 산업, 분위기, 에너지 수준, 대상 청중, 브랜드 아이덴티티(언급된 경우)
- 모험적으로 시도: 예상치 못한 조합을 시도 - 의료 프레젠테이션이 반드시 녹색일 필요는 없으며, 금융이 네이비 블루일 필요는 없음
- 팔레트 구축: 함께 잘 어울리는 3-5가지 색상 선택 (주요 색상 + 보조 톤 + 강조 색상)
- 대비 보장: 텍스트가 배경에서 명확하게 읽혀야 함
예제 색상 팔레트 (창의성을 자극하는 데 사용 - 하나를 선택하거나, 적용하거나, 직접 만드십시오):
- 클래식 블루: 딥 네이비 (#1C2833), 슬레이트 그레이 (#2E4053), 실버 (#AAB7B8), 오프 화이트 (#F4F6F6)
- 틸 & 코랄: 틸 (#5EA8A7), 딥 틸 (#277884), 코랄 (#FE4447), 화이트 (#FFFFFF)
- 볼드 레드: 레드 (#C0392B), 브라이트 레드 (#E74C3C), 오렌지 (#F39C12), 옐로우 (#F1C40F), 그린 (#2ECC71)
- 웜 블러시: 모브 (#A49393), 블러시 (#EED6D3), 로즈 (#E8B4B8), 크림 (#FAF7F2)
- 버건디 럭셔리: 버건디 (#5D1D2E), 크림슨 (#951233), 러스트 (#C15937), 골드 (#997929)
- 딥 퍼플 & 에메랄드: 퍼플 (#B165FB), 다크 블루 (#181B24), 에메랄드 (#40695B), 화이트 (#FFFFFF)
- 크림 & 포레스트 그린: 크림 (#FFE1C7), 포레스트 그린 (#40695B), 화이트 (#FCFCFC)
- 핑크 & 퍼플: 핑크 (#F8275B), 코랄 (#FF574A), 로즈 (#FF737D), 퍼플 (#3D2F68)
- 라임 & 플럼: 라임 (#C5DE82), 플럼 (#7C3A5F), 코랄 (#FD8C6E), 블루 그레이 (#98ACB5)
- 블랙 & 골드: 골드 (#BF9A4A), 블랙 (#000000), 크림 (#F4F6F6)
- 세이지 & 테라코타: 세이지 (#87A96B), 테라코타 (#E07A5F), 크림 (#F4F1DE), 차콜 (#2C2C2C)
- 차콜 & 레드: 차콜 (#292929), 레드 (#E33737), 라이트 그레이 (#CCCBCB)
- 비비언트 오렌지: 오렌지 (#F96D00), 라이트 그레이 (#F2F2F2), 차콜 (#222831)
- 포레스트 그린: 블랙 (#191A19), 그린 (#4E9F3D), 다크 그린 (#1E5128), 화이트 (#FFFFFF)
- 레트로 레인보우: 퍼플 (#722880), 핑크 (#D72D51), 오렌지 (#EB5C18), 앰버 (#F08800), 골드 (#DEB600)
- 빈티지 어씨: 머스타드 (#E3B448), 세이지 (#CBD18F), 포레스트 그린 (#3A6B35), 크림 (#F4F1DE)
- 코스탈 로즈: 올드 로즈 (#AD7670), 비버 (#B49886), 에그쉘 (#F3ECDC), 애시 그레이 (#BFD5BE)
- 오렌지 & 터콰이즈: 라이트 오렌지 (#FC993E), 그레이시쉬 터콰이즈 (#667C6F), 화이트 (#FCFCFC)
시각적 세부 옵션
기하학적 패턴:
- 가로가 아닌 대각선 구역 구분선
- 비대칭 열 너비 (30/70, 40/60, 25/75)
- 90° 또는 270°로 회전된 텍스트 헤더
- 이미지용 원형/육각형 프레임
- 모서리의 삼각형 악센트 모양
- 깊이를 위한 겹치는 모양
테두리 및 프레임 처리:
- 한쪽 면에만 두꺼운 단색 테두리 (10-20pt)
- 대비되는 색상의 이중선 테두리
- 전체 프레임 대신 모서리 브래킷
- L자형 테두리 (위쪽+왼쪽 또는 아래쪽+오른쪽)
- 헤더 아래 밑줄 악센트 (3-5pt 두께)
타이포그래피 처리:
- 극단적인 크기 대비 (72pt 헤드라인 대 11pt 본문)
- 넓은 문자 간격의 전체 대문자 헤더
- 과장된 디스플레이 유형의 번호 매기기 섹션
- 데이터/통계/기술 콘텐츠용 고정폭 글꼴 (Courier New)
- 밀도 있는 정보를 위한 압축 글꼴 (Arial Narrow)
- 강조를 위한 외곽선 텍스트
차트 및 데이터 스타일링:
- 주요 데이터에 단일 악센트 색상이 있는 모노크롬 차트
- 세로 대신 가로 막대 차트
- 막대 차트 대신 점 그림
- 최소한의 격자선 또는 전혀 없음
- 범례 없이 요소에 직접 데이터 레이블
- 주요 지표에 대한 과장된 숫자
레이아웃 혁신:
- 텍스트 오버레이가 있는 전체 너비 이미지
- 탐색/컨텍스트용 사이드바 열 (20-30% 너비)
- 모듈식 그리드 시스템 (3×3, 4×4 블록)
- Z-패턴 또는 F-패턴 콘텐츠 흐름
- 색상이 지정된 모양 위의 떠 있는 텍스트 상자
- 잡지 스타일 다중 열 레이아웃
배경 처리:
- 슬라이드의 40-60%를 차지하는 단색 블록
- 그라데이션 채우기 (세로 또는 대각선만)
- 분할 배경 (두 가지 색상, 대각선 또는 세로)
- 가장자리에서 가장자리까지의 색상 밴드
- 디자인 요소로서의 네거티브 공간
레이아웃 팁
차트 또는 표가 있는 슬라이드를 만들 때:
- 두 열 레이아웃 (권장): 전체 너비에 걸친 헤더를 사용하고 아래에 두 개의 열을 배치 - 한 열에는 텍스트/글머리 기호를, 다른 열에는 주요 콘텐츠를 배치합니다. 이렇게 하면 균형이 더 좋아지고 차트/표를 더 읽기 쉽게 만들 수 있습니다. 각 콘텐츠 유형에 맞게 공간을 최적화하기 위해 불균등한 열 너비(예: 40%/60% 분할)로 flexbox를 사용하십시오.
- 전체 슬라이드 레이아웃: 최대 효과와 가독성을 위해 주요 콘텐츠(차트/표)가 슬라이드 전체를 차지하도록 합니다.
- 절대 세로로 쌓지 마십시오: 차트/표를 텍스트 아래 단일 열에 배치하지 마십시오. 이렇게 하면 가독성이 떨어지고 레이아웃 문제가 발생합니다.
워크플로우
- 필수 - 전체 파일 읽기:
html2pptx.md를 처음부터 끝까지 완전히 읽으십시오. 이 파일을 읽을 때 범위 제한을 설정하지 마십시오. 프레젠테이션 생성을 진행하기 전에 자세한 구문, 중요한 서식 규칙 및 모범 사례에 대한 전체 파일 내용을 읽으십시오. - 각 슬라이드에 대해 적절한 치수(예: 16:9의 경우 720pt × 405pt)로 HTML 파일을 만드십시오.
- 모든 텍스트 콘텐츠에
<p>,<h1>-<h6>,<ul>,<ol>사용 - 차트/표가 추가될 영역에 대해
class="placeholder"사용 (가시성을 위해 회색 배경으로 렌더링) - 중요: 먼저 Sharp를 사용하여 그라데이션과 아이콘을 PNG 이미지로 래스터화한 다음 HTML에서 참조
- 레이아웃: 차트/표/이미지가 있는 슬라이드의 경우 더 나은 가독성을 위해 전체 슬라이드 레이아웃 또는 두 열 레이아웃을 사용
- 모든 텍스트 콘텐츠에
html2pptx.js라이브러리를 사용하여 HTML 슬라이드를 PowerPoint로 변환하고 프레젠테이션을 저장하는 JavaScript 파일을 만들고 실행- 각 HTML 파일을 처리하는 데
html2pptx()함수 사용 - PptxGenJS API를 사용하여 플레이스홀더 영역에 차트 및 표 추가
pptx.writeFile()을 사용하여 프레젠테이션 저장
- 각 HTML 파일을 처리하는 데
- 시각적 검증: 썸네일을 생성하고 레이아웃 문제를 검사
- 썸네일 그리드 생성:
python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4 - 썸네일 이미지를 읽고 다음 사항을 주의 깊게 검사:
- 텍스트 잘림: 헤더 막대, 도형 또는 슬라이드 가장자리로 인해 텍스트가 잘리는 경우
- 텍스트 겹침: 텍스트가 다른 텍스트 또는 도형과 겹치는 경우
- 위치 문제: 콘텐츠가 슬라이드 경계 또는 다른 요소에 너무 가까운 경우
- 대비 문제: 텍스트와 배경 간의 대비 부족
- 문제가 발견되면 HTML 여백/간격/색상을 조정하고 프레젠테이션을 다시 생성
- 모든 슬라이드가 시각적으로 올바를 때까지 반복
- 썸네일 그리드 생성:
기존 PowerPoint 프레젠테이션 편집
기존 PowerPoint 프레젠테이션의 슬라이드를 편집할 때는 원시 Office Open XML(OOXML) 형식으로 작업해야 합니다. 여기에는 .pptx 파일의 압축을 풀고 XML 콘텐츠를 편집한 다음 다시 압축하는 작업이 포함됩니다.
워크플로우
- 필수 - 전체 파일 읽기:
ooxml.md(약 500줄)를 처음부터 끝까지 완전히 읽으십시오. 이 파일을 읽을 때 범위 제한을 설정하지 마십시오. 프레젠테이션 편집을 하기 전에 OOXML 구조 및 편집 워크플로우에 대한 자세한 지침을 위해 전체 파일 내용을 읽으십시오. - 프레젠테이션 압축 풀기:
python ooxml/scripts/unpack.py <office_file> <output_dir> - XML 파일 편집 (주로
ppt/slides/slide{N}.xml및 관련 파일) - 중요: 각 편집 직후에 유효성을 검사하고 진행하기 전에 오류를 수정:
python ooxml/scripts/validate.py <dir> --original <file> - 최종 프레젠테이션 압축:
python ooxml/scripts/pack.py <input_directory> <office_file>
템플릿을 사용하여 새 PowerPoint 프레젠테이션 만들기
기존 템플릿의 디자인을 따르는 프레젠테이션을 만들어야 하는 경우 템플릿 슬라이드를 복제하고 재배열한 다음 플레이스홀더 콘텐츠를 교체해야 합니다.
워크플로우
-
템플릿 텍스트 추출 및 시각적 썸네일 그리드 만들기:
- 텍스트 추출:
python -m markitdown template.pptx > template-content.md template-content.md읽기: 템플릿 프레젠테이션의 내용을 이해하기 위해 전체 파일을 읽으십시오. 이 파일을 읽을 때 범위 제한을 설정하지 마십시오.- 썸네일 그리드 만들기:
python scripts/thumbnail.py template.pptx - 자세한 내용은 썸네일 그리드 만들기 섹션 참조
- 텍스트 추출:
-
템플릿 분석 및 인벤토리 파일에 저장:
- 시각적 분석: 썸네일 그리드를 검토하여 슬라이드 레이아웃, 디자인 패턴 및 시각적 구조 이해
- 다음을 포함하는
template-inventory.md에 템플릿 인벤토리 파일을 만들고 저장:# 템플릿 인벤토리 분석 **총 슬라이드: [개수]** **중요: 슬라이드는 0부터 시작합니다 (첫 번째 슬라이드 = 0, 마지막 슬라이드 = 개수-1)** ## [카테고리 이름] - 슬라이드 0: [레이아웃 코드(사용 가능한 경우)] - 설명/목적 - 슬라이드 1: [레이아웃 코드] - 설명/목적 - 슬라이드 2: [레이아웃 코드] - 설명/목적 [... 모든 슬라이드는 인덱스와 함께 개별적으로 나열되어야 함 ...] - 썸네일 그리드 사용: 시각적 썸네일을 참조하여 다음을 식별:
- 레이아웃 패턴 (제목 슬라이드, 콘텐츠 레이아웃, 섹션 구분선)
- 이미지 플레이스홀더 위치 및 개수
- 슬라이드 그룹 전반의 디자인 일관성
- 시각적 계층 구조 및 구조
- 이 인벤토리 파일은 다음 단계에서 적절한 템플릿을 선택하는 데 필요합니다.
-
템플릿 인벤토리를 기반으로 프레젠테이션 개요 만들기:
- 2단계에서 사용 가능한 템플릿 검토
- 첫 번째 슬라이드에 대한 소개 또는 제목 템플릿 선택. 이것은 첫 번째 템플릿 중 하나여야 합니다.
- 다른 슬라이드에는 안전하고 텍스트 기반인 레이아웃을 선택합니다.
- 중요: 레이아웃 구조를 실제 콘텐츠와 일치:
- 단일 열 레이아웃: 통일된 내러티브 또는 단일 주제에 사용
- 두 열 레이아웃: 정확히 2개의 고유한 항목/개념이 있는 때에만 사용
- 세 열 레이아웃: 정확히 3개의 고유한 항목/개념이 있는 때에만 사용
- 이미지 + 텍스트 레이아웃: 실제 삽입할 이미지가 있는 때에만 사용
- 인용 레이아웃: 강조가 아닌, 사람의 실제 인용문(출처 포함)에만 사용
- 콘텐츠보다 더 많은 플레이스홀더가 있는 레이아웃은 절대 사용하지 마십시오.
- 항목이 2개인 경우 3열 레이아웃에 강제로 넣지 마십시오.
- 항목이 4개 이상인 경우 여러 슬라이드로 나누거나 목록 형식을 사용하는 것을 고려하십시오.
- 레이아웃을 선택하기 전에 실제 콘텐츠 조각을 계산
- 선택한 레이아웃의 각 플레이스홀더가 의미 있는 콘텐츠로 채워질 것인지 확인