튜토리얼 영상을 만드는 일은, 보통 생각보다 더 번거롭습니다.
먼저 원문을 이해하고, 스크립트를 정리한 뒤, 챕터를 나누고, 내레이션을 작성하고, 화면 프롬프트를 준비해야 합니다. 이미지와 음성이 생성된 후에도 계속해서 영상 클립을 제작해야 하며, 마지막으로 화면과 소리를 함께 합성해야 합니다.
그중 어느 한 단계에서 문제가 생기면, 이후 작업도 다시 해야 할 수 있습니다. 특히 튜토리얼 영상은 내용이 정확해야 할 뿐만 아니라, 화면과 내레이션도 서로 맞아야 해서 확실히 시간이 많이 듭니다.
이번에는 다른 방식을 사용했습니다. Ace Data Cloud Studio를 사용해 Agent가 작업을 나누도록 한 뒤, 스크립트, 내레이션, 이미지, 영상 순서로 단계별로 완성했습니다.
전체 과정은 버튼 한 번 누르고 신경 쓰지 않는 것이 아니라, 각 단계를 완료할 때마다 한 번씩 확인하는 방식입니다. 적절하지 않은 부분이 있으면 다음 단계로 넘어가기 전에 조정합니다. 이렇게 하면 최종 결과를 제어할 수 있을 뿐만 아니라, 여러 플랫폼 사이를 계속 오가며 전환할 필요도 없습니다.
아래 삽화는 제가 이상적으로 생각하는 작업 상태입니다. 컴퓨터가 영상을 처리하고, 저는 옆에서 커피를 마시며 휴대폰을 보고, 가끔 돌아와 진행 상황을 확인합니다.

¶ 그렇다면, 구체적으로 어떻게 시작해야 할까요?
이번 작업은 매우 명확합니다. 기존 블로그 글 하나를 선택해 완전한 영상으로 각색하는 것입니다.
제가 선택한 것은 Ace Data Cloud의 튜토리얼 글입니다:
SERP API를 사용해 매일 SEO 키워드 순위 모니터링하기
이어서 다음을 엽니다:
Studio에 들어간 후에는 창작 작업에서 바로 시작할 수 있으며, 미리 복잡한 워크플로를 구축할 필요가 없습니다.

¶ 영상 제작 Skill을 Studio에 맡기기
저는 미리 영상 제작 Skill 하나를 준비했습니다.
이 Skill의 역할은 최종 영상을 직접 생성하는 것이 아니라, 먼저 원본 글을 영상 표현에 적합한 구조로 정리하는 것입니다. 여기에는 영상이 어떤 챕터로 나뉘어야 하는지, 각 챕터에서 무엇을 말해야 하는지, 내레이션을 어떻게 작성할지, 화면에 무엇을 보여줄지, 그리고 이미지와 영상에 각각 어떤 프롬프트를 사용할지가 포함됩니다.
사용할 때는 Skill 파일을 Studio의 대화 상자에 드래그 앤 드롭한 다음, Agent에게 이번에 처리할 글의 주소와 구체적인 요구사항을 알려줍니다.
제가 제시한 요구사항의 대략적인 내용은 다음과 같습니다:
지정된 블로그 글을 읽고, 이를 영상으로 각색하세요. 먼저 각 챕터의 제목, 설명, 내레이션, 그리고 이미지와 영상의 생성 프롬프트를 포함한 전체 챕터를 출력해 주세요. 전체 작업은 단계별로 완료하고, 모든 내용을 한 번에 생성하지 마세요.

¶ 먼저 영상 개요를 정리하고, 화면 제작을 서두르지 않기
작업을 제출하면 Agent는 먼저 글을 읽고, 글의 내용을 바탕으로 영상 챕터를 정리합니다.
생성된 내용은 비교적 완전하며, 각 챕터에는 제목, 내용 설명, 내레이션, 그리고 이에 대응하는 이미지와 영상 Prompt가 포함됩니다. 이렇게 하면 이후 정적인 화면을 생성하든 영상 클립을 제작하든, 비교적 명확한 실행 목록을 갖게 됩니다.
예를 들어 원문에서 SERP API를 소개하는 부분은 별도의 챕터로 정리되었으며, 화면에 어떤 내용을 보여줘야 하는지도 보완되었습니다.

