| name | insta-cardnews |
| description | 블로그 링크→인스타 카드뉴스 자동 루틴에 시안판/최종본 구분과 게시 승인 트리거를 추가 |
Insta Cardnews — 블로그 링크 자동 카드뉴스 루틴 보강
추가 트리거
사용자가 블로그 링크와 함께 다음 의도를 말하면 insta-cardnews 루틴을 자동 실행한다.
- “인스타 카드뉴스 만들자”
- “카드뉴스로 올려줘”
- “인스타 올려줘”
- “캐러셀로 올려줘”
- “블로그 링크주고 올리라고 하면” 계열 표현
단, 외부 게시이므로 명시적으로 “올려줘/게시해/진행/인스타 올려”가 포함된 경우에만 publish 승인으로 본다. 단순히 “만들자”면 시안/최종본 확인 후 게시 전 멈춘다.
기본 산출물
블로그 글 1개를 받으면 기본값은 다음과 같다.
- 본문 카드 4장
- 공용 CTA 1장
- 총 5장 Instagram
CAROUSEL_ALBUM
- 모든 최종 슬라이드는 1080×1350으로 정규화
복잡한 글은 6~8장으로 늘릴 수 있지만, 사용자가 장수를 말하지 않으면 5장을 기본으로 한다.
시안판 vs 게시용 최종본 구분
이미지 생성기가 4개 슬라이드를 한 이미지 안에 담은 “4컷 시안판” 형태로 출력할 수 있다. 이 경우 절대 그대로 게시하지 않는다.
사용자에게 보여줄 때
- 선택용이면 반드시 “선택용 4컷 시안판”이라고 표시한다.
- 게시용이면 반드시 “게시용 최종 슬라이드 1/5 … 5/5”라고 표시한다.
- 한 메시지 안에서 시안판과 게시용 최종본을 섞어 보내지 않는다.
사용자가 시안판을 고르면
- 선택된 4컷 시안판을 4개 슬라이드로 crop/split한다.
- 각 슬라이드를 1080×1350 흰 배경 캔버스로 정규화한다.
- 공용 CTA를 1080×1350으로 정규화해 5번째에 붙인다.
- 최종 게시 전에는 잘라진 1장짜리 슬라이드 5개만 보여준다.
- “이 5장으로 올라갑니다”라고 명시한다.
게시 루틴
게시 승인 후:
paper-loop에 새 폴더 instagram-<slug>-<YYYYMMDD>/ 생성
- 최종 5장만 복사
- unrelated git 변경은 건드리지 않고 새 폴더만 commit/push
- GitHub raw URL 5개 생성
- 캡션은 파일/heredoc으로 작성하고
repr, literal \\n, paragraph count 검수
scripts/instagram_publisher.py carousel --image-url ... --caption "$CAPTION" --publish
scripts/instagram_publisher.py recent --limit 3로 검증
- 사용자에게
CAROUSEL_ALBUM, 장수, 캡션 줄바꿈 확인, permalink 보고
주의
instagram_publisher.py 현재 버전은 --caption-file을 지원하지 않는다. 캡션 파일을 읽어 쉘 변수 또는 Python wrapper로 --caption에 전달한다.
- 셸 변수 검수에서 heredoc Python에 환경변수를 넘기지 않으면 빈 값으로 보일 수 있으므로, 실제 게시 후 반드시
recent로 캡션을 재확인한다.
- 4컷 시안판은 “후보 선택용”이고 게시물은 항상 분리된 1장짜리 슬라이드들이다.