Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

OpenClawの音声MP3を自動保存する

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

OpenClawのTTSで生成されたMP3は、通常次の場所に保存されます。

/root/.openclaw/media/tool-speech-synthesis/

ただし、この場所はOpenClawのメンテナンス処理で古いファイルが削除される可能性があります。そこで、MP3を /root/mp3 へ自動コピーする監視スクリプトを用意しました。

監視スクリプト

#!/usr/bin/env bash
set -u

src=/root/.openclaw/media/tool-speech-synthesis
dst=/root/mp3
mkdir -p "$dst"

while true; do
  if [ -d "$src" ]; then
    find "$src" -maxdepth 1 -type f -name '*.mp3' -print0 |
      while IFS= read -r -d '' file; do
        base=${file##*/}
        id=${base#voice---}
        id=${id%.mp3}
        day=$(date -r "$file" +%F)
        out="$dst/${day}_voice-${id}.mp3"

        [ -e "$out" ] || cp -- "$file" "$out"
      done
  fi

  sleep 20
done

動作

20秒ごとにTTS保存先を確認し、新しいMP3を次の形式でコピーします。

2026-09-22_voice-d88e5223-68e0-44a5-832d-7f16689e7eaf.mp3

同名ファイルが存在する場合は、上書きせずスキップします。

 

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

スクリプト自体の解説

1. Bashで実行することを指定

#!/usr/bin/env bash

環境にあるBashを使って実行します。

2. 未定義変数をエラーにする

set -u

存在しない変数を使った場合に停止し、予期しない動作を防ぎます。

3. コピー元と保存先を指定

src=/root/.openclaw/media/tool-speech-synthesis
dst=/root/mp3
mkdir -p "$dst"
  • src:OpenClawがTTS MP3を保存する場所
  • dst:長期保存用の場所
  • mkdir -p:保存先がなければ作成

4. 常駐ループ

while true; do

スクリプトを終了するまで、繰り返し監視します。

5. MP3ファイルを検索

find "$src" -maxdepth 1 -type f -name '*.mp3' -print0

コピー元の直下にあるMP3だけを検索します。-print0により、空白を含むファイル名にも対応しています。

6. ファイルを1件ずつ処理

while IFS= read -r -d '' file; do

検索結果を1ファイルずつ安全に読み込みます。

7. ファイル名から音声IDを取得

base=${file##*/}
id=${base#voice---}
id=${id%.mp3}

例えば、

voice---abc123.mp3

から、

abc123

だけを取り出します。

8. 日付付きファイル名を作成

day=$(date -r "$file" +%F)
out="$dst/${day}_voice-${id}.mp3"

ファイルの更新日を使って、次の名前を作ります。

2026-09-22_voice-abc123.mp3

9. 重複コピーを防止

[ -e "$out" ] || cp -- "$file" "$out"

保存先に同じファイルがあればスキップし、存在しない場合だけコピーします。既存ファイルは上書きしません。

10. 20秒待機

sleep 20

20秒ごとに新しいMP3がないか確認します。

11. 監視を繰り返す

done
done

内側のdoneはファイル処理、外側のdoneは常駐監視ループの終了位置です。

このスクリプトは、OpenClawの一時保存領域を20秒ごとに確認し、新しいMP3だけを /root/mp3 に退避する仕組みです。

systemdによる常駐

systemdサービスに登録すると、サーバ起動後も自動的に監視を再開できます。

sudo systemctl daemon-reload
sudo systemctl enable --now openclaw-mp3-archive.service

状態確認:

sudo systemctl status openclaw-mp3-archive.service

なお、現在は記事タイトルを取得する仕組みがないため、ファイル名は日付+音声IDです。記事タイトルを付けるには、記事情報をTTS生成処理と連携させる追加実装が必要です。

タイトルとURLをコピーしました