Agent는 각 챕터의 길이도 추정합니다. 처음 생성했을 때 이 영상은 여덟 개 챕터로 나뉘었고, 예상 총 길이는 약 2분 30초였습니다.

여기서는 잠시 멈추고, 내용을 꼼꼼히 확인한 다음 바로 이미지 생성을 시작하지 않는 것을 권장합니다.
이 단계의 수정 비용이 가장 낮기 때문입니다. 이미지, 오디오, 영상이 모두 생성된 뒤에 내레이션을 다시 수정하면, 앞서 만든 소재도 함께 다시 만들어야 할 가능성이 큽니다.
¶ 내레이션을 줄이고, 영상의 리듬 제어하기
확인해 보니 첫 번째 버전의 내레이션이 약간 길었습니다.
튜토리얼 영상은 정보가 많을수록 좋은 것이 아닙니다. 내레이션이 너무 길면 시청자가 듣기에 피곤하고, 영상의 리듬도 쉽게 늘어질 수 있습니다. 더 번거로운 점은 화면이 더 긴 음성에 맞춰야 하므로, 이후 영상을 생성할 때도 난이도가 높아진다는 것입니다.
그래서 저는 Agent에게 직접 내레이션을 줄이도록 요청했고, 핵심 정보는 유지하되 반복 설명과 다소 문어적인 문장은 제거하도록 했습니다.
조정 후 각 챕터의 내레이션은 약 8~9초로 제어되었고, 전체 리듬도 눈에 띄게 더 경쾌해졌습니다.

내레이션이 짧아진 후에는 텍스트만 수정할 수 없으며, 이미지와 영상의 Prompt도 함께 조정해야 합니다. 그렇지 않으면 이런 상황이 쉽게 발생합니다. 내레이션은 이미 다음 핵심 내용으로 넘어갔는데, 화면은 아직 이전 내용에 머물러 있는 경우입니다.
제가 처리한 방식은 Agent가 새로운 내레이션에 따라 화면 설명을 다시 정리하도록 하여, 각 챕터의 시각적 내용이 여전히 내레이션과 일치하도록 하는 것입니다.
¶ 통일된 배경 이미지를 설정해 화면 스타일 유지하기
스크립트가 확인된 후에는 이미지와 내레이션 생성을 시작할 수 있습니다.
정식 생성 전에 저는 Agent에게 배경 이미지 한 장, 즉 시각적 참고 이미지를 지정했습니다.
이는 필수는 아니며, 텍스트 설명만 사용할 수도 있습니다. 하지만 영상 전체에 여러 챕터가 포함된다면, 배경 이미지 한 장을 준비하는 것을 여전히 권장합니다. 이는 모델이 비교적 통일된 색감, 구도, 브랜드 스타일을 유지하도록 도와주며, 앞뒤 여러 장면이 완전히 다른 영상에서 온 것처럼 보이는 것을 방지할 수 있습니다.
앞서 내레이션 길이를 수정했기 때문에, 저는 Agent에게 이에 대응하는 화면 Prompt를 다시 생성하도록 요청했고, 더 이상 이전 버전을 계속 사용하지 않았습니다.

¶ 적합한 내레이션 음색 선택하기
화면 요구사항이 결정된 후, Studio는 작업 필요에 따라 음성 도구를 호출합니다.
음색에는 절대적인 좋고 나쁨이 없으며, 주로 영상 유형에 따라 달라집니다. 튜토리얼 영상은 일반적으로 너무 과장된 감정이 필요하지 않으며, 목소리가 또렷하고 안정적이며, 말하는 속도가 너무 빠르지 않으면 됩니다. 자동으로 선택된 음색이 적합하지 않다면 Agent에게 직접 교체를 요청할 수도 있습니다. 먼저 짧은 구간을 생성해 들어보고, 음색, 말하는 속도 및 멈춤에 모두 문제가 없는지 확인한 후 나머지 챕터를 일괄 처리하는 것이 좋습니다.

