홈 · Python · 인스타그램 · 카드뉴스 · 이미지 생성 · Pillow
무엇을 하나
인스타그램 카드뉴스 캐러셀을 만드는 파이썬 도구다. 두 JSON 을 받는다.
scene_plan.json: 장마다 배경 사진 프롬프트와, 그 사진에 꼭 있어야 할 것(must_have)copy.json: 장마다 레이아웃과 문구
배경은 생성 모델이 글자 없이 그리고, 문구는 Pillow 가 얹어 1080×1350 카드 8장과 컨택트 시트를 만든다. 레이아웃은 표지 · 사진 이야기 · 코드 상자 · 번호 목록 · 주의 목록 · 마지막 장 · 브랜드 카드 일곱 가지다.
직접 돌려 봤다
파이썬 3.12 격리 환경에 설치하고 테스트를 돌리니 21개가 모두 통과했다. 배경 생성은 건너뛰고 단색 배경 여덟 장을 넣어 예시 문구로 합성했다. 이 리포트의 표지가 그 결과다(배경 색은 Giting 이 넣은 것).
- 한글이 깨지지 않았다. 생성 모델이 글자를 그리지 않으니 오타가 날 자리가 없다.
- 본문 장들의 제목이 장마다 같은 높이에서 시작했다. 코드에 시작선
INTERIOR_TOP = 670과 하한선INTERIOR_FLOOR가 있고, 글이 길어 하한선을 넘을 때만 블록을 위로 당긴다. - 의존성은 Pillow 하나다.
파이썬 3.11 에서는 requires-python >=3.12 때문에 설치가 거절됐다.
배경 생성은 두 길
gpt-image-2 를 기본으로 쓰는데, API 를 부르지 않는다. codex exec 에 다음과 같은 문장을 보낸다.
> Use the built-in image_gen tool to generate an image. … Copy the generated image to '…png'.
ChatGPT 구독 사용량으로 그려서 키가 필요 없는 대신, 모델이 지시를 다르게 받아들이면 파일이 안 생기고 실패로 끝난다. codex 는 workspace-write 권한으로 돈다. 다른 길은 로컬 ComfyUI 의 FLUX 다(자기 GPU, 무료).
검수는 체크리스트로, 판정은 사람이
README 에서 가장 좋은 대목이다. 두 엔진의 차이는 선명도가 아니라 프롬프트를 따르느냐에서 갈렸고, 「안개 낀 계곡」을 시켰는데 밝은 숲이 나오는 실패는 픽셀 지표로 안 잡힌다고 적었다. 그래서 장면마다 ["계곡 물", "안개", "텐트 1동"] 같은 체크리스트를 둔다.
다만 대조는 자동이 아니다. 도구는 컨택트 시트와 checklist.json 을 만들고, 사람이 보고 빠진 장을 --escalate s04,s06 으로 지정하면 그 장만 다른 엔진으로 다시 뽑는다.
주의점
하루 된 저장소다. 2026-10-17 에 만들어져 커밋 4개, 저자 1명, CI 는 없다.
인스타 자동 발행(instagram.py · hosting.py, Graph API 와 Cloudinary)은 코드가 들어 있지만 README 가 직접 「아직 실사용 검증 전」이라고 밝힌다. 이 리포트에서도 돌리지 않았다.
장면 프롬프트가 codex 지시문에 그대로 들어간다. 내가 쓴 장면 파일이면 문제없지만, 남이 만든 파일을 받아 돌리면 그 문장이 쓰기 권한을 가진 에이전트에게 그대로 간다.
GitHub 은 라이선스를 NOASSERTION 으로 표시하지만, LICENSE 파일은 MIT 이고 폰트 고지가 덧붙어 있어서 그렇게 보이는 것으로 보인다(추정). 동봉한 Pretendard 는 OFL 1.1 이다.
실측 정보
- HEAD 커밋
- e434518 (2026-10-17) · 전체 이력 4커밋 · 저자 1명
- 스타 / 포크
- 17 / 4
- 규모
- 45파일 · 텍스트 3,841줄 · 파이썬 31파일 3,278줄 · 가장 큰 파일 src/instacards/tips.py 510줄
- 테스트 / CI
- 테스트 파일 8 · CI 워크플로 0 · pytest 21개 통과(Giting 맥미니, 파이썬 3.12)
- 의존성
- Pillow 하나(pyproject). 파이썬 3.12 이상
- 배경 생성
- gpt-image-2 는 codex CLI(codex exec)에 자연어로 시킴 · FLUX 는 로컬 ComfyUI
- 라이선스
- MIT · 동봉 폰트 Pretendard 는 SIL OFL 1.1 (GitHub 표시는 NOASSERTION)
적용점
- 쓴다면파이썬 3.12 이상으로 깐다(3.11 은 설치 단계에서 거절된다). 배경은 직접 고른 사진을 jobs/…/bg 에 넣고 합성 단계(compose_tips_carousel.py)만 써도 된다. 이 부분이 가장 믿을 만하다.
- 가져올 생각장면마다 꼭 들어가야 할 것을 must_have 로 적어 두고(예: 계곡 물 · 안개 · 텐트 1동) 빠진 장만 다른 엔진으로 다시 뽑는 검수 방식. 「예쁜가」 대신 체크리스트로 판정한다.
- 가져올 생각본문 장들의 글 블록이 모두 같은 y 에서 시작하고(INTERIOR_TOP 670), 아래 한계선(INTERIOR_FLOOR)을 넘을 때만 위로 당긴다. 넘길 때 글자 위치가 흔들리지 않는다.
- 알고 쓸 것gpt-image-2 경로는 ChatGPT 사용량을 쓰고, codex 를 workspace-write 권한으로 실행한다. 장면 프롬프트가 그대로 지시문에 들어가니 남이 준 장면 파일은 그냥 돌리지 않는다. Pretendard 에 이모지가 없어 문구에 이모지를 넣으면 네모로 나온다.
참고용. 카드를 짜 맞추는 부분은 잘 만들었다. 생성 모델에는 글자 없는 사진만 그리게 하고 승인된 문구는 Pillow 가 얹어서 한글이 깨질 수가 없다. 직접 깔아 단색 배경 여덟 장으로 합성해 보니 표지 · 본문 · 목록 · 마지막 장까지 글자 위치가 장마다 고르게 맞았다. 그런데 도구 전체로 쓰기엔 이르다. 저장소가 만들어진 지 하루고 커밋이 4개다. 배경 생성은 API 가 아니라 codex CLI 에 「image_gen 도구로 그려서 이 경로에 저장해」라고 문장으로 시키는 방식이라, 모델이 지시를 다르게 받아들이면 파일이 안 생긴다. 장면 검수도 자동이 아니다. 컨택트 시트와 체크리스트를 만들어 줄 뿐, 빠진 장은 사람이 보고 골라 다시 뽑는다. 인스타 자동 발행은 코드는 있지만 작성자가 README 에 「실사용 검증 전」이라고 적었다.
의견
판정에 대한 반론, 도입 경험, 정정 제보를 환영합니다. GitHub 계정으로 참여합니다.