클로드 코드로 미덕 쇼츠 영상 자동화 해보기 2탄 (Feat 리모션)

소개

클로드 코드로 미덕 쇼츠 영상 자동화 해보기 2탄 (Feat 리모션)

진행 방법

Tip: 사용한 도구는 안티그래비티와 클로드코드입니다.

Tip: 스킬을 좀 더 쉽게 쓰기 위해서 파이썬 gui 프로그램을 만들어보았습니다.

확실히 gui 화 시키니까 개발이 좀 더 쉬웠습니다.

한국어 텍스트가 있는 녹색 화면

중국 컴퓨터 화면의 스크린샷

Tip: ffmpeg를 쓰다가 좀 더 다양한 애니메이션 효과를 위해 리모션을 도입해보았습니다.

리모션을 도입하면 애니메이션이 좀 더 생깁니다.

결과와 배운 점

지속성을 확보하기 위해서 유튜브 채널을 개설하였습니다.

https://www.youtube.com/@%EB%AF%B8%EB%8D%95%EC%9D%B4%EC%95%BC%EA%B8%B0

채널을 위한 로고, 키워드, 설명 등은 AI 에게 묻고 만들었습니다.

미덕 이야기를 들려주는 유튜브 채널을 만들었어



채널명은 '미덕이야기'야 



이 채널을 위한 채널 로고 이미지 프롬프트를 주고

채널 설명

채널 키워드를 제공해줘 



바이럴이 잘 되도록 말이야 
# 채널 설명을 좀 더 길게 만들어주고 마크다운 없이 줘
# 채널 키워드를 #대신에 ', ' 로 구분하여 50개 이상 줘
키워드를 동일한 분량으로 추가로 더 줘
  • 제목에 대한 자동화를 실행하였습니다. 10자 내외 단일 선택인데, 추후에는 사용자가 선택할 수 있는 옵션을 제공하고자 합니다.

    업로드용: 용기의 한 발짝 | 무서워도 괜찮아, 작은 한 걸음이 용기예요

    영상 자막용: 용기의 한 발짝

    컴퓨터 화면에 한국어 텍스트
  • 메타 데이터에 대한 자동화를 해보았습니다. 업로드할 때 기본 데이터로 사용할 예정입니다.

    [YOUTUBE_TITLE]
    용기의 한 발짝 | 무서워도 괜찮아, 작은 한 걸음이 용기예요
    
    [DESCRIPTION]
    무서운 어두운 창고 앞에서 떨고 있던 민준이가 친구 소은이를 위해 용기를 냅니다. 심장이 쿵쾅거리고 손이 떨렸지만, 민준이는 깊게 숨을 들이쉬고 한 발짝 내딛었어요. 용기란 무섭지 않은 게 아니라, 무서워도 앞으로 나아가는 것임을 자연스럽게 배울 수 있는 동화입니다. 아이들이 일상 속에서 작은 용기를 실천할 수 있도록 돕는 미덕 동화 쇼츠예요. 구독과 좋아요로 더 많은 미덕 이야기를 만나보세요!
    
    [SIMILAR_TITLES]
    용기를 내봐요 | 무서워도 한 걸음씩 나아가는 아이
    겁쟁이가 달라졌어요 | 어둠을 이겨낸 민준이 이야기
    진짜 용기란 뭘까요? | 용감한 아이의 작은 도전
    
    [FIXED_COMMENT]
    여러분은 무서운데도 용기를 낸 적 있나요? 💪 민준이처럼 작은 한 발짝이 진짜 용기의 시작이에요! 무서운 마음이 드는 게 당연해요. 그럼에도 내딛는 그 한 걸음이 바로 용기랍니다 🌟 이 이야기가 좋았다면 좋아요와 구독으로 응원해 주세요! 여러분의 용기 이야기도 댓글로 나눠주세요 😊
  • 이미지 자동화를 하였고 한글, 영문 등이 찍혀나오는 현상이 있어서 그것에 대한 배제가 담긴 시스템 프롬프트를 설계하였습니다.

    이미지 일관성 확보를 위해 프롬프트를 잘 설계하였습니다.

    a cheerful 7-year-old boy named Minjun, short black hair with a small cowlick, light skin, rosy cheeks, wearing a sky-blue striped t-shirt and brown shorts, cute chibi-style illustration, warm pastel colors, soft outlines, A glowing golden question mark hovering in a warm spotlight on a wooden floor, sparkling magical dust around it, no character, storybook opening feel, cute chibi-style illustration, warm pastel colors, soft rounded outlines, storybook art, child-friendly
    a cheerful 7-year-old boy named Minjun, short black hair with a small cowlick, light skin, rosy cheeks, wearing a sky-blue striped t-shirt and brown shorts, sitting happily at a classroom desk drawing with crayons, colorful artwork spread on the desk, bright classroom background, cute chibi-style illustration, warm pastel colors, soft rounded outlines, storybook art, child-friendly
    a cheerful 7-year-old boy named Minjun, short black hair with a small cowlick, light skin, rosy cheeks, wearing a sky-blue striped t-shirt and brown shorts, puffing his chest out proudly while smiling classmates clap around him, bright classroom, cute chibi-style illustration, warm pastel colors, soft rounded outlines, storybook art, child-friendly
  • 자막에 대한 자동화를 해보았습니다. TTS 타이밍에 대해서 철저함을 확보하고자 여러번 명령을 하였습니다. 처음엔 잘 못했는데 어느정도 타이밍을 맞추게 되었고 앞으로 더 정교하게 만들예정입니다. 이것을 위해 SRT (SPEECH TO TEXT)를 위한 다양한 모듈 테스트를 해보며 성능최적화 작업을 하였습니다.

  • 자막 위치를 잡기 위해서는 일종의 템플릿 예시를 만들어야 했습니다. 템플릿 예시 역시 상의하면서 제작이 되었습니다.

    개선 과정1

    한국어 페이지 스크린샷