이번 이미지에는 GPT Image 2를 사용했고, 더빙에는 Fish Audio를 사용했습니다. 이러한 모델은 모두 Studio에서 직접 호출할 수 있으며, 해당 커넥터만 미리 설정해 두면 별도로 인터페이스 코드를 작성할 필요가 없습니다.
이후 비디오를 생성할 때도 마찬가지로 Agent는 이미 연결된 비디오 모델을 계속 호출할 수 있습니다. 이미지 생성에는 어느 정도 시간이 필요하므로, 이 단계에서는 잠시 기다리면 됩니다.
¶ 먼저 샘플 이미지를 보고 방향을 확인한 후 일괄 생성
처음부터 모든 이미지를 생성하지 않고, 먼저 Agent에게 샘플 이미지 두 장을 만들도록 했습니다.
이렇게 하면 한 단계가 더 추가된 것처럼 보이지만, 실제로는 시간을 더 절약할 수 있습니다. 샘플 이미지를 통해 화면 비율, 전체 스타일, 브랜드 요소 및 구도를 미리 확인할 수 있고, 화면이 이후 비디오로 제작하기에 적합한지도 판단할 수 있습니다.
샘플 이미지가 적합하지 않으면 Prompt 또는 배경 이미지만 조정하면 되므로, 이후 모든 챕터의 생성 비용을 낭비하지 않아도 됩니다.

샘플 이미지 두 장에 뚜렷한 문제가 없다는 것을 확인한 후, Agent에게 나머지 콘텐츠를 완성하도록 했습니다.
마지막으로 여덟 개 챕터에 필요한 이미지와 오디오 클립이 모두 생성되었습니다. 다음으로 해야 할 일은 화면과 내레이션을 하나씩 확인하는 것입니다.

확인할 때는 개별 이미지가 보기 좋은지만 볼 것이 아니라, 이미지와 내레이션을 함께 놓고 판단해야 합니다. 이미지가 표현하는 내용은 내레이션과 일치해야 하며, 같은 인물이나 인터페이스가 갑자기 뚜렷하게 바뀌어서는 안 됩니다. 내레이션에서 언급되는 중요한 정보는 화면에도 반영되는 것이 좋고, 인접한 챕터의 스타일과 색조도 가능한 한 통일되어야 합니다.
¶ 비디오 생성 방식을 미리 규정하기
이미지와 오디오가 준비된 후에는 비디오 클립 제작을 시작할 수 있습니다.
하지만 시행착오를 줄이기 위해 Agent가 바로 자유롭게 작업하도록 하지 않고, 먼저 각 비디오가 어느 챕터에 해당하는지, 어떤 이미지를 시작 화면으로 사용할지, 비디오 길이를 내레이션에 어떻게 맞출지, 그리고 카메라 움직임의 폭과 스타일 일관성 등을 포함한 몇 가지 규칙을 보완했습니다.
튜토리얼 화면은 선명하게 유지해야 하며, 관련 없는 요소를 추가하거나 화면 속 브랜드, 인터페이스 및 주체를 임의로 변경해서는 안 됩니다. 인접한 비디오의 스타일은 가능한 한 일관되게 유지하고, 정식으로 일괄 생성하기 전에 먼저 하나의 클립을 만들어 효과를 확인해야 합니다.

