핵심 요약: ChatGPT Images 2.6으로 브랜드 마스코트 애니메이션을 제작하려면, 3×2 그리드로 고정된 6프레임 스프라이트 시트 생성을 요청한 뒤, 시트를 프레임별로 잘라내어 정렬하고 반복 재생(루핑)되는 GIF로 내보내면 됩니다. 2026년 11월 5일 무료 계정에서 직접 테스트한 결과, 정렬 과정을 거치자 발 위치의 흔들림이 11.5픽셀에서 1픽셀로 크게 줄었습니다.
브랜드 마스코트 애니메이션 제작에 단일 프롬프트 이상이 필요한 이유
브랜드 마스코트는 모든 프레임에서 고유한 외형과 정체성을 유지해야 하므로 작업 방식 자체가 달라집니다. 일회성 리액션 짤(GIF)이라면 프레임마다 모양이 조금씩 바뀌어도 상관없지만, 브랜드 마스코트는 그래서는 안 됩니다.
OpenAI의 Images 2.6 출시 게시물에서도 마케터가 “캠페인용 브랜드 마스코트를 애니메이션화할 수 있다”며 이 활용 사례를 직접 언급하고 있습니다. 이 기능은 모든 구독 등급의 ChatGPT와 Codex는 물론 API를 통해서도 지원됩니다.
ChatGPT에서는 한 줄짜리 프롬프트로 바로 생성하는 간단한 방법도 있습니다. 동일한 무료 계정에서 진행한 이전 테스트에서는 반복 재생 GIF 생성을 요청하자 8프레임짜리 완성본 파일이 바로 생성되었습니다. 가벼운 리액션용으로는 손색이 없지만, 마스코트 작업에는 스프라이트 시트 방식이 훨씬 더 적합합니다. 프레임 수를 직접 지정하고, 각 동작 포즈를 미리 확인하며, 재생 타이밍을 세밀하게 조절할 수 있기 때문입니다.
스프라이트 시트란 애니메이션의 모든 프레임을 하나의 그리드 이미지에 담아낸 파일입니다. 사진 밀착 인화지(contact sheet)처럼 전체 컷을 검토한 뒤 순서대로 재생하면 됩니다.
여러 팀원이 브랜드 자산을 함께 다룬다면 기획안(브리프)과 승인 절차를 체계적으로 관리할 공간도 필요합니다. Sharkly가 바로 이 부분을 지원하며, 구체적인 방법은 본문 후반부에서 다룹니다.
프롬프트를 작성하기 전에 준비해야 할 사항
입력 자료 준비에 5분만 투자해 보세요. 준비 상태에 따라 결과물이 마스코트의 본래 모습을 제대로 살릴 수 있을지가 결정됩니다.
- 참조 이미지(레퍼런스): 단색 배경에 마스코트의 전신이 선명하게 나온 단일 이미지.
- 캐릭터 텍스트 설명: 몸 색상, 얼굴형, 신체 비율, 선의 굵기(스트로크), 착용 액세서리 등.
- 단 하나의 동작: 손 흔들기, 고개 끄덕이기, 눈 깜빡이기 등. 6프레임으로는 복잡한 장면을 담을 수 없습니다.
- 파일의 용도: 채팅 스티커와 랜딩 페이지 히어로 배너는 필요한 해상도와 재생 속도가 완전히 다릅니다.
반드시 본인이 직접 소유하고 있거나 사용할 권리가 있는 캐릭터만 애니메이션으로 제작하세요.
1단계: 마스코트 참조 이미지 첨부하기
ChatGPT Images를 열고 Add files and more(파일 및 기타 항목 추가)를 클릭하여 참조 이미지를 첨부합니다. OpenAI는 Images 2.6이 “편집 과정에서도 캐릭터, 제품, 브랜드의 세부 요소를 일관되게 유지한다”고 설명하므로, 이 참조 이미지가 디자인의 일관성을 잡아주는 핵심 기준이 됩니다.
이번 글에서는 참조 이미지를 직접 업로드하지 않고 진행했으므로, 이 단계는 당사의 실험 결과라기보다는 OpenAI의 공식 설명에 가깝습니다. 다만 참조 이미지 없이 진행하면서 두 가지 중요한 사실을 확인했습니다.
- 프롬프트에는 이미지를 첨부했다고 작성했지만 실제 첨부하지 않았을 때, ChatGPT는 임의로 캐릭터를 지어내지 않고 생성을 멈춘 뒤 파일을 요청했습니다.
- 이후 마스코트를 글(텍스트)로 묘사하자 6프레임 전체에서 일관된 캐릭터가 생성되었지만, 원래 기획했던 상어 디자인보다는 다소 둥글둥글한 모습으로 출력되었습니다.
텍스트 설명만으로도 생성된 결과물 내부에서의 캐릭터 일관성은 유지되지만, 원래의 브랜드 디자인을 완벽히 재현하기는 어렵습니다. 실제 브랜드 자산을 작업할 때는 반드시 참조 이미지를 활용하세요.
2단계: 마스코트에 최적화된 스프라이트 시트 프롬프트 작성하기
여기서 사용한 프롬프트는 3열 2행 그리드에 “정확히 6개의 연속 프레임”을 요구하는 OpenAI의 공식 예제 패턴을 따랐습니다. 캐릭터 묘사 단락만 보유한 마스코트 내용으로 변경해 보세요.
Create a single animation sprite sheet for a seamless looping GIF.
Character: a friendly cartoon shark mascot standing upright on two short
legs, charcoal-navy body, pale cream belly and lower jaw, large round eyes,
open smile with small white teeth, three gill lines, thick dark outline,
a small bright green ID badge on a dark lanyard, flat vector style,
no gradients.
The sequence: mascot stands facing forward, raises one fin, waves twice,
lowers the fin back to the starting pose.
Exactly 6 sequential frames in a precise 3-column by 2-row grid, read
left-to-right then top-to-bottom. Every panel has identical dimensions.
Fixed camera, same character, feet in the same spot in every frame,
plain white background. Sixth frame transitions smoothly back to the first.
No captions, no words, no numbers, no logos, no panel labels, no borders,
no gutters.
각 줄마다 수행하는 명확한 역할이 있습니다.
- ‘Same character’와 고정 카메라: 캐릭터 외형이 바뀌거나 화각 및 구도가 틀어지는 것을 방지합니다.
- ‘Feet in the same spot’: 이후 정렬 작업 시 오차를 점검할 수 있는 기준점(앵커) 역할을 합니다.
- 여섯 번째 프레임 관련 문장: 첫 번째 프레임으로 자연스럽게 이어지도록 루프 구조를 만듭니다.
- 금지 목록(‘No’ list): 프레임 안에 불필요한 텍스트나 패널 구분선 등이 들어가지 않도록 차단합니다.
다음은 ChatGPT가 생성한 원본 스프라이트 시트(1536×1024 해상도의 PNG 파일)입니다.