개선과정2

한국사이트 스크린샷

<터미널 실행 관련>

  • gui 에서 터미널 명령을 실행하는게 쉬운 것 같아 보이지는 않았습니다.

  • 해당 기능을 구현하는데 꽤 시간이 많이 걸려서 어떤식으로 프롬프트를 해야 시행착오를 줄일 수 있을지 좀 더 연구해봐야 합니다.

  • 왜냐하면 앞으로도 이러한 gui를 통해 클로드 코드를 실행하는 경우가 있을듯 해서요

<로그 강화 측면>

# 로그를 강화하니까 앱의 개발이 좀 더 쉽게 되었습니다. 로그 기능을 적극 강화하실 것을 권장드립니다. 어디에서 오류가 나는지를 꼼꼼하게 체크한다면 업데이트 대상이 확실히 보이게 됩니다.

<클로드 코드의 강점>

  • 클로드 코드가 있어서, 클로드는 APIKEY 도입없이 바로 할 수 있어서 좋았습니다. 반면 제미나이는 그런게 없으니 별도로 APIKEY를 연동하는 것이 필요했습니다.

<추후 방향성>

  • 폰트 연구

우선 좀 더 폰트를 다양화시키고 대본의 질을 높이는 것을 연구할 예정입니다.

  • 타겟팅 연구

다양한 학년급 1~2, 3~4, 5~6, 중등, 고등, 일반성인을 대상으로 했을 때 어떤

대본으로 만들어야 할지 고민중에 있습니다만 우선 초등에 초점을 맞추고자 합니다.

  • 리모션에 대한 연구, 랜덤 방식을 추구할 것인지? 최적화 값을 AI에게 어떻게 고르라고 명령할지 고민중입니다.

  • 업로드 자동화

추후에는 유튜브 업로드까지 자동화해보려고 합니다.

  • 여전히 이미지 일관성이 확보가 안된 부분이 있어서 정교화 예정입니다. 예를 들면 베이스 이미지 프롬프트를 모든 씬마다 잘 첨부되도록 하는 일입니다.

  • Fal.ai 등을 통해 각 씬을 영상화 해보거나, 수동으로 그록 확장 프로그램으로 자동화 해서 해볼 생각도 있습니다

  • 캐릭터 고정 방식도 생각해보고 있는데 그건 좀 심화단계라 고심중입니다.

  • 썸네일 자동화에 대한 고민을 하고 있습니다

  • suno ai를 활용하여 잔잔한 브금을 까는 것도 고민중입니다.

  • 로그를 강화하는 경우 몇분이나 걸리는지를 알 수 있기에 어디에서 시간을 단축해야 할지를 알 수 있었습니다. 1분 내외 쇼츠 하나 제작에 10분 정도 걸리는 걸 확인했습니다.

    추후 긴 롱폼으로 생각해보면 20분 영상 제작에 산술적으로 200분 걸린다는 소리가 될텐데 이를 빠르게 할 수 있는 방법을 연구해볼 예정입니다.

[21:43:20]   완료!  출력 폴더: c:\Users\gusrl\260325gpters\output\너그러움_20260401
[21:43:20] ================================================
  영상 처리 완료  [+562.8s]
