テキストファイルを1行ずつ「ペースト」する方法

私は、youtube動画を作っていますが、字幕を作る際
いちいち台本からコピペしていました。

この作業を効率化できたので紹介。

① AutoHotkeyをインストール



スタートメニューで「AutoHotkey」と検索。
見つからなければ、公式サイトから最新版をインストールします:
🔗 https://www.autohotkey.com/

V2バージョンでよい。

2 スクリプトファイルを作る

以下をメモ帳にコピペしてfilmora_auto_paste.ahkとして保存(任意の文字でもよいが、その際はスクリプトも書き直す)

#Requires AutoHotkey v2.0
#SingleInstance Force

; ========================================
; Filmora字幕ペースト支援スクリプト(1行ずつ手動)
; ========================================
; 使い方:
; ① 同じフォルダに「script.txt」(台本ファイル)を置く
; ② Filmoraの字幕入力欄をクリック
; ③ F8キーを押すたびに、次の1行をペースト
; ========================================

filePath := A_ScriptDir "\script.txt"  ; 台本ファイル
lineIndex := 1                         ; 現在の行位置を保持

F8:: {
    ; 外の変数を関数内で使う場合は static を使う
    static lineIndex := 1
    filePath := A_ScriptDir "\script.txt"

    try {
        content := FileRead(filePath, "UTF-8")
    } catch {
        MsgBox "script.txt が見つかりません。`n同じフォルダに置いてください。", "エラー"
        return
    }

    ; 改行コードを統一して分割
    content := StrReplace(content, "`r`n", "`n")
    content := StrReplace(content, "`r", "`n")
    lines := StrSplit(content, "`n")

    ; 空行をスキップ
    while (lineIndex <= lines.Length && Trim(lines[lineIndex]) = "")
        lineIndex++

    ; 終了判定
    if (lineIndex > lines.Length) {
        MsgBox "すべての行をペーストしました!", "完了"
        lineIndex := 1  ; 次回用にリセット
        return
    }

    ; 現在の行を送信
    line := Trim(lines[lineIndex])
    SendText line
    Send "{Enter}"

    lineIndex++
}

3 台本を保存


台本テキストファイルをscript.txtとして、
同じフォルダ内に保存しておく
(改行があっても無視してくれるスクリプトになっている)

4 スクリプト実行


AutoHotkeyを起動してから
filmora_auto_paste.ahkファイルをダブルクリック

この状態で、F8を押す度に
台本を1行ずつ「貼り付け」してくれる。
改行も無視する。

私の場合は、動画編集ソフトフィモーラにて、
字幕を入れる際に、手動でやっているので
この方法がとても助かる。