Excelの縦型ショート動画を26本作ってTikTokに投稿するまで:イントロ演出、4つ打ちBGM、カバー画像の作り直し

開発eurekapu-nuxt4

Excelの縦型ショート動画を26本作ってTikTokに投稿するまで:イントロ演出、4つ打ちBGM、カバー画像の作り直し

昼過ぎ、TikTokに上げたばかりの6本を、自分の指示で全部消した。 1本目には、もう再生数が10付いていた。 それでも消したのは、プロフィールの一覧に並んだ6本を見て、足りないものに気づいたからだ。

朝の時点では、スマホで見る縦長の動画を1本、試しに作るだけのつもりだった。

横長の講座動画を縦に組み替える(08:44)

Excel基礎の講座向けに、画面再現の仕組みで横長の動画を作っている。 これをスマホ向けのレイアウトでも見られるようにしたい、と朝いちばんにClaude Codeへ頼んだ。 目的はSNSでバズることで、題材はひとまず相対参照と絶対参照にした。

画面再現のプレビューページに「Excelスマホ」のセクションを足し、再生ボタンを押せば縦の画で見られるものを作らせた。 計画書の判断4件は全部推奨を選び、テロップはRSVP方式で、と注文を付けた。

土台にしたのは、税率に $ を付け忘れる題材の既存の台本だ。 描画エンジンの寸法を引数にして縦の画を描けるようにし、全コマ計算で壊れる前後の値を確かめさせた。 税率を掛けた数式を下へコピーすると 0、#VALUE!、150,000 と壊れ、F4 で固定すると 120、80、30 に直る。 実物のExcelでの検算は、8件中8件が一致した。

途中で一度、dev サーバーを壊している。 依存を足す pnpm add で配置が変わり、起動中のサーバー(ポート3200)では既存のシーンまで500を返した。 ポートを指定して再起動し、元に戻した。 11字のテロップが右端のボタン帯へはみ出したので、940px の手前に収まるよう詰めさせた。

語りは本人の声で合成した。 間の取り方を比べるため、2秒グリッド(32.0秒)、1秒グリッド(29.0秒)、詰める版(間0.3秒で26.1秒)の3通りを作り、ページで切り替えて聞けるようにした。

黒地のイントロに「Excelだ」と分かる動きを入れる

試作を見て、これではExcelの講座だと最初に分からない、と思った。 黒い背景に題名を1文字ずつ出すイントロに、Excelだと一目で分かるモーションを足してほしいと頼み、全縦動画の決まりにした。

足してもらったのは、名前ボックス、fx の数式バー、列番号と行番号、マス目、緑の選択枠とフィルハンドルだ。 Microsoft のロゴは商標なので使わず、画面の形だけでExcelだと伝える。 題名が3行に割れたので2行に収まる大きさに詰め、これで確定した。

あとから、イントロでは題名を読み上げないとも決めた。 ルパン三世のタイトルのように、文字とクリック音とBGMだけで見せる。

BPM120の4つ打ちをずっと鳴らす

TikTok向けなので、BPM120 で Avicii 風の格好いいBGMを作り、イントロとつなげてほしいと頼んだ。 出てきたのは、Pythonで合成したオリジナル曲(51秒、ドロップは3.0秒)だった。 耳では確認できないので、拍の位置と音量は数値で確かめた、という報告付きだ。 和音は F#m → D → A → E の繰り返しで、メロディ(リード)はあとで抜いてもらった。

聞いてみると、4拍のキックが途中で微妙に変化していた。 欲しかったのは、頭から最後までずっと同じ「ドゥ、ドゥ、ドゥ、ドゥ」である。 そう伝えると、キックを同じ強さで鳴らし続け、前置きのスネア連打、ドロップ直前の無音、上がっていくノイズを外した版になった。

同じタイミングで、台本の終わり方にも注文を付けた。 F4 で直したところで終わるので、結局何の動画だったのかが分からない。 最後に「まとめ」の拍を足して、「コピーしても動かない参照が絶対参照、ずれる参照が相対参照」と言葉で締めさせた。 全10文を作り直すと2秒区切りで48秒になり、音声認識で4拍とも台本どおりに読めていることも確かめた。

締めカードとCodexの指摘

イントロと対になる、エンディングのアニメーションも決まりにしたかった。 Claude Code の案は、黒地のExcel画面に「今日の1行」を打ち込み、Enter で閉じる約3秒の締めカードだった。 これで作ってもらった。

