子どもが絵本を見るとき、よく一枚の絵を長いあいだ見つめています。木の葉は動いているのかな?小さなキツネが手に持っている瓶には何が入っているのかな?あのホタルはそのあと家を見つけられたのかな?
絵の中の耳をそっと震わせ、月明かりをゆっくり瓶の中へ落とし、そこにやさしいナレーションを添えたら、物語にはもう一つの語り方が生まれます。
このようなアニメーション絵本は、寝る前のお話や授業内での短い物語の発表に使えますし、子ども向けアニメーションの絵コンテを試作するのにも向いています。複雑な動きが必ずしも必要なわけではありません。画面が心地よく、キャラクターに一貫性があり、子どもが見ながら理解できれば、それだけでもよいスタートです。
今回は、Ace Data Cloud Studio と GPT Image 2.6 を使って、小さな物語——『小さなキツネ、月明かりを借りる』——を作ります。まず物語を描き、それから絵を動かし、最後に音を付けて、再生できる動画に仕上げます。

¶ 物語は長くなくていい、まずはきちんと伝える
月明かりのある夜、小さなキツネは道に迷った小さなホタルに出会いました。森はあまりに暗く、小さなホタルは家へ帰る道が見つかりません。小さなキツネはガラス瓶を掲げ、月に少しだけ光を借りて、森を抜け、仲間のもとへ帰るのに付き添いました。去り際に、小さなキツネは手を振り、月に顔を上げてお礼を言うことも忘れませんでした。
この物語は短いですが、出会いがあり、助け合いがあり、別れもあります。四コマ絵本にすれば、ちょうど出来事を完整に伝えられます。
Ace Data Cloud Studio を開き、対話欄に作りたい内容を書きます。物語そのものだけでなく、絵柄、キャラクター、小道具についてもはっきり伝えます。

次のように説明できます:
GPT Image 2.6 を使って、『小さなキツネ、月明かりを借りる』の四コマ物語絵本を制作してください。読む順番は左上、右上、左下、右下で、それぞれ出会い、光を借りる、同行、帰宅を表現してください。やさしい手描きの水彩風で、紙の質感を残してください。小さなキツネの見た目、マフラーの色、ガラス瓶は、四枚の絵で一貫させてください。森はやわらかな濃紺と灰緑色を基調にし、月明かりと瓶の中の光は温かみのある金色で表現し、まぶしくしないでください。画面には文字、吹き出し、ウォーターマークを入れないでください。
ここにはとても実用的な小さな習慣があります。まずキャラクターと絵柄を決めてから、各コマで何が起こるかを配置することです。そうしないと、一枚ずつはよく見えても、並べると四つの異なる物語のようになってしまいます。
¶ まず四コマを作り、物語がスムーズか一度確認する
今回はデモなので、まずはシンプルな四コマを使います。絵が多くないため、確認しやすくなります。小さなキツネは同じ姿か、マフラーの色は変わっていないか、ガラス瓶の大きさが急に変わっていないか、四コマをつなげて意味が伝わるかを見ます。

より長い物語を作る場合は、「同行」を分けてもよいでしょう。たとえば、まず小川を渡り、次に木の根を通り過ぎ、最後に木の洞の中の小さな光を見つける、といった具合です。一枚の絵では一つの動作だけを語れば、その後のアニメーションや音声を作るときにも配置しやすくなります。
以下は、この記事のために新たに制作した四コマ絵本です。少し紙の白を残し、森の色と月明かりが透けて見えるようにします。すべての隅を描き埋める必要はありません。

次の一枚は、元のデモで使用した四コマ絵本です。この記事後半の GIF と合成スクリプトでは、このデモ素材の組を引き続き使用しているため、そのまま再現できます。上の新しい挿絵は物語を示すためのものであり、二組の素材を同じアニメーション原画のセットとして混ぜないでください。