솔직히 짚고 넘어갈 점이 두 가지 있습니다. 이 프롬프트는 움직이는 GIF가 아닌 정지 이미지(PNG)를 반환하므로 직접 GIF로 조립해야 합니다. 또한 손을 두 번 흔들도록 요청했지만 실제로는 한 번 정도만 흔들렸습니다. ChatGPT 스스로도 “6개의 프레임 전체에서 동작이 완벽하게 구분되지는 않는다”고 지적했습니다. 6프레임에는 손을 한 번 흔드는 동작이 알맞으므로, 프롬프트에 1회만 요청하거나 프레임 수를 늘려야 합니다.
3단계: 시트 분할 및 위치 흔들림 보정
프롬프트에 ‘동일한 크기(identical dimensions)’를 명시했음에도 완벽하게 들어맞지는 않았습니다. 각 패널 안에서는 캐릭터가 중앙에 있는 것처럼 보였지만, 시트를 동일한 512픽셀 정사각형으로 자르자 캐릭터가 좌우로 미세하게 밀리는 현상이 발생했습니다. 열(column)마다 발 위치가 11.5픽셀이나 달라져, 반복 재생했을 때 덜컥거리며 튀는 것처럼 보였습니다.
해결책은 각 열을 고유한 오프셋(offset) 좌표에 맞춰 잘라내는(크롭) 것입니다. 각 프레임에서 발의 바깥쪽 끝과 같은 고정 기준점을 측정한 뒤, 그 차이만큼 자르는 위치를 보정합니다. 이번 작업에서는 각각 0, 517, 1035픽셀의 오프셋이 필요했습니다. 아래 명령어는 FFmpeg를 사용한 것으로, 그대로 실행했습니다.
i=0
for x in 0 517 1035 0 517 1035; do
y=$(( (i / 3) * 512 ))
ffmpeg -y -i sheet.png -vf "crop=500:512:$x:$y" frame$i.png
i=$((i + 1))
done
ffmpeg -y -framerate 1000/150 -i frame%d.png \
-vf "scale=384:-2:flags=lanczos,split[a][b];[a]palettegen=max_colors=64[p];[b][p]paletteuse=dither=none" \
-loop 0 mascot.gif
오프셋 값은 이미지마다 다르므로 직접 생성한 시트의 좌표를 측정해야 합니다. 두 번째 명령어는 프레임당 시간을 150밀리초(ms)로 지정하고 64색 팔레트를 적용한 것으로, 플랫한 벡터 아트 스타일에 매우 적합합니다.
완성된 반복 재생 애니메이션은 다음과 같습니다.