================================================
총 경과 시간: 562.8초 (9.4분)
로그 저장: run_log_214320.txt
==================================================
완료!  (562.8초 / 9.4분)
  • 캡컷 프로젝트 자동화까지 시도해보았는데 아직은 경로 문제로 미구현입니다. 추후 패치해볼 예정입니다.

  • 렌더링 시 오류가 나오는 것을 발견했습니다. 이러한 자잘한 버그는 앞으로 계속해서 수정할 예정입니다.

  • 하다보니 사용량 이슈로 멈춰서 다른 계정 추가 결재 예정입니다.

    [22:26:55]   자막 분석 중: 씬 13/14
    [22:26:58]   자막 분석 중: 씬 14/14
    [22:27:01]   완료: c:\Users\gusrl\260325gpters\output\행복_20260401\subtitles\virtue_shorts_행복.ass
    [22:27:01] [4/5] 영상 합성 (Remotion - zoom/pan/fade 애니메이션)...
    [22:27:01]   제목: 행복의 비밀
    [22:27:01]   에셋 HTTP 서버: http://127.0.0.1:51982/
    [22:27:02]   Remotion 렌더링 시작 (concurrency=4)...
    [오류] Remotion 렌더링 실패:
    13)
        at interpolate (http://localhost:3000/bundle.js:5538:3)
        at SubtitleDisplay (http://localhost:3000/bundle.js:91:47)
        at Nh (http://localhost:3000/bundle.js:691:137)
        at cj (http://localhost:3000/bundle.js:727:258)
        at Vk (http://localhost:3000/bundle.js:822:88)
        at Uk (http://localhost:3000/bundle.js:810:389)
        at Tk (http://localhost:3000/bundle.js:810:320)
        at Ik (http://localhost:3000/bundle.js:810:180)
        at Nk (http://localhost:3000/bundle.js:801:88)
     Error  inputRange must be strictly monotonically increasing but got [2.691,2.771,2.771,2.851]
    
    Traceback (most recent call last):
      File "c:\Users\gusrl\260325gpters\virtue_shorts_app\main_gui.py", line 325, in run
        pl_mod.run(
        ~~~~~~~~~~^
            virtue        = virtue,
            ^^^^^^^^^^^^^^^^^^^^^^^
        ...<9 lines>...
            video_format  = cfg.get("video_format", "shorts"),
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        )
        ^
      File "c:\Users\gusrl\260325gpters\virtue_shorts_app\modules\pipeline.py", line 118, in run
        video_path = create_remotion_video(
            image_paths=image_paths,
        ...<10 lines>...
            canvas_h=canvas_h,
        )
      File "c:\Users\gusrl\260325gpters\virtue_shorts_app\modules\remotion_renderer.py", line 281, in create_remotion_video
        render_video(manifest, output_path, concurrency=concurrency)
        ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "c:\Users\gusrl\260325gpters\virtue_shorts_app\modules\remotion_renderer.py", line 233, in render_video
        raise RuntimeError(f"Remotion 렌더링 실패:\n{r.stderr[-800:]}")
    RuntimeError: Remotion 렌더링 실패:
    13)
        at interpolate (http://localhost:3000/bundle.js:5538:3)
        at SubtitleDisplay (http://localhost:3000/bundle.js:91:47)
        at Nh (http://localhost:3000/bundle.js:691:137)
        at cj (http://localhost:3000/bundle.js:727:258)
        at Vk (http://localhost:3000/bundle.js:822:88)
        at Uk (http://localhost:3000/bundle.js:810:389)
        at Tk (http://localhost:3000/bundle.js:810:320)
        at Ik (http://localhost:3000/bundle.js:810:180)
        at Nk (http://localhost:3000/bundle.js:801:88)
     Error  inputRange must be strictly monotonically increasing but got [2.691,2.771,2.771,2.851]
    
    
    한국어 문자 메시지 스크린샷

  • 오류를 해결하다보니 핵심 오류를 찾고 재활용에 대한 아이디어가 나왔습니다.

  • 한국어로 된 문자 메시지의 스크린샷
한국어로 된 문자 메시지의 스크린샷
  • 추후에는 깃을 통해 최신버전을 관리해서 어느 컴퓨터에서든 최신 버전으로 쓰고자 합니다.

노란 드레스를 입은 소녀가 창문 앞에 서 있다

결국 코딩을 통해 성공했습니다.

도움 받은 글 (옵션)

21기 숏폼 스터디

1

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요