¶ 絵を少し動かすだけで、十分です
原画の準備ができたら、引き続き Studio に四つの場面の動的 Prompt を書いてもらいます。
絵本の動きは多くなくて構いません。耳がわずかに動く、草の葉がそっと揺れる、瓶の中の光がゆっくり揺らぐといった小さな変化だけで、画面は生き生きとしてきます。むしろ、大きく走り回る動きや頻繁なカメラ切り替えは、もともとの静かな雰囲気を乱しやすくなります。
以下のバージョンのプロンプトは、「帰宅」の場面も補い、各原画と対応するアニメーションの関係も明確に記しています:
4コマ GIF の動的プロンプト
共通の制約:対応する原画の人物、マフラー、ガラス瓶、水彩紙の質感を引き継ぐ;カメラを固定し、小さな動きだけを加え、新しいキャラクターを追加せず、文字を表示しない。最初と最後ができるだけつながるようにする。各セグメントでは指定された1コマの原画だけを使用し、単一の画面へと拡張する。4コマ全体を一緒にアニメーションにしない。
出会い
左上のコマを選択し、単一の画面へと拡張する。キツネはそっと頭を下げ、耳をわずかに動かす;葉の上のホタルはゆっくり明滅し、周囲の草の葉は軽く揺れる。キツネの体の比率と背景の構図を安定させる。
光を借りる
右上のコマを選択し、単一の画面へと拡張する。キツネは瓶を掲げる姿勢を保ち、細く柔らかな月明かりがゆっくりガラス瓶へ流れ込み、瓶の中の金色の光がやさしく揺らめく。ガラス瓶の形を変えず、光は柔らかく、強い点滅を出さない。
同行
左下のコマを選択し、単一の画面へと拡張する。キツネは小さな歩幅で歩き、マフラーとしっぽを軽く揺らし、提げた瓶がわずかに揺れる;ホタルは瓶のそばに浮かび、背景は安定させる。動きの幅を小さくし、できるだけ自然なループにする。
帰宅
右下のコマを選択し、単一の画面へと拡張する。キツネはゆっくり手を振り、木の洞のそばにすでにいるホタルは小さな範囲で旋回し、地面の月明かりはやさしく揺らめき、草の葉がわずかに揺れる。木の洞、ガラス瓶、キツネの位置を基本的に安定させ、終わりは自然に始まりに近い姿勢へ戻る。
続いて、Studio で明確に次のように伝えます:GPT Image 2.6 の GIF アニメーション機能を使用し、この4つのセグメントをそれぞれ生成し、各自の GIF ファイルを返してください。
ここで作るのは短いループアニメーションであり、直接一本の長い動画を生成するものではありません。タスクが完了したら、動く4枚の画像を手に入れ、それらをナレーションと一緒に動画へつなぎます。
以下は、元のデモで生成された4つの GIF です。
出会い

光を借りる

同行

帰宅

どれかのセグメントでマフラー、瓶、またはキャラクターの外見が変わってしまった場合は、まずそのセグメントを修正し、素材一式をすべて作り直す必要はありません。画面が確認できてから、次に音声を作ります。
¶ ナレーションは寝る前のお話のように、詰め込みすぎない
画面が動き出したら、引き続き Studio でナレーションの要望を入力します。4つのナレーションを分けて生成すると、後でそれぞれの画面に対応させやすくなります。