이러한 제한은 많을수록 좋은 것은 아니지만, 핵심 요구 사항은 미리 명확하게 설명하는 것이 좋습니다. 아무런 제약을 두지 않으면 각 비디오를 따로 볼 때는 모두 괜찮아 보일 수 있지만, 이어 붙이면 스타일이 들쭉날쭉해지거나 카메라 움직임의 차이가 너무 크고 인물이 일관되지 않는 문제가 생기기 쉽습니다.
¶ 먼저 비디오 클립 하나 만들기
앞에서 이미지를 생성한 것과 마찬가지로, 이번에도 “먼저 샘플 영상을 만드는” 방식을 사용했습니다.
먼저 첫 번째 클립을 생성하여 동적 효과, 카메라 움직임, 화면 안정성 및 전체 스타일을 확인합니다. 첫 번째 클립에 문제가 있으면 바로 조정할 수 있으므로, 모든 클립이 완료될 때까지 기다릴 필요가 없습니다.

첫 번째 클립이 완료된 후 한 번 확인해 보니, 전체적인 효과는 괜찮았고 뚜렷한 화면 흔들림도 없었으며 카메라 움직임도 비교적 자연스러웠습니다.
방향에 문제가 없음을 확인한 후, Agent에게 나머지 비디오 클립을 계속 생성하도록 했습니다.

¶ FFmpeg를 사용해 로컬에서 비디오와 내레이션 합성하기
모든 비디오 클립이 생성된 후에는 마지막 단계가 남았습니다. 비디오와 해당 내레이션을 함께 합성하는 것입니다.
Studio는 앞선 창작 작업을 완료하는 데 도움을 줄 수 있지만, 저는 마지막 합성은 로컬에서 실행하는 것을 더 선호합니다. 이렇게 하면 파일을 다운로드하고 관리하기가 더 편리하며, 각 오디오와 비디오 구간도 명확하게 제어할 수 있습니다. 스크립트를 수정한 후 반복 실행할 수 있고, 문제가 발생했을 때도 원인을 더 쉽게 찾을 수 있습니다.
제가 사용하는 방식은 Agent에게 Bash 스크립트를 생성하게 한 다음, 로컬에 설치된 FFmpeg로 실행하는 것입니다.
#!/usr/bin/env bash
set -euo pipefail
videos=(
"https://platform2.cdn.acedata.cloud/grok/0d91b61a-5c15-412d-9eb3-ed3ba3c2b289.mp4"
"https://platform2.cdn.acedata.cloud/grok/24c98593-2d2c-41da-82ff-85101ef65564.mp4"
)
voices=(
"https://platform2.cdn.acedata.cloud/fish/eef753c1-4b5b-400f-8fce-acedd2621ce9.mp3"
"https://platform2.cdn.acedata.cloud/fish/52dd45d8-1e6d-4a67-8f02-0473c56d960f.mp3"
)
mkdir -p output
for i in "${!videos[@]}"; do
n=$(printf "%02d" $((i + 1)))
ffmpeg -y \
-i "${videos[$i]}" \
-i "${voices[$i]}" \
-map 0:v:0 \
-map 1:a:0 \
-c:v copy \
-c:a aac \
-b:a 192k \
-ar 48000 \
-ac 2 \
-af "apad" \
-shortest \
-movflags +faststart \
"output/scene-${n}-narrated.mp4"
done
이 스크립트는 배열의 순서에 따라 각 비디오 클립과 해당 내레이션을 합성합니다.
-map 0:v:0은 첫 번째 입력의 비디오 트랙을 선택하는 데 사용되며, -map 1:a:0은 두 번째 입력의 오디오 트랙을 선택합니다. -c:v copy는 비디오를 재인코딩하지 않고 직접 복사하며, -c:a aac는 내레이션을 호환성이 더 좋은 AAC 오디오로 변환합니다.
-af "apad"는 오디오 길이가 부족할 때 무음을 추가하며, -shortest는 더 짧은 오디오 또는 비디오 트랙이 끝날 때 출력을 중지하게 합니다. -movflags +faststart는 MP4가 네트워크 재생에 더 적합하도록 합니다.
정식으로 사용할 때는 videos 및 voices 배열을 완성하고, 비디오와 오디오의 순서가 일대일로 대응되도록 하면 됩니다.
¶ 로컬 Codex에 스크립트 실행 맡기기
스크립트를 생성한 후, 저는 온라인 Agent에게 계속 다운로드와 합성을 처리하게 하지 않고, 바로 로컬로 복사해 Codex에 실행을 맡겼습니다.
로컬에 이미 FFmpeg가 설치되어 있는지 확인하고, 프로젝트 폴더를 생성하며, Bash 스크립트를 저장하고, 소스를 다운로드한 뒤 합성 명령을 실행하도록 할 수 있습니다. 처리가 완료된 후에는 출력 파일이 완전한지 다시 확인하고, 최종 클립을 순서대로 정리합니다.
이렇게 하는 장점은 매우 직접적입니다. 다운로드와 합성이 모두 로컬에서 완료되므로 상당한 Token을 절약할 수 있고, 생성된 소스도 컴퓨터에 바로 저장되어 이후 계속 편집하거나 자막을 추가하거나 백업하기에도 비교적 편리합니다.

