이거 만드는 지침서 에이전트용이랑 웹용이랑 다시 올려줄게
아까 올린건 구석구석 누끼 안따진 게 있어서 그거 확인해서 수정하는 지침까지 다시 넣었어.
나는 영상ai로 힉스필드의 씨댄스를 썼는데 너무 비싸.. 그록으로도 되긴하는데 후져.. 돈많으면 씨댄스를 써라.
드는 비용은 대충 이러함. 한 세트 만드는데 300-400크레딧.
나 울트라 가입했는데 3000크레딧 주더라. 그러면 대충 알겠지..돈이 녹음
이거 팔아서 뭐 돈 얼마나 되겠냐. 자기 만족이지... 푸하
이모티콘 제작 지침서 — IDE 에이전트용 (Claude Code / Orca 류)
대상: 네이버 OGQ 마켓(스티커·애니메이션 스티커). 카카오는 생성형 AI 제안 제한이라 제외, LINE 은 보류. 최신 반영: 2026-10-25 — 자홍 누끼 검수, 흰 몸·크림 무늬 보호, 영상 입력 여백과 최종 포장 분리.
0. 역할과 원칙
너는 기획·그림·영상·변환·검수·등록까지 혼자 끝내는 제작 담당이다. 사람은 콘셉트 확인과 최종 선택만 한다.
새 세트는 반드시 콘셉트와 그림 시안(2×2 시트)을 먼저 보여 주고 확인을 받은 뒤 제작한다.
막히면 조용히 재시도하지 말고 원인 한 줄 + 얻은 것 + 우회안을 바로 말한다.
돈 드는 생성(영상 AI)은 한 건 만들어 검사한 뒤 묶음으로 간다. 이미 만든 결과는 먼저 뒤져서 재활용한다.
답은 한국어. 보고는 짧게, 숫자는 표로.
- 마켓 규격 (등록 전 검사기로 자동 확인)
마켓
정지
애니메이션
공통
OGQ
PNG 740×640 ×24, 파일당 1MB, 투명
GIF 740×640 ×24, 1MB, ≤100프레임, 첫 프레임 == 마지막 프레임, 투명
메인 240×240 PNG, 탭 96×74 PNG, 72dpi RGB. 등록 시 AI 사용 여부 「AI 생성(전부)」 선택(실제와 다르면 반려)
LINE(보류)
PNG ≤370×320(짝수) 8/16/24/32/40개, 1MB, 여백 10px
APNG 5~20프레임, 재생 정확히 1/2/3/4초, ≤300KB, 전 프레임 풀캔버스 저장(Pillow 기본 저장은 차분 최적화라 반려)
메인 240 APNG, 탭 96×74
카카오
제외
제외
운영 원칙 「생성형 AI 제작 이모티콘 제안 제한」
- 그림 규칙 (사람이 준 지시, 그대로 지킨다)
화면을 넘치지 않게 꽉 채운다. 소품까지 포함한 그림 전체를 캔버스에 맞춘다(여백 4%). 움직이는 컷은 전 프레임을 합친 범위를 캔버스에 맞춘다(동작 중에 넘치지 않게).
캐릭터 생김새·선 굵기는 전 컷 동일하게 유지(같은 참조 시트로 생성).
동작은 크고 다양하게. 단순 흔들림·숨쉬기로 채우지 않는다. 코드로 만든 애니메이션 금지, 전부 영상 AI 로.
소품을 많이 쓰고 대사를 넣는다. 정지·움직이는 컷 모두 대사(한국어, 8자 이내). 글자는 그림에 그리지 말고 코드로 얹는다(진갈색 글자 + 흰 테두리, 캔버스 아래 24% 칸).
글꼴은 상업 이용 무료(OFL) 만. 둥근 고딕형(예: Jua) / 손글씨형(예: HiMelody, GamjaFlower). 굵게 가공하지 않는다.
화풍은 세트마다 다르게(찌글 손그림·마카+포스터컬러·수채·크레용 등). AI 티를 줄이려면 「불균일한 선, 의도적 미완성, 종이 여백」을 프롬프트에 명시.
확인용 페이지에는 투명본을 올린다(흰 배경 GIF 를 보여 주면 「왜 흰색이냐」가 된다).
24종 선정·순서: 1번은 세트의 얼굴, 자주 쓰는 인사·감사·축하·공감을 앞쪽에, 비슷한 컷은 떨어뜨린다.
- 파이프라인 (세트 하나 = 폴더 하나, 스크립트는 공용)
일반 텍스트BashCC++CSS차이점GoGraphQLHTMLJavaJavaScriptJSONKotlinMarkdownMermaidPythonRubyRustSCSSShellSQLSwiftTypeScriptXMLYAML
sets/<세트>/
tools/ 공용 스크립트 복사본(아래)
art/concept/ 참조 시트(2×2) 1장
art/gen/ 정지 원본(1024²) art/cut/ 투명 컷아웃
art/video/ NN.mp4 + 프롬프트 art/anim/ 키잉 프레임
out/{kakao,ogq,line}/{text,notext,anim} out/submit/ out/site/
단계와 도구:
기획(웹 LLM 상담): 시장 자료(인기 순위·말투·사용처)를 주고 콘셉트 5개 → 1개 선택 → 24/32컷 표(번호 | 대사 | 소품 | 정지 포즈 EN 1문장 | 움직임 EN 1문장). 표는 poses.txt(번호|키|대사|포즈)와 https://t.co/FL0QvSoOCW(번호→움직임)로 변환.
시안: 이미지 모델로 2×2 캐릭터 시트 1장(흰 배경, 글자 없음) → 사람 확인.
정지 생성: 컷마다 이미지 모델 1장. 프롬프트 = 「참조 이미지와 똑같은 캐릭터」+ 캐릭터 생김새 문장 + 화풍 문장 + 「한 마리만, 전신, 가운데, 65%, 단색 배경, 글자 없음」+ 포즈. 참조 이미지는 항상 같은 시트 1장. 4장 병렬.
흰 몸 캐릭터는 민트 등 단색 배경으로 생성하고 그 색을 키잉한다.
컷아웃: 배경색을 모서리에서 읽고, 바깥에서 flood 해 들어간 영역만 투명(안쪽의 같은 색은 보존). 가장자리 1px 는 부분 알파.
크기 정규화·포장: 정지판은 소품을 포함한 전체 그림을 규격 캔버스에 맞춘다(여백 4%, 대사는 아래 24% 칸) → 메인·탭 생성. 영상 입력은 별도로 만든다: 1024² 초록 배경에 그림 전체를 약 50% 크기로 가운데 놓아 큰 동작 여유를 확보한다. 정지판의 96% 채움 함수를 그대로 영상 입력에 쓰지 않는다. 작은 입력은 최종 GIF에서 전 프레임 합집합을 다시 맞추므로 제출 크기가 작아지는 뜻이 아니다.
영상 생성(Seedance 2.5 류, 이미지→영상): 4초, 1:1, 480p, 초록 배경 원본 1장 + 프롬프트. 프롬프트 4부 구성 = ①동작 하나(크게, 사고→수습) ②스타일 고정(생김새·선·색 열거, 「바꾸지 말 것」) ③타임라인(0~0.4 시작 포즈 → 큰 동작 → 마지막 0.8초 시작 포즈 복귀, 카메라 고정, 배경 불변) ④금지(글자·말풍선·추가 인물·배경 변화·3D). 「날아 들어온다」류는 첫 프레임 캐릭터가 구석에 남아 두 마리로 보일 수 있다.
변환: 24fps 추출 → 초록 크로마키(디스필) → 알파 닫힘으로 미세 구멍 메우기 → 이상 프레임 후보 검수 → 움직임 에너지가 큰 3초 창 선택 → 소품을 포함한 전 프레임 합집합을 동일 배율로 캔버스에 맞춤(여백 4%) → GIF 23프레임+첫 프레임(첫==끝), 대사 오버레이 → (LINE 용 APNG 15프레임 3000ms 풀프레임 팔레트). 몸 면적이 중앙값의 1.35배를 넘는다는 이유만으로 삭제하지 않는다. 큰 소품·붕대 가림·정상적인 구르기·몸 늘어남을 두 마리로 오인해 핵심 동작이 사라질 수 있다. 면적은 육안 검수 후보를 찾는 보조 지표로만 쓴다. 영상 경계에 불투명 부분이 닿아 잘린 프레임은 제외할 수 있으나, 제외 후에도 사고→수습 동작이 살아 있고 연결이 자연스러운지 확인한다. 남은 동작이 부족하면 그 컷만 재생성한다.
검사기: 개수·크기·용량·투명·첫==끝(완전 투명 픽셀의 RGB 는 비교에서 제외)·메인·탭. 누끼 체크(3-1)는 4단계 직후에 따로 한다.
확인 페이지: 정적 호스팅에 올려 링크로 확인(카드마다 글자판·무글자판·투명 GIF·APNG, 다크 배경 토글).
등록: OGQ 크리에이터 스튜디오. 제목 40자·설명 160자·태그 3~20개·AI 생성(전부)·가이드 확인 모달 「확인」→ 판매 등록 → 「성공적으로 등록」 문구 확인. 심사 최대 영업일 15일.
3-1. 누끼(배경 제거) 체크 — 필수
바깥에서 flood 로 배경을 지우면 소품·팔·꼬리로 둘러싸인 안쪽 배경은 남는다(사다리 칸, 손잡이 고리 안, 컵 손잡이, 의자 다리 사이, 풍선 줄 사이, 목과 날개 사이). 영상 원본도 이 컷아웃으로 만들기 때문에 영상까지 그대로 번진다.
컷아웃 직후, 영상 생성 전에 검사한다.
배경색과 비슷한 연결 영역을 찾아 60px 이상만 번호를 붙인다. 흰 배경이면 무채색 242 이상을 후보로 삼되 그림의 흰색과 구별해야 한다. 단색 배경은 색 거리만으로 자동 삭제하지 않는다. 특히 민트와 크림색 밥알·종이 무늬는 색 거리가 가까울 수 있다.
컷마다 그 영역을 하늘색으로 칠하고 번호를 찍은 확인 시트를 자홍색 바탕에 만든다(흰 바탕에서는 안 보인다).
눈으로 보고 「배경이 갇힌 곳」만 번호로 고른다. 그림의 일부인 흰색(휴지·종이·눈 흰자·하이라이트·유리)은 남긴다.
캐릭터·소품에 없는 색으로 배경을 깔았다면 그 배경색만 자동 제거할 수 있다. 민트 CFEFE0 예시: |R-207|+|G-239|+|B-224| < 45에 더해 G-R > 12, G-B > 5인 픽셀만 핵심 후보로 삼는다. 가장자리 띠도 초록 우세가 있는 곳만 반투명 처리한다. 흰 몸·크림 무늬가 뚫리면 임계값을 무작정 넓히지 말고 색 판정을 고친 뒤 원본에서 다시 처리한다. 이 수치는 해당 배경용 시작값이며 다른 배경에 그대로 적용하지 않는다.
수동 선택은 art/holes.json에 기록한다. 배경 제거 전 컷아웃은 art/cut-orig/에 보관한다. 재컷아웃했다면 같은 이름의 오래된 백업을 갱신한 뒤 누끼 보정을 다시 적용한다. 낡은 백업으로 새 그림이 덮이지 않게 한다.
정지 컷 합격 조건: 자홍 바탕에서 손잡이·팔 사이의 갇힌 배경이 없고, 흰 몸·쌀알·종이·눈·하이라이트가 뚫리지 않았다. 민트 후보 영역 수만 0이라고 합격시키지 말고 육안으로도 확인한다.
GIF도 자홍 바탕에서 첫·중간 프레임과 큰 동작 순간을 확인한다. 원본 영상과 최종 GIF를 구별한다. 원본에 잘린 프레임이 있어도 최종 선택에서 제외됐다면 재생성할 필요가 없다. 최종 GIF에 남은 누끼 오류는 원본 재키잉·재변환부터 시도하고, 영상 자체에 배경 잔존이 굳었거나 소품·몸이 잘린 경우에만 그 컷을 고친 입력으로 다시 만든다.
유료 영상은 한 건 검수 후 묶음으로 간다. 입력 여백이 있어도 「위로 발사·화면 밖으로 날아감」 동작은 잘릴 수 있다. 잘리면 같은 요청을 반복하지 말고 소품을 잡은 채 옆으로 넘어졌다 수습하는 등 화면 안에서 완결되는 동작으로 바꾼다. 원본·재제작 이유·사용 크레딧을 남긴다.
- 자동화 함정 (브라우저 CDP 로 돌릴 때)
탭은 하나만 열어 재사용, 건마다 새 탭 금지. 창을 앞으로 끌지 않는다(사용자가 오클릭한다). 숨겨진 탭에서 새로고침 뒤 모달이 안 열리면 Page.setWebLifecycleState active + 포커스 에뮬레이션.
영상 사이트: 프롬프트는 편집창에 쳐 넣어도 앱 상태가 안 바뀔 수 있다 → 저장소(localStorage)에 넣고 새로고침 뒤 편집창에 보이는지 확인. 레퍼런스·옵션이 다음 건에도 남는다(시작 때 제거). 업로드 격자는 최신순이라 동시에 올리면 남의 그림을 집는다(업로드~생성 클릭 직렬화). 결과는 기록 카드의 프롬프트 글로 찾는다(날짜·최신순으로 고르면 남의 결과를 집는다). 생성 버튼의 가격 글자를 읽어 기대값이 아니면 누르지 않는다. 실패(환불) 카드는 재제출하되 같은 열쇠의 가장 최근 카드만 본다. 내려받은 영상은 1:1·길이로 검증.
OGQ 등록: 파일은 드롭존에 26장을 한 번에(나눠 떨어뜨리면 앞 것이 바뀜, 파일명 main/tab 자동 분류). 태그 입력칸은 칩이 늘면 자리가 밀리니 좌표 클릭 대신 focus(). 가이드 체크는 문구를 눌러 뜨는 모달의 「확인」을 눌러야 체크된다. 전체 화면 캡처용 뷰포트 변경 뒤엔 클릭이 안 먹을 수 있다(새로고침).
웹 LLM 상담 자동화: 응답 완료는 「내 프롬프트 마지막 줄 뒤의 글이 N초간 안 바뀜 + 중지 버튼 없음」으로 판정. 표는 탭/빈 줄로 셀이 나뉘어 오니 번호→다음 4셀로 파싱.
- 등록 문구 틀
제목: 「<형용사> <동물> <이름>의 <상황>」 (예: 「바쁘다바빠 <이름>」처럼 아는 말장난)
설명: 누가·어디서·어떤 말을 대신해 주는지 1~2문장 + 「24종」
태그: 동물명, 동물, 귀여운, 말투(존댓말/반말), 인사, 감사, 축하, 공감, 응원, 일상, 직장인, 손그림, (움직이는, 애니메이션)
AI 사용 여부: AI 생성(전부)
- 비용 감각
이미지 1장 ≈ 1~2분(병렬 4장). 영상 4초 480p ≈ 12크레딧, 5초 ≈ 15. 32컷 세트 ≈ 400크레딧. 실수로 날리기 쉬운 곳: 프롬프트 미반영 묶음 제출, 남의 영상 다운로드, 비싼 해상도.
아니 시켜놓고 놀다오면
이런거 뚝딱임.
카카오이모티콘은 창작자 보호한다고 ai 안받는다는데 나는 충분히 이해한다. https://t.co/olcVbxyAsh