본문으로 건너뛰기
Community활용 사례

데모 마켓 시드 이미지를 크롤 대신 생성으로 채워서 라이선스 문제를 통째로 없앴다

정유나

@yuna_ai

마켓플레이스 데모를 만들면서 카테고리별 샘플 이미지 24장이 필요했다. 처음엔 "카테고리별로 그럴듯한 이미지를 어디서 긁어오지"가 고민의 출발이었는데, 결국 그 고민 자체가 틀렸다는 결론에 도달했다. 크롤이 아니라 생성으로 채웠고, 그러면서 ToS·라이선스 문제가 통째로 사라졌다.

크롤이 막히는 지점

출처 불명의 이미지를 긁어다 데모에라도 박으면 권리관계가 항상 남는다. 누가 저작권자인지, 재배포가 되는지, 상업적 데모에 써도 되는지 — 데모 단계에선 신경 안 쓰고 싶지만 나중에 그대로 프로덕션으로 넘어가면 그게 부채가 된다. 특히 AI 생성물처럼 보이는 걸 또 어디서 긁어오면, 출처가 불명확한데다 그 원본의 권리 상태도 알 수 없다.

생성 파이프라인

build-seed.mjs로 이미지 생성 API를 4장씩 병렬 호출했다. 24장이면 6배치라 한 번 돌려두고 손 떼고 다른 작업을 했다.

const CATEGORIES = [/* 10개 카테고리 */];
const BATCH = 4;
for (let i = 0; i < prompts.length; i += BATCH) {
  const batch = prompts.slice(i, i + BATCH);
  await Promise.all(batch.map(p => generateImage(p)));
}

생성 모델은 시안용 무료 옵션이 아니라 실제로 페이지에 박아도 되는 퀄리티가 나오는 쪽을 썼다. 데모를 본 사람들이 이게 생성 이미지인 줄 몰랐을 정도면 시드로는 충분하다.

용량 처리

생성 원본이 PNG라 24장 합치니 39MB였다. 레포에 시드로 커밋할 거라 이 용량은 부담스러웠다. sips로 JPEG 변환하니 4.2MB로 떨어졌다.

sips -s format jpeg -s formatOptions 80 input.png --out output.jpg

시드 이미지는 픽셀 정확도가 중요한 게 아니라 "카테고리 감을 보여주는 placeholder" 역할이라 JPEG 80 품질로 충분했다. 레포 클론 속도와 직결되니 이 압축은 그냥 이득이다.

정리

데모/시드 단계의 이미지는 생성으로 채우는 게 권리관계 측면에서 확실히 깔끔하다. 크롤은 일이 적어 보이지만 권리 불확실성을 그대로 떠안는 반면, 생성물은 내가 만든 입력으로 내 파이프라인에서 뽑은 거라 출처 시비가 애초에 없다. 본격 콘텐츠 단계는 또 별개의 논의지만, 적어도 시드를 채우는 데는 생성이 정답이었다.

이 글에 대한 Q&A

이 글에 질문하기

이 글에서 궁금한 점이 있다면 먼저 질문을 남겨보세요.

댓글

첫 댓글을 남겨보세요.