4단계: 자연스러운 루프 연결 상태 점검하기
자연스러운 루프 애니메이션은 마지막 프레임에서 첫 번째 프레임으로 넘어갈 때 끊기거나 튀는 현상이 없습니다. 눈대중으로만 판단하지 마세요. 정렬 전후의 프레임을 비교한 수치는 다음과 같습니다.
| 측정 항목 | 균등 그리드 분할 | 좌표 보정 크롭 |
|---|---|---|
| 프레임 간 발 위치 흔들림 | 11.5 px | 1 px |
| 루프 연결부 변경 픽셀 비율 | 13.8% | 3.6% |
| 파일 크기 | 332 KB | 284 KB |
완성된 GIF는 384×394 픽셀 해상도, 6프레임 구성이며 1회 재생당 0.9초가 걸립니다. 위치를 정렬하면 몸체가 고정되어 GIF 압축 시 다시 그려야 할 영역이 줄어들므로 파일 용량까지 절감됩니다.
공유하기 전에 다음 체크리스트를 확인하세요.
- 첫 프레임과 마지막 프레임을 비교합니다. 연결 동작에 필요한 미세한 차이만 남아 있어야 합니다.
- 모든 프레임에서 마스코트의 색상, 배지, 선 굵기가 일정한지 확인합니다.
- 프레임 가장자리에 불필요한 텍스트나 패널 경계선이 남아 있지 않은지 확인합니다.
- 실제 크기로 띄워놓고 10회 이상 반복 재생해 봅니다. 반복해서 보면 흔들림이 더 확연히 드러납니다.
특정 프레임에 문제가 있다면 시트를 다시 생성하거나 이미지 뷰어의 Describe edits(수정 사항 입력) 창을 활용하세요. (당사 테스트에서는 이 시트에 별도 수정을 적용하지는 않았습니다.)
API를 통한 마스코트 애니메이션 제작 방법
API를 사용하면 접근 경로가 달라집니다. OpenAI의 이미지 생성 가이드에 따르면 output_format을 gif로 설정하면 완성된 애니메이션을 반환받을 수 있지만, 이는 generation(생성) 엔드포인트에서만 가능합니다. 참조 이미지를 입력하는 edit(편집) 엔드포인트는 GIF 출력을 지원하지 않습니다.
따라서 마스코트 제작 시 API에서는 두 가지 경로를 선택할 수 있습니다.
- 네이티브 GIF 방식:
frame_count(2~64) 및frame_duration_ms(20~2000)를 지정하고 프롬프트만 사용하는 방식입니다. 마스코트 디자인은 전적으로 텍스트 설명에 의존하게 됩니다. - 참조 이미지 + 스프라이트 시트 방식: edit 엔드포인트에 참조 이미지를 전달하여 스프라이트 시트를 받은 뒤, 3단계의 방법대로 직접 조립하는 방식입니다.
curl https://api.openai.com/v1/images/edits \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-2.6-sunburst" \
-F "image[][email protected]" \
-F "size=1536x1024" \
-F "quality=high" \
-F "prompt=<your sprite sheet prompt>"
위 요청 코드는 공식 문서를 토대로 작성한 것이며 직접 실행하지는 않았습니다. OpenAI에 따르면 Sunburst 모델은 medium 또는 high 품질 설정 시 “편집 작업 전반에서 이미지 일관성을 더욱 높여준다”고 합니다. 가격 정책 페이지 기준으로 2.6 이미지 토큰 가격은 입력 100만 개당 8달러, 출력 100만 개당 30달러입니다.
팀 협업 워크플로로 마스코트 애니메이션 제작하기
혼자서도 이 모든 과정을 진행할 수 있지만, 마케팅 팀 단위로 협업할 때는 어떤 레퍼런스가 최신인지, 누가 루프 제작을 요청했고 누가 최종 승인했는지를 명확히 파악할 수 있어야 합니다. 그렇지 않으면 완성된 GIF 파일이 메신저 대화방 어딘가에 묻히고 맙니다.
사람과 에이전트를 위한 업무 협업 시스템인 Sharkly에서는 다음과 같이 진행됩니다.
- Task(작업)에 브리프 등록: 마스코트 참조 이미지, 프롬프트, 브랜드 가이드라인을 단일 Task에 첨부합니다.
- Agent(에이전트)의 작업 수행: Task를 Agent에 할당하면 런타임(Runtime)을 통해 연결된 컴퓨터에서 작업이 실행됩니다. 자세한 설정법은 AI 에이전트에게 첫 번째 작업 할당하기 가이드를 참고하세요.
- 담당자 검토 및 승인: Agent가 검토 대기 상태로 Task를 전달하면 담당자의 수신함(Inbox)에 표시됩니다. 이 협업 패턴에 대한 자세한 내용은 사람과 에이전트 간 핸드오프 패턴 글에서 확인할 수 있습니다.
Images 2.6은 Codex에서도 지원되며, Codex는 Sharkly가 지원하는 런타임 중 하나입니다. Codex를 통한 마스코트 생성은 아직 직접 테스트해보지 않았으므로 자체 환경에서 먼저 시도해 보시기 바랍니다.
Sharkly는 무료로 시작할 수 있습니다. 무료 플랜은 최대 5인 조직까지 지원되며, Agent는 좌석(시트) 수에 포함되지 않습니다. 모델 사용 요금은 연결한 플랜이나 API 키를 기준으로 청구됩니다.
마치며
마스코트 루프 애니메이션의 핵심은 세 가지 원칙으로 요약됩니다. 참조 이미지로 디자인을 고정하고, 6개 프레임에 단 하나의 동작만 기획하며, 내보내기 전에 프레임 좌표를 정렬하는 것입니다. 이 마지막 정렬 단계를 통해 발 위치의 흔들림을 11.5픽셀에서 1픽셀로 줄일 수 있었습니다.
팀원들과 함께 시작해 볼 준비가 되셨나요? Sharkly 무료 워크스페이스를 생성하고, 다음 마스코트 브리프를 Task에 등록한 뒤, 담당자가 결과를 검토하고 승인하도록 설정해 보세요. 초기 설정 방법은 Sharkly 문서에서 확인할 수 있습니다.
자주 묻는 질문 (FAQ)
기존 마스코트로도 ChatGPT 애니메이션을 제작할 수 있나요?
OpenAI에서도 이를 공식 활용 사례로 안내하고 있으며, 기존 마스코트를 참조 이미지로 첨부하면 됩니다. 본문 테스트에서는 텍스트 설명만 사용했기 때문에 프레임 간 일관성은 유지되었으나 원래 디자인과 완벽하게 일치하지는 않았습니다.
마스코트 GIF에는 몇 개의 프레임이 적당한가요?
테스트 결과 6프레임은 손을 한 번 흔드는 동작에 적합했습니다. 더 긴 동작을 구현하려면 프레임 수를 늘려야 하며, API에서는 2개부터 64개까지 지원합니다.
스프라이트 시트 프롬프트를 입력하면 GIF 파일이 생성되나요?
이번 테스트에서는 PNG 스프라이트 시트가 반환되었으며, GIF 조립은 직접 진행했습니다. 단순 루프 GIF 생성을 요청했던 이전 테스트에서는 완성된 GIF 파일이 바로 생성되었습니다.
GIF가 덜컥거리며 흔들리는 이유는 무엇인가요?
패널 크기가 완벽히 균등하지 않기 때문일 가능성이 큽니다. 당사 테스트에서도 열 간에 11.5픽셀의 오차가 있었습니다. 각 열마다 고유한 오프셋 좌표를 측정하여 잘라내야 합니다.
API에서 참조 이미지를 기반으로 GIF를 바로 만들 수 있나요?
직접 생성은 불가능합니다. GIF 출력은 generation(생성) 엔드포인트에서만 지원되며, 참조 이미지를 사용하는 edit(편집) 엔드포인트에서는 GIF 출력을 지원하지 않습니다.
생성된 마스코트 GIF가 AI로 만들어졌다는 것을 다른 사람들이 알 수 있나요?
OpenAI는 생성된 이미지에 C2PA 메타데이터 및 SynthID 워터마크를 적용한다고 명시하고 있으므로, 순수 수작업으로 제작된 것처럼 보일 수는 없습니다.



