| name | mps |
| description | MPS(Media Processing Suite) - PDF 및 이미지(PNG, JPG)의 워터마크 제거, 블로그 최적화(1200px, WebP/JPEG). PNG 10MB 자동 압축으로 네이버 블로그 한도 준수. PDF는 DPI 자동 계산으로 메모리 절약. 여러 이미지 합치기 지원. 한글 깨짐 및 맞춤법 자동 체크. 로고 삽입은 선택사항(기본 비활성화). 올인원 미디어 처리 스킬. |
MPS (Media Processing Suite)
⚠️ CLAUDE 처리 지침 (최우선)
🚫 로고 삽입 기본 규칙
기본 동작: 로고 삽입 비활성화
- PNG/JPG/PDF 처리 시 로고를 삽입하지 않음
- 사용자가 명시적으로 "로고 넣어줘", "로고 삽입" 등을 요청할 때만 로고 사용
- 스크립트 호출 시:
logo_path="none"또는 로고 매개변수 생략
✅ 처리 방법
1. 단일 PNG/JPG 파일:
# 워터마크만 제거 (기본)
python /mnt/skills/user/mps/scripts/remove_watermark.py input.png
# 로고 필요시 (사용자가 명시적으로 요청한 경우만)
python /mnt/skills/user/mps/scripts/remove_watermark.py input.png favicon output.png
2. PDF 파일:
# 워터마크만 제거 (기본)
python /mnt/skills/user/mps/scripts/pdf_smart.py input.pdf none output/ true 1200 webp
# 로고 필요시 (사용자가 명시적으로 요청한 경우만)
python /mnt/skills/user/mps/scripts/pdf_smart.py input.pdf logo.png output/ true 1200 webp
3. 여러 PNG 합치기:
# 로고 삽입 기능 없음 (원래부터)
python /mnt/skills/user/mps/scripts/merge_png.py dir/ output.png
📋 사용자 응답 템플릿
사용자가 이미지 업로드 시:
워터마크를 제거하겠습니다.
블로그용으로 최적화하시겠습니까?
💡 로고 삽입이 필요하시면 말씀해주세요 (기본: 비활성화)
🎯 핵심 기능
1. PDF 처리 (스마트 모드)
- DPI 자동 계산 (메모리 1.9배 절약)
- 워터마크 제거
- 로고 삽입 (선택사항, 기본 비활성화)
- 블로그 최적화 (1200px, WebP/JPEG)
- 페이지 통합 또는 개별 출력
- PNG 10MB 자동 압축 ⭐ 네이버 블로그 한도
2. 이미지 처리 (고속 모드)
- PNG/JPG 워터마크 제거
- 로고 스마트 배치 (선택사항, 기본 비활성화)
- 배경색 자동 매칭
- 가볍고 빠른 처리
- PNG 10MB 자동 압축 ⭐ 네이버 블로그 한도
3. 공통 기능
- 여러 이미지 한 장으로 합치기
- 블로그 최적화 (용량 90% 감소)
- 한글 깨짐/맞춤법 자동 체크
- WebP/JPEG 동시 생성
- PNG 10MB 자동 압축 ⭐ 네이버 블로그 한도
📊 처리 흐름
PDF 업로드 시
사용자: [PDF 업로드] "블로그용 이미지로 만들어줘"
↓
Claude: "PNG로 출력하시겠습니까?
1. 개별 파일로 나누어 출력
2. 한 장으로 통합 출력
🎯 자동으로 블로그 최적화됩니다:
- 목표 너비: 1200px
- DPI 자동 계산 (메모리 절약)
- WebP/JPEG 동시 생성"
↓
사용자: "한 장으로"
↓
결과:
- merged_optimized.webp (741 KB) ⭐ 추천
- merged_optimized.jpg (1.18 MB)
- merged_optimized.png (9 MB, 원본)
이미지 업로드 시
사용자: [PNG 업로드] "워터마크 제거해줘"
↓
Claude: [텍스트 자동 검증]
"한글 깨짐 체크... ✅ 문제 없음"
↓
"워터마크를 제거하겠습니다.
블로그용으로 최적화하시겠습니까?
💡 로고 삽입이 필요하시면 말씀해주세요 (기본: 비활성화)"
↓
사용자: "예"
↓
결과:
- output.png (워터마크 제거)
- output_optimized.webp (741 KB) ⭐
- output_optimized.jpg (1.18 MB)
여러 이미지 업로드 시
사용자: [3개 PNG 업로드]
↓
Claude: "업로드하신 이미지들을 한 장으로 합치시겠습니까?
일반적인 사용 시나리오:
1. PDF를 개별 PNG로 변환
2. 원하지 않는 페이지 제외
3. 선택한 페이지들만 재업로드
4. 한 장으로 합쳐서 블로그에 사용"
↓
사용자: "예"
↓
결과: 선택한 페이지가 하나로 합쳐진 최적화 이미지
🚀 주요 기술
1. PNG 10MB 자동 압축 ⭐ NEW
문제:
- 네이버 블로그 이미지 업로드 한도: 장당 10MB
- 고해상도 PDF → PNG 변환 시 종종 10MB 초과
자동 압축 로직:
# 1단계: PNG 저장
img.save(output.png, 'PNG')
# 2단계: 10MB 체크
if file_size > 10MB:
# 방법 1: 1200px로 리사이즈 (아직 안 했다면)
if width > 1200:
resize to 1200px
# 방법 2: PNG optimize
save with optimize=True
# 방법 3: 여전히 10MB 초과 시
if still > 10MB:
# JPEG 변환 (품질 85 → 60까지 자동 조정)
save as JPEG with quality adjustment
print("PNG는 고품질 원본으로 유지됩니다")
print("JPEG를 블로그 업로드용으로 사용하세요")
결과:
- ✅ PNG 10MB 이하: 그대로 사용
- ⚠️ PNG 10MB 초과:
- PNG: 고품질 원본 유지
- JPEG: 자동 생성 (블로그 업로드용)
2. 스마트 DPI 계산 (PDF 전용)
2. 스마트 DPI 계산 (PDF 전용)
기존 방식:
PDF → 300 DPI (5734px) → 처리 → 1200px로 축소
↑ 메모리 낭비!
신규 방식:
PDF → 자동 계산 DPI (159 DPI) → 처리 → 1200px 완성
↑ 메모리 1.9배 절약!
DPI 계산 로직:
# A4 용지 → 1200px 목표
optimal_dpi = 1200 / (210mm / 25.4) × 1.1
= 159 DPI
3. 배경색 자동 매칭
# 워터마크 주변 100x100px 영역의 평균 색상
sample_region = (x1-100, y1-100, x1-10, y1-10)
background_color = average_rgb(sample_region)
4. 로고 색상 변환
# 빨간색 유지 (R > 150)
if r > 150 and r > g and r > b:
keep_original_color()
# 흰색 배경을 이미지 배경색으로 변환
elif r > 200 and g > 200 and b > 200:
convert_to_background_color()
5. 블로그 최적화 자동 적용
최적화 기준 (연구 결과):
- 파일 크기: 200KB~2MB (권장 500KB)
- 이미지 너비: 1200px
- 포맷: WebP (최고 압축) + JPEG (호환성)
- 로딩 시간: 3초 이내
결과:
- WebP: 741 KB (96% 감소) ⭐
- JPEG: 1.18 MB (93.7% 감소)
- PNG: 9 MB (고품질 원본)
📦 스크립트 구성
scripts/pdf_smart.py ⭐ PDF 처리
기능:
- DPI 자동 계산
- 워터마크 제거
- 로고 삽입 (선택사항)
- 통일된 크기 크롭
- 블로그 최적화 (WebP/JPEG)
사용:
# 한 장 + WebP (로고 없음)
python scripts/pdf_smart.py input.pdf none output/ true 1200 webp
# 개별 + 모든 포맷 (로고 있음)
python scripts/pdf_smart.py input.pdf logo.png output/ false 1200 all
매개변수:
logo: 로고 경로 또는 "none" (비활성화)merge: true=한장, false=개별width: 목표 너비 (기본 1200)format: webp, jpeg, png, all
scripts/remove_watermark.py ⭐ 이미지 처리
기능:
- PNG/JPG 워터마크 제거
- 로고 삽입 (선택사항)
- 배경색 자동 매칭
사용:
# 워터마크만 제거 (기본)
python scripts/remove_watermark.py input.png
# 로고와 함께
python scripts/remove_watermark.py input.png favicon output.png
특징:
- 가볍고 빠름 (PDF 변환 없음)
- 메모리 효율적
- 0.5초 이내 처리
- 로고 기본 비활성화
scripts/optimize_blog.py - 블로그 최적화
기능:
- 기존 PNG/JPG 최적화
- 1200px 너비 조정
- WebP + JPEG 생성
사용:
python scripts/optimize_blog.py input.png output.webp
scripts/merge_png.py - 이미지 합치기
기능:
- 여러 PNG를 한 장으로 합치기
- 너비 다르면 자동 중앙 정렬
사용:
# 디렉토리 전체
python scripts/merge_png.py /path/to/images/ output.png
# 특정 파일들
python scripts/merge_png.py file1.png file2.png file3.png output.png
🎨 처리 결과 비교
PDF 14페이지 예시
| 방식 | DPI | 크기 | 용량 | 메모리 | 시간 |
|---|---|---|---|---|---|
| 기존 (300 DPI) | 300 | 5734 x 44,800px | 18.88 MB | 💥 높음 | 느림 |
| 신규 (스마트) | 159 | 1200 x 9,375px | 741 KB | ✅ 낮음 | 빠름 |
단일 이미지 (5000 x 3000px)
| 작업 | 시간 | 메모리 | 결과 |
|---|---|---|---|
| 워터마크 제거 | 0.5초 | 100MB | 5000 x 3000px |
| 블로그 최적화 | 1.0초 | 50MB | 1200 x 720px |
| 합계 | 1.5초 | 100MB | WebP 741KB |
💡 사용 시나리오
시나리오 1: PDF → 블로그 한 장 이미지
1. PDF 업로드
2. "한 장으로 통합" 선택
3. 자동 처리:
- DPI 159로 변환 (메모리 절약)
- 워터마크 제거
- 로고 삽입
- 1200px로 조정
- WebP/JPEG 생성
4. 결과: 3개 파일 (WebP, JPEG, PNG)
시나리오 2: 이미지 워터마크 제거
1. PNG/JPG 업로드
2. 자동 텍스트 검증
3. 워터마크 제거 (로고 기본 비활성화)
4. 블로그 최적화 (선택)
5. 필요시 로고 삽입 요청
6. 결과: 최적화된 이미지
시나리오 3: 선택 페이지만 합치기
1. PDF → 개별 PNG 변환 (14개)
2. 원하지 않는 페이지 제외 (7개 선택)
3. 7개 PNG 재업로드
4. "한 장으로 합치기" 선택
5. 결과: 7페이지가 하나로 합쳐진 이미지
시나리오 4: 여러 이미지 일괄 처리
1. 여러 PNG 업로드
2. 각각 워터마크 제거
3. 한 장으로 합치기
4. 블로그 최적화
5. 결과: 통합된 최적화 이미지
📚 블로그 최적화 기준
권장 사항 (연구 기반)
✅ 파일 크기: 200KB~500KB (최적)
✅ 최대 크기: 2MB
✅ 이미지 너비: 800~1200px
✅ 해상도: 72 DPI (웹용)
✅ 로딩 시간: 3초 이내
✅ 포맷: WebP (압축) + JPEG (호환)
근거
- Shopify 권장: 2MB 이하, 500KB 최적
- Google PageSpeed: 이미지 최적화 필수
- 사용자 연구: 3초 초과 시 53% 이탈
- WebP: JPEG 대비 25-35% 용량 감소
포맷 비교
| 포맷 | 압축률 | 품질 | 호환성 | 권장 |
|---|---|---|---|---|
| WebP | 최고 (30% 절약) | 우수 | 최신 브라우저 | ⭐ 1순위 |
| JPEG | 좋음 | 우수 | 모든 브라우저 | ✅ 2순위 |
| PNG | 없음 | 최고 | 모든 브라우저 | 📦 원본용 |
🎯 자동 최적화 트리거
Claude가 자동으로 최적화를 제안하는 경우:
- ✅ PDF 업로드 (PNG 출력 선택 시)
- ✅ 파일 크기 2MB 초과
- ✅ 이미지 너비 2000px 초과
- ✅ "블로그", "웹" 키워드 언급
Claude가 자동으로 최적화를 강력 권장:
- ⚠️ 파일 크기 5MB 초과
- ⚠️ 로딩 시간 3초 초과 예상
🔧 기술 세부사항
워터마크 위치
PDF 처리 (DPI 비율 조정):
# 300 DPI 기준 450px 였으므로
watermark_width = 450 × (159 / 300) = 238px
이미지 처리 (고정 위치):
# 우측 하단 (450 x 130px)
x1 = width - 450
y1 = height - 130
x2 = width
y2 = height
2단계 크기 조정 (PDF 전용)
1단계: 최적 DPI로 PDF 변환 (159 DPI → 3039px)
2단계: 목표 너비로 정확히 조정 (3039px → 1200px)
📝 로고 파일
기본 위치:
/mnt/user-data/uploads/파비콘_테두리있음.png- 스킬 내장:
logo.png
요구사항:
- 포맷: PNG (RGBA)
- 권장 크기: 100x100px 이상
- 빨간색 부분: 유지
- 흰색 배경: 자동 변환
⚡ 성능 비교
PDF 처리 (14페이지)
메모리 사용량:
기존 300 DPI: ~2.5 GB
신규 159 DPI: ~1.3 GB
절약: 1.9배 ✅
처리 시간:
기존: ~180초 (종종 크래시)
신규: ~60초 (안정적)
개선: 3배 빠름 ✅
파일 용량:
원본 PNG: 18.88 MB
WebP: 741 KB (96% 감소) ⭐
JPEG: 1.18 MB (93.7% 감소) ✅
이미지 처리 (단일)
처리 속도:
워터마크 제거: 0.5초
블로그 최적화: 1.0초
합계: 1.5초 ✅
메모리 효율:
단일 이미지: ~100MB
10개 합치기: ~300MB
안정적 ✅
🚨 주의사항
WebP 제한
- 최대 크기: 16,383 x 16,383px
- 초과 시: JPEG로 자동 전환
PNG 제한
- PIL 기본 제한 해제됨
- 매우 큰 이미지도 처리 가능
메모리 관리
- PDF: DPI 자동 계산으로 최적화
- 이미지: 가볍고 빠른 처리
- 크래시 위험 최소화
워터마크 위치
- NotebookLM 워터마크는 항상 우측 하단
- 다른 위치는 수동 조정 필요
📦 출력 파일 위치
모든 결과는 /mnt/user-data/outputs/에 저장:
merged_optimized.webp- 웹 최적화merged_optimized.jpg- 범용 호환merged_optimized.png- 고품질 원본page_XX.webp/jpg/png- 개별 페이지output.png- 워터마크 제거된 원본output_optimized.webp/jpg- 최적화 버전
📚 의존성
필수 라이브러리
pip install pillow numpy pdf2image --break-system-packages
시스템 요구사항
# PDF 처리를 위한 poppler 설치
apt-get update && apt-get install -y poppler-utils
버전
Pillow >= 10.0.0
numpy >= 1.24.0
pdf2image >= 1.16.0
🎉 버전 이력
v4.2 (로고 기본 비활성화) - 2024-12-13
- ✅ 로고 삽입 기능 기본값을 비활성화로 변경
- ✅ 워터마크 제거에 집중
- ✅ 필요시 로고 경로를 명시적으로 지정 가능
- ✅ 더 직관적인 사용자 경험
v4.1 (자동 압축 추가) - 2024-12-08
- ✅ PNG 10MB 자동 압축 (네이버 블로그 한도)
- ✅ 10MB 초과 시 JPEG 자동 생성
- ✅ 사용자 편의성 대폭 개선
v4.0 (통합 버전) - 2024-12-08
- ✅ PDF와 이미지 처리 통합
- ✅ 스크립트 중복 제거
- ✅ 일관된 워크플로우
- ✅ 사용자 경험 개선
v3.0 (PDF 스킬)
- ✅ DPI 자동 계산 (메모리 1.9배 절약)
- ✅ 블로그 최적화 자동 적용
- ✅ WebP/JPEG 동시 생성
v1.0 (이미지 스킬)
- ✅ 가볍고 빠른 이미지 처리
- ✅ 워터마크 제거 + 로고 삽입
- ✅ PNG 합치기 기능
💡 팁
빠른 처리 (이미지)
# 워터마크 제거만 (최고속, 기본)
python remove_watermark.py in.png
# 로고와 함께
python remove_watermark.py in.png favicon temp.png
# 워터마크 제거 + 최적화 (권장)
python remove_watermark.py in.png
python optimize_blog.py temp.png out.webp
메모리 절약 (PDF)
# 자동 DPI 계산 (권장, 로고 없음)
python pdf_smart.py input.pdf none output/ true 1200 webp
# 로고와 함께
python pdf_smart.py input.pdf logo.png output/ true 1200 webp
# 수동 DPI 지정 (고급)
python pdf_smart.py input.pdf none output/ true 1200 webp 150
일괄 처리
# 여러 이미지 워터마크 제거 (로고 없음)
for img in *.png; do
python remove_watermark.py "$img"
done
# 로고와 함께
for img in *.png; do
python remove_watermark.py "$img" favicon "clean_$img"
done
# 합치기
python merge_png.py clean_*.png merged.png
# 최적화
python optimize_blog.py merged.png final.webp
📋 체크리스트
사용 전
- Python 3.8+ 설치 확인
- 필수 라이브러리 설치 (Pillow, numpy, pdf2image)
- poppler-utils 설치 (PDF 처리용)
- 로고 파일 준비 (PNG, RGBA)
사용 후
- 워터마크 제거 확인
- 로고 위치 확인
- WebP 용량 확인 (<2MB)
- 브라우저 테스트 (WebP 지원)
- JPEG 폴백 확인 (구형 브라우저)
🎯 스킬 선택 가이드
이 스킬(MPS)을 사용하세요:
- ✅ PDF 워터마크 제거 필요
- ✅ 이미지 워터마크 제거 필요
- ✅ 블로그 최적화 필요
- ✅ 여러 파일 합치기
- ✅ 올인원 솔루션 선호
다른 스킬을 고려하세요:
- 특수한 이미지 편집 (별도 도구)
- 동영상 처리 (FFmpeg 등)
- 고급 PDF 편집 (PyPDF2 등)
버전: 4.2 (로고 기본 비활성화) 날짜: 2024-12-13 용도: PDF 및 이미지 통합 처리 + 네이버 블로그 최적화 이전 스킬: pdf-watermark-remover (v3.0), image-optimizer (v1.0) 라이선스: 동제당한의원 전용