次のように伝えられます:
『子ギツネ、月明かりを借りる』のために、4つの独立した中国語ナレーションを生成し、それぞれ音声リンクを返してください。子どもに寝る前のお話を聞かせるような、やさしく自然な女性の声を使用し、アナウンサー口調にも、わざとかわいらしくする感じにもならないようにしてください。4つのセグメントで同じ声色を保ち、話す速度はゆったりとし、文末に少し間を残してください。まずはナレーションのみを生成し、BGMは加えないでください。 出会い:月明かりの下、子ギツネは迷子の小さなホタルに出会いました。 光を借りる:子ギツネは月からやさしい光を一つ借りました。 同行:彼は月明かりを提げ、小さなホタルと一緒に森を抜けました。 帰宅:ホタルは仲間のもとへ戻り、子ギツネも月に感謝を伝えました。
4文で語り終えられるので、さらに長い説明を加える必要はありません。画面にも少し語らせると、聞いていてより心地よくなります。
ナレーションが生成されたら、できればセグメントごとに一度聞いてみましょう。読み間違いがないか、間の取り方が自然か、各セグメントが予定した時間内に話し終えられるかは、ここで確認します。以下のデモスクリプトでは、すでにある4つの音声リンクを使用しています;ナレーションを再生成した場合は、自分のリンクに差し替えることを忘れないでください。
¶ 最後に、ローカルで絵報を動画に合成する
素材がそろったら、Studio に FFmpeg 合成スクリプトを整理してもらい、それをローカルのコンピューターで実行します。
このスクリプトは横長の見開き絵報を作成します:左側は章のタイトルと物語の文章、右側では GIF を再生します。4ページを物語の順番につなぎ、それぞれのナレーションを付けます。
実行前に、FFmpeg をインストールし、FONT をコンピューター上に実際に存在する中国語フォントのパスへ変更する必要があります。FFmpeg は、スクリプトで使用する drawtext フィルター、H.264 エンコード、および AAC エンコードにも対応している必要があります。このスクリプトは Linux、macOS、または Windows の WSL 環境で Bash を使って実行するのに適しており、PowerShell に直接貼り付けないでください。
以下にはデモ素材のリンクを残し、出力ファイル名と書頁タイトルを『子ギツネ、月明かりを借りる』に統一しています。これはローカルで実行するためのスクリプトであり、本記事は読者に代わってローカルで実行したものではありません。
bash <<'BASH'
set -euo pipefail
# ===== ここだけ変更してください =====
GIF1="https://cdn.acedata2.cloud/gpt-image/d8d0bdffeb50f57fa700e3b0e973541e62361c1bce243f795c66b12c27a79ada.gif"
GIF2="https://cdn.acedata2.cloud/gpt-image/2361e32502087a5d14a1030ec26c94bade43ad7abddff7f51294ae70cffabd03.gif"
GIF3="https://cdn.acedata2.cloud/gpt-image/c9091c98a64df06baecc7be2e5bb4b7521deff9caa3a0f67bca46c5409b92133.gif"
GIF4="https://cdn.acedata2.cloud/gpt-image/e6f322e1dea87af933a00e6053166cd5ce2f9a7ab59358c37f7b79d3b0126885.gif"
# 中国語フォントのパス。実際の環境に応じて変更してください:
# Linux の例:/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc
# macOS の例:/System/Library/Fonts/PingFang.ttc
FONT="/usr/share/fonts/opentype/noto/NotoSerifCJK-Regular.ttc"
OUTPUT="子ぎつねが月明かりを借りる.mp4"
# ===== 4つの既存ナレーション =====
AUDIO1="https://platform2.cdn.acedata.cloud/fish/bb9140fc-c0c5-4397-995c-5a4eba813ef6.mp3"
AUDIO2="https://platform2.cdn.acedata.cloud/fish/ffe157ea-7fc4-422c-b153-e3bdb7db59ad.mp3"
AUDIO3="https://platform2.cdn.acedata.cloud/fish/2eb05b03-e833-48b9-9373-38b4c6a6456c.mp3"
AUDIO4="https://platform2.cdn.acedata.cloud/fish/429392ee-4012-4775-b1d9-fec7b88ddf1f.mp3"
command -v ffmpeg >/dev/null || {
echo "まず FFmpeg をインストールしてください"
exit 1
}
[[ -f "$FONT" ]] || {
echo "中国語フォントが見つかりません。FONT を変更してください:$FONT"
exit 1
}
gifs=("$GIF1" "$GIF2" "$GIF3" "$GIF4")
audios=("$AUDIO1" "$AUDIO2" "$AUDIO3" "$AUDIO4")
titles=("出会い" "光を借りる" "同行" "帰宅")
lines1=(
"月明かりの下、子ぎつねは出会いました"
"子ぎつねは月から借りました"
"彼は月明かりを提げ、ホタルに付き添って"
"ホタルは仲間のもとへ戻りました"
)
lines2=(
"道に迷った小さなホタルに。"
"やさしい一筋の光を。"
"一緒に森を抜けました。"
"子ぎつねも月にお礼を言いました。"
)
# 各章の長さは固定。ナレーション終了後の残りは静かなままです。
# 総時間:19秒。章の長さを超えたナレーションは切り取られます。
durations=("5" "4.5" "4.5" "5")
inputs=()
filters=""
for i in 0 1 2 3; do
vi=$((i * 2))
ai=$((vi + 1))
page=$((i + 1))
d="${durations[$i]}"
# GIF 内部のループ指定を無効にし、stream_loop により無限ループを統一します。
inputs+=(
-stream_loop -1 -ignore_loop 1 -i "${gifs[$i]}"
-i "${audios[$i]}"
)
# 絵本の背景:暖色の机、見開きの紙、背表紙と左側の文字。
filters+="
color=c=0xD6C7B3:s=1920x1080:r=30:d=${d},
drawbox=x=72:y=64:w=1788:h=972:color=0xB6A38C:t=fill,
drawbox=x=60:y=50:w=900:h=970:color=0xFFF9EE:t=fill,
drawbox=x=960:y=50:w=900:h=970:color=0xFFF9EE:t=fill,
drawbox=x=940:y=50:w=20:h=970:color=0xE2D6C3:t=fill,
drawbox=x=960:y=50:w=12:h=970:color=0xEFE5D5:t=fill,
drawbox=x=150:y=320:w=110:h=4:color=0xB28A60:t=fill,
drawtext=fontfile='${FONT}':text='子ぎつねが月明かりを借りる':x=150:y=155:fontsize=28:fontcolor=0x927A60,
drawtext=fontfile='${FONT}':text='${titles[$i]}':x=150:y=235:fontsize=64:fontcolor=0x493A2C,
drawtext=fontfile='${FONT}':text='${lines1[$i]}':x=150:y=400:fontsize=36:fontcolor=0x685846,
drawtext=fontfile='${FONT}':text='${lines2[$i]}':x=150:y=465:fontsize=36:fontcolor=0x685846,
drawtext=fontfile='${FONT}':text='${page} / 4':x=150:y=910:fontsize=24:fontcolor=0xA28D76
[book${i}];
[${vi}:v]
setpts=PTS-STARTPTS,
fps=30,
scale=780:800:force_original_aspect_ratio=decrease:force_divisible_by=2,
setsar=1,
format=rgba
[gif${i}];
[book${i}][gif${i}]
overlay=x='1020+(780-overlay_w)/2':y='130+(800-overlay_h)/2':shortest=1,
trim=duration=${d},
setpts=PTS-STARTPTS,
format=yuv420p
[v${i}];
[${ai}:a]
asetpts=PTS-STARTPTS,
aresample=48000,
aformat=sample_fmts=fltp:channel_layouts=stereo,
apad,
atrim=duration=${d},
asetpts=PTS-STARTPTS
[a${i}];
"
done
filters+="
[v0][a0][v1][a1][v2][a2][v3][a3]
concat=n=4:v=1:a=1[vout][aout]
"
# 一度の実行で、すべての絵本ページ、アニメーション、ナレーションを合成します。
ffmpeg -hide_banner -y \
"${inputs[@]}" \
-filter_complex "$filters" \
-map "[vout]" \
-map "[aout]" \
-c:v libx264 \
-preset medium \
-crf 18 \
-pix_fmt yuv420p \
-c:a aac \
-b:a 192k \
-ar 48000 \
-movflags +faststart \
"$OUTPUT"
printf '\n生成済み:%s\n' "$OUTPUT"
BASH
このスクリプトでは、4ページの長さを5秒、4.5秒、4.5秒、5秒に設定しており、合計19秒です。GIF はそのページが終わるまでループし、ナレーションが短い場合、後半の余った部分は静かなままになります。
特に注意してください:ナレーションがそのページより長い場合、スクリプトは超過した部分を切り取ります。ナレーションを再生成する際は、まず最後まで聞いてから durations を延長するか決めてください。19秒に合わせるために、物語が途中でページ送りされないようにしてください。
実行時には、素材を読み込むためにインターネット接続が必要です。リンクにアクセスできない場合は、まず GIF と MP3 をローカルにダウンロードし、対応する変数をファイルパスに変更できます。スクリプト内の -y は同名の出力ファイルを上書きします。すでに完成した動画がある場合は、先に別のファイル名に変更してください。
演示で提供された記録によると、この短いサンプルの素材生成クレジットは約1クレジット程度です。この数値は今回の演示の参考にすぎず、固定プランではなく、任意の19秒動画がすべて1クレジットだけで済むことを意味するものでもありません。モデルのバージョン、画面サイズ、品質、ナレーションの長さ、再試行回数はいずれも実際の消費量に影響し、Studio に表示される課金額を基準とします。最後のこのステップはローカルで FFmpeg を使用して合成するものであり、クラウド動画生成サービスを再度呼び出すものではありません。
¶ プロセス全体を1枚の図にまとめる
振り返ってみると、事はそれほど複雑ではありません。まず物語を考え、4コマを描き、それぞれのコマを少しだけ動かし、ナレーションを付け、最後にローカルで合成します。
Studio は物語、原画、GIF、ナレーション素材の準備を手伝い、FFmpeg は素材を本のページのように並べ、音声をつなぎ、MP4 を出力します。この二つを分けておけば、気に入らないページがあれば、そのページだけを直せます。

¶ 少しの月明かりで、ひとつの物語を語り終えられる
『子ギツネ、月明かりを借りる』には、多くの登場人物も、にぎやかな大きな場面もありません。ただ一匹の子ギツネが、道に迷ったホタルに付き添って、少しの道のりを歩くだけです。
こうした物語の画報を作るとき、時間をかける価値があるのは、たいていこうした細かな部分でもあります。4枚の絵の中のキツネは同じ姿に見えるか、瓶の中の光は十分に柔らかいか、ナレーションは安心して聞き続けられるものになっているか。
あなたも試してみたいなら、まずは4コマの小さな物語から始めてみてください。Ace Data Cloud Studio で画風とキャラクターをはっきり伝え、原画を確認してから、ゆっくりと動きや音を加えていきます。最初から長い作品を広げるよりも、まず短い物語をしっかり作るほうが、自分の好きな感覚を見つけやすくなります。
映像と音がどちらも整ったら、さらに何ページかめくってみましょう。動く小さな画報は、こうして少しずつ作られていきます。