¶ 최종 결과
모든 클립의 합성이 완료된 후, 전체적인 결과는 제가 예상했던 것보다 더 좋았습니다.
영상의 챕터 구조가 비교적 명확하고, 화면 스타일도 기본적인 일관성을 유지했습니다. 내레이션은 짧게 줄인 후 처음만큼 늘어지지 않았고, 튜토리얼 내용도 더 밀도 있게 들렸습니다.
더 중요한 점은, 전체 과정이 작업을 한 번에 모델에게 맡긴 뒤 운에 맡기는 방식이 아니라, 여러 단계로 나누어 차근차근 확인하는 방식이었다는 것입니다.
스크립트가 적절하지 않으면 먼저 스크립트를 수정하고, 내레이션이 너무 길면 먼저 내레이션을 줄이고, 이미지 스타일이 맞지 않으면 먼저 샘플 이미지를 조정하고, 영상 카메라 워크에 문제가 있으면 먼저 첫 번째 클립을 수정합니다. 이렇게 계속 확인하다 보니, 마지막에 다시 작업해야 하는 부분은 오히려 더 적었습니다.

¶ 마지막으로 이번 경험에 대해 이야기해 보기
이번에 작업하면서, 가장 중요한 한 가지는 처음부터 모든 내용을 전부 생성하지 않는 것이라고 느꼈습니다. 이미지든, 더빙이든, 영상이든 먼저 한두 개의 샘플을 만들어 효과를 확인하고, 문제가 발견되면 바로 조정할 수 있어야 모든 작업이 끝난 뒤 대규모로 다시 작업하는 일을 피할 수 있습니다.
전체 작업도 한 번에 끝내려고 생각하지 않아야 합니다. 먼저 스크립트를 정리하고, তারপর 내레이션을 수정한 뒤, 이미지, 오디오, 영상을 준비합니다. 각 단계를 완료할 때마다 한 번씩 확인하면, 겉으로는 몇 단계가 더 늘어난 것처럼 보이지만 실제로는 상당한 시간을 절약할 수 있습니다.
마지막 영상 합성도 계속 Studio에서 완료할 필요는 없습니다. 창작 부분은 Studio에 맡기고, 로컬 다운로드와 합성은 FFmpeg에 맡겨 각자 잘하는 일을 하도록 하면, 작업하기도 더 수월하고 불필요한 소모도 줄일 수 있습니다.
결국 Ace Data Cloud Studio의 가장 편리한 점은 버튼 한 번으로 완성 영상을 바로 생성해 주는 것이 아니라, 원래 흩어져 있던 창작 과정을 연결해 준다는 데 있습니다. 우리는 핵심 지점에서 확인하고 조정하기만 하면 되고, 나머지 반복 작업은 Agent에게 천천히 맡기면 됩니다.

