나는 $200/월 Screenshot API를 단일 Python 파일로 교체했다
발행: (2026년 3월 14일 오후 05:11 GMT+9)
3 분 소요
원문: Dev.to
Source: Dev.to
왜 직접 스크린샷 API를 만들었는가
Browserless에 $200/월을 내며 스크린샷을 찍는 것이 지긋지긋했다. 기존 서비스들은 스크린샷당 요금을 부과하거나 월 사용료가 높았다:
- Browserless: $200–$2000/월
- ScreenshotOne: 스크린샷당 $0.01
- Puppeteer 자체 호스팅: 메모리 누수, Docker 문제, 확장성 이슈
내가 필요했던 것은 단순한 URL → PNG 변환뿐이었다.
SnapForge 소개
SnapForge는 단일 Python 파일로 구현된 자체 호스팅 스크린샷 및 PDF API이다. 클라우드도, 구독도 필요 없다.
- MIT 라이선스, 단일 파일 구현
- 스크린샷, PDF, HTML 렌더링, 디바이스 에뮬레이션, 요소 캡처, 다크 모드 등 지원
- 선택적 API‑key 인증
- 동시 작업자 풀로 확장 가능
- 한 줄 배포 가능한 Docker 이미지
설치
pip install playwright aiohttp
playwright install chromiumAPI 실행
python snapforge.py서비스는 포트 8787에서 시작된다.
API 사용법
스크린샷
curl -X POST http://localhost:8787/screenshot \
-H "Content-Type: application/json" \
-d '{ "url": "https://github.com", "full_page": true }' \
--output github.pngPDF 생성
curl -X POST http://localhost:8787/pdf \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "format": "A4" }' \
--output page.pdfHTML 렌더링 (예시 payload)
{
"html": "\n## Invoice #1234\n\nTotal: 99 USD\n",
"width": 600
}기능
- 디바이스 에뮬레이션: iPhone 14, iPad, Pixel 7, Desktop 4K
- 요소 스크린샷: 특정 CSS 선택자 캡처
- 다크 모드: dark‑color‑scheme 렌더링 테스트
- 동시 풀: 병렬 요청을 위한 다중 브라우저 작업자
- API‑key 인증: Bearer 토큰으로 인스턴스 보호
Docker 배포
FROM python:3.11-slim
RUN pip install playwright aiohttp && \
playwright install chromium --with-deps
COPY snapforge.py /app/
WORKDIR /app
EXPOSE 8787
CMD ["python", "snapforge.py", "--workers", "4"]docker build와 docker run 한 줄 명령으로 배포한다.
일반적인 사용 사례
- CI/CD 시각적 회귀 테스트
- 인보이스 및 보고서 PDF 생성
- 소셜 미디어용 동적 OG 이미지 생성
- 대시보드 모니터링 스크린샷
- 문서 스크린샷 자동화
비용 비교 (월 10 000 스크린샷 기준)
| 서비스 | 대략 비용 |
|---|---|
| ScreenshotOne | ~ $100 USD/월 |
| Browserless | $200+ USD/월 |
| SnapForge (5 USD VPS) | $5 USD/월 |
저장소
- GitHub: 단일 파일, MIT 라이선스. 자체 호스팅하고 잊어버리세요.