| name | auto-card-news |
| description | Create source-backed, channel-aware Korean carousel/card-news packages with real media research, concise copy, fixed HTML/CSS rendering, PNG output, optional motion/MP4 planning, deterministic QA, and explicit publish approval. Use when a user gives a URL, GitHub repo, article, report, screenshot, or topic and asks for Instagram cards, a carousel, card news, captions, or a mixed static/motion package. |
Auto Card News
AI는 편집장 역할만 한다. 반복 제작은 저장소의 코드가 맡는다.
- AI: 소스 해석, 각도 선택, 한국어 카피, 미디어 후보 선택
- 코드: HTML/CSS, 폰트, 줄바꿈 제한, 렌더링, 접촉 시트, QA, 게시 큐
- 사용자: 최종 결과 검수와 업로드 승인
명령은 저장소 checkout 또는 runtime-path.txt에 기록된 auto-card-news-runtime 루트에서 실행한다. 설치본은 보통 $CODEX_HOME/auto-card-news-runtime 또는 $CLAUDE_HOME/auto-card-news-runtime에 있다.
기본 산출물
- 1080x1350 카드 7장
- 카드별 독립 HTML과 PNG
contact-sheet.png, thumbnail-sheet.png
- 인스타그램 캡션
- 필요할 때만 릴스 기획 또는 MP4
READY_FOR_REVIEW.json
필수 실행 순서
1. 소스를 검증한다
현재 정보는 공식 문서, 원문, 저장소, 릴리스와 교차 확인한다. 사용자가 소스를 주지 않았다면 last30days로 fresh source discovery를 수행하고 source-pack.md에 근거를 남긴다.
URL 기반 프로젝트는 먼저 실제 미디어를 수집한다.
node tools/automation/collect-source-media.mjs <project-dir> --limit 12
assets/web/source-media-ledger.json에서 다음 순서로 고른다.
- 실제 제품/사용 데모 이미지 또는 영상
- 공식 문서의 설명력이 높은 화면
- 소스 페이지 캡처
- 실제 흐름을 재현한 HTML 시각화
reference-only 미디어는 최종 산출물에 복사하지 않는다. GPT Image는 기본 경로가 아니다.
2. 비슷한 성공 사례만 찾는다
전체 기록을 문맥에 넣지 않는다. 먼저 카탈로그를 검색한다.
rg -n "<topic-or-pattern>" skills/auto-card-news/references/library/manifest.json
관련 프로젝트 1-3개의 files/와 미리보기만 읽는다. 라이브러리는 127개 AI JJUN 프로젝트와 출처 링크를 압축 보관한다.
레이아웃 감각이 필요할 때만 references/visual-reference-atlas/manifest.json에서 가장 가까운 셀을 찾고 아틀라스 1장만 본다. 182개 원본 레퍼런스는 146개 고유 저해상도 썸네일로 압축돼 있으며 모두 reference-only다. 아틀라스 프레임을 최종 콘텐츠에 복사하지 않는다.
3. 카피와 카드 계약만 작성한다
AI가 직접 HTML/CSS를 만들지 않는다. content.draft.json만 작성한다.
- 정확히 7장
- 역할 순서: 상황/훅 → 문제 → 쉬운 설명 → 실제 근거 → 사용법 → 주의점 → 행동 유도
- 한 카드에 한 메시지
- 제목은 의미 단위 1-3줄
- 본문은 최대 3줄
AI쭌식, 체감 이득, 말맛 같은 내부 표현 금지
- 기술명보다 시청자가 얻는 결과를 먼저 쓴다
- AI JJUN은 친근한 Korean 튜터 톤을 쓰되 심각한 보안/비용 주제는 장난을 줄인다
상세 계약과 카피 기준:
references/content-contract.md
references/copy-harness.md
assets/prompts/copy-director.md
카피를 먼저 검사한다.
node tools/carousel/validate-copy.mjs <project-dir>/content.draft.json
실패한 문장만 고친다. 전체를 다시 생성하지 않는다.
4. 미디어를 확정하고 렌더한다
node tools/carousel/prepare-carousel.mjs <project-dir> --render
이 단계가 후보 ID를 로컬 미디어 파일로 확정하고 content.json을 만든다. 렌더러는 GmarketSans와 fixed CSS Grid(고정 CSS Grid)를 사용한다.
허용 레이아웃:
cover-media
media-top
media-full
compare
checklist
steps
cta
레이아웃 위치를 카드마다 임의 좌표로 다시 만들지 않는다. HTML/CSS preview는 코드가 생성한다.
5. 실제 화면을 검사한다
contact-sheet.png를 열어 아래를 확인한다.
- 글자, 번호, 칩, 미디어, 출처가 겹치지 않음
- 한 단어가 외톨이 줄로 남지 않음
- 모바일에서 제목과 본문이 충분히 큼
- 첫 장에 실제 사용 장면 또는 결과가 바로 보임
- 같은 이미지가 이유 없이 반복되지 않음
- 최소 3개의 서로 다른 시각 근거가 있음
렌더러가 overflow, collision, missing font, missing media를 발견하면 READY_FOR_REVIEW.json을 만들지 않는다.
6. 모션은 필요할 때만 붙인다
실제 데모, 타이핑, 전후 변화가 이해를 크게 높일 때 auto-motion-news를 사용한다. 단순 슬라이드쇼 MP4는 만들지 않는다. HyperFrames 또는 Remotion을 쓰더라도 정적 카드와 같은 GmarketSans, 카피, 색, 안전 영역을 유지한다.
7. 검수와 게시를 분리한다
READY_FOR_REVIEW.json: 코드 QA를 통과해 사용자가 볼 수 있음
APPROVED_FOR_PUBLISH.json: 사용자가 이 결과물 업로드를 명시적으로 승인함
두 번째 파일 없이 실제 Instagram/Threads API를 실행하지 않는다. "만들어줘"는 업로드 승인이 아니다.
node tools/publish/build-publish-queue.mjs --project <project-dir>
node tools/publish/validate-publish-queue.mjs
인스타그램 캐러셀은 API로 자동 게시할 수 있다. 사진 캐러셀의 라이선스 음악 선택은 공식 게시 API에 문서화된 필드가 없으므로 앱에서 수동 마무리한다.
node tools/publish/build-instagram-music-handoff.mjs --item <project-slug>
캐러셀의 릴스 탭 추천 노출은 인스타그램이 결정하며 보장할 수 없다.
필요할 때 읽는 참조
- 채널/AI JJUN 방향:
references/ai-jjuun-production-playbook.md
- 소스와 프로젝트 흐름:
references/project-workflow.md
- 실제 미디어 수집:
references/scrapling-source-collection.md
- 디자인과 모바일 가독성:
references/design-and-references.md
- 정적/모션 내보내기:
references/rendering-and-motion.md
- 게시 자동화:
references/publishing-automation.md
- 전체 과거 사례:
references/library/index.md
완료 조건
완료라고 보고하기 전에 아래가 모두 있어야 한다.
content.json
output/card-01.png부터 card-07.png
output/contact-sheet.png
output/thumbnail-sheet.png
READY_FOR_REVIEW.json
- 출처가 있는 캡션
- 실제로 열어본 시각 QA 결과
검증하지 못한 항목은 완료라고 말하지 않는다.