9:47 に始めたCodexレビューが返ってこなかったので、やり直させた。 指摘は1点で、冒頭の2秒で何の異常なのかが伝わっていない、というものだった。 イントロのマス目に、0秒から赤い 0、#VALUE!、150,000 を出して応えた。

縦動画の書き出しスクリプトも作らせ、1本目をMP4にした。 54.5秒、1080×1920、30fps、音声ありである。 続けて、講座の「〜は使わない」というルールから、壊れた画面が一目で分かる5本を選んだシリーズ計画を作らせ、判断4件に答えた。

シリーズ5本の制作(11:17)

シリーズ5本は、引き継ぎプロンプトを渡した別のセッションで作らせた。 1本ごとに、全コマ計算、実物のExcelでの検算、本人の声の合成、音声認識での読みの確認、静止画の確認を回す。 検算は、1本目が列の挿入前と挿入後の2冊とも数式6件中6件、4本目が数式6件に加えて千円表示を含む入力値8件中8件で一致した。

合成では「インボイス」が「陰謀日」と崩れた。 語の位置を変えても直らず、合成スクリプトの読みの置き換え表を調べることになった。 本編の長さは1秒区切りで、1本目が42.0秒、3本目が44.0秒、4本目が43.0秒、5本目が36.0秒だった。

プレビューを見て「非常に良い」と伝え、5本をMP4でダウンロードフォルダに書き出させた。 コミットは仕組みの変更と台本の計19ファイルだけで、動画は入れていない。 動画は重いので、GitHubに上げる必要はないと考えている。

コミットの前には、並行セッションの未コミット変更が同じファイルに混ざっていた。 自分の変更だけをステージし、HEAD とステージ差分だけの別の作業ツリーで単体テスト97件と全コマ計算を通してから、コミットしてもらった。

Androidから投稿し、6本を全部消す(10:03〜)

TikTokのアカウントは持っていなかった。 AndroidをUSBでつなぎ、アカウント作成の操作をClaude Codeに任せた。 adb が入っていなかったので Android Platform Tools を入れ、Play ストアからTikTokを入れるところまでは進んだ。 登録の途中、自分が入れていない値が入力欄に入っているのを見たClaude Codeは、私が端末を直接触っているのかと聞いて手を止めた。 ログインは自分で済ませ、投稿から任せることにした。

投稿は何度か止まった。 ギャラリーで動画を選ぶタップが、Claude Code の自動許可判定(auto mode)に拒否されたからだ。 理由は示されなかった。 投稿の手前までは自分で進め、説明欄とハッシュタグを任せた。 adb からは日本語を打てないので、ADBKeyBoard を入れて日本語を送り込ませた(手順と、端末の設定で止まった経緯はADBKeyBoardの記事に書いた)。

シリーズの5本がそろったころ、1本目の再生数は10になっていた。 残りは、動画は私が選び、説明文はClaude Codeが入れる分担で続けた。 一度、二重投稿になりかけた。 投稿済みの税率の動画を、ギャラリーの先頭からもう一度選んでいたのだ。 カバーの「税」と表の数字が一致していることからClaude Codeが気づき、止めた。

6本がそろったプロフィールの一覧を見て、サムネイルがちゃんとあった方がいいと思った。 5本は「Excelスマホ」のラベルと表が映ったコマだったが、全部はそろっていない。 あとから変えられるなら変えたかった。 しかし、「…」メニューの項目を全部見てもらっても、投稿済みの動画のカバーを変える項目は無かった。

それで、6本とも消してもらった。 削除は、30日以内なら復元できる通常の「削除」を選んでいる。

カバーを「1枚で内容が分かる」形に作り直す

最初のカバーは、私の提案でイントロの最後のコマにした。 1文字ずつ出し終えて、題名が緑の枠にそろったところだ。 並べてみると、サムネイルっぽくない。 問いかけの題名はいいが、論点が増えたときに探しづらいので、カテゴリかタグが要る。

見本は3案(A: タグ+問い+関数名、B: 壊れた画が主役、C: 関数名が主役)から始まった。 どれも6本を、TikTokのプロフィール一覧と同じ3列、3:4 の切り取りで並べてある。 そこにExcelの画面を入れた「C案(改)」を足してもらい、これに決めた。

決める際に、2点を直させた。 タグと番号の下の余白が足りないので、数式バーから下を下げる。 下の「Excelスマホ」の文字は外し、タグの左に「Excel」を入れる。 別の表計算ソフトの話だと思われないよう、Excelの名前は残したかった。 タグ行と数式バーの間は、まだ 26px しか空いていなかったので、もう 30px 下げた。 「ROUNDDOWN」だけ左右の端まで届いたので、長い関数名は一段小さくした。 カバーの取り違えを防ぐテスト(全本にカバーがある、タグは決まった5つのどれか、番号が重ならない)も足した。

サムネイルとMP4は別々に書き出す、という考え方にした。 6本分のカバーとMP4を、同じ名前でダウンロードフォルダに書き出させた。

再投稿では、うっかりカバーのPNGを選び、写真投稿になりかけた。 動画はギャラリーから選び、カバーは「カバーを編集」から画像を足す手順だと、ここで分かった。

動画とカバーを選ぶ操作まで自分でやるのは面倒だった。 許可ルールを1つ足せばできるというので追加を頼んだが、自分の権限設定を書き換える操作(Self-Modification)として拒否された。 /permissions から自分で足し、#02〜#06 は選択から投稿まで任せた。 一覧には #01〜#06 が番号順に並び、二重投稿も抜けも無かった。

追加20本の計画と台本のバッチ(13:33〜)

5本を作り終えたところで、あと20本ぐらい足そうと決めた。 抽出の計画は次のセッションに回し、引き継ぎプロンプトをダウンロードフォルダに書き出させた。

候補は約50件あり、そこから20本を選ばせた。 計画書はCodexのレビューを2回受け、判断3件は全部推奨で答えた。 番号は #07〜#26 の続き番号である。 台本はバッチ1(7本)、バッチ2(8本)、バッチ3(5本)に分けて書かせた。

バッチ1(#07〜#13)は、検算が7本とも実物のExcelと一致した。 ただし #11 は、& の配列数式が普通の数式として書かれて #VALUE! になり、配列数式の印を足して8件中8件にそろえた。 本編は34〜44秒で、基準の30〜45秒に収まった。 #08 は「表の外」を読み間違えたので「テーブルの外」に言い換え、同じ注意を tts-narration スキルに足させた。 #10 は、題名の「0」だけがイントロで3行目に1字落ちた。 行の長さをそろえる設定を足し、締めカードにも同じ設定を入れたので7本とも書き出し直した(約15分)。

「全部進めて」と頼んだあと、コマンド実行の安全判定が返ってこない状態が続いた。 Bash が止まっている間は、ファイルの読み書きだけで #14〜#18 の台本を書き進めていた。 判定が戻らないまま、いったん止めて報告してきたので、セッションを切り替えることにした。

16:48 のセッションで、バッチ1をコミットさせた(Codexのコミットゲートは指摘なし)。 バッチ2の8本は、検算が数式計54件で一致し、単体テストは102件すべて通った。 本編が30秒を切った3本(#19 が29.0秒、#20 が27.0秒、#21 が29.0秒)には中身のある1文を足し、34.0秒、31.0秒、34.0秒にした。 マスの文字は 40px を基準にしている。 #16(37.5px)と #17(38.0px)が下回ったので、列幅と映す範囲を詰めて書き出し直した。 一字の「表」を合成が「おもて」と読む型や、句点「。」だけが1枚になるテロップも、機械的に探すようにした。

バッチ3では、描画エンジンに結合、列の非表示、フィルターと SUBTOTAL を足させた。 5本とも文字が31〜38px だったので、41px 以上まで詰めた。 #22(25秒)と #23(22秒)は、30秒に届かず文を足した。 「B3にしか」は「ビーさんに」と聞こえて B32 と紛れるので、「B3のセルにしか」に直した。 #22 のイントロの題名は「結合したら合計/が1人分」と折れたので、「結合したら/合計が1人分」になるよう直させた。 回帰テストは 41/41 で通った。

これで20本すべてがMP4まで終わり、コミットも済んだ。 公開も push もしていない。 残っているのは、私が発音と画を確かめることだけだ。

学びメモ

  • 投稿済みのTikTok動画は、アプリの「…」メニューからカバーを差し替えられなかった。カバーは投稿前に決めておく必要がある。
  • 合成の読み間違いには型がある。一字の「表」、「インボイス」、「B3にしか」のように、同音で別の語に崩れるものは台本の側で言い換える。
  • 自動許可判定に止められた操作(ギャラリーでの選択)は、別の方法で回り込ませず、許可ルールを自分で足して通した。

振り返り

昼過ぎに消した6本のことを考えると、カバーは動画のおまけではなかった。 今は、カバーを全本必須にして、台本に SCENE_COVER を書く決まりになっている。 追加の20本は、MP4まで書き出してある。 あとは、自分の耳で発音と画を確かめる番だ。

#Excel#縦型動画#TikTok#Claude Code#Codex#音声合成#Android