
プログラミング知識ゼロの私が、AIチームとPodcastの配信支援システムを作った記録。
プログラミング知識ゼロ。でも、AIがいれば話は別です。
Gemini(設計担当AI)× Claude(精査担当AI)× Google Colab(実行環境)
この3つを組み合わせ、音声の結合から概要欄の作成まで、面倒な「前準備」をAIと自動化ツールで解決しました。
プログラミングの知識がなくても、AIを「監督」として使いこなせばここまでできるという実例をご紹介します。
まず結論:何が自動化できたか
音声の自動結合: 自分のPCで用意したパーツを、順番通り1本に繋ぎます。
概要欄のHTML化: 普通に書いた文章を、リンクが有効な配信用の形式に自動変換します。
進捗の自動更新: 作業が終わるとスプレッドシートに「完了」のチェックが入ります。
使ったツール:それぞれの「役割」
① Gemini(Google提供のAI/思考モード)
設計担当。「こんなシステムを作りたい」と相談すると、全体の設計図とプログラムの土台を作ってくれました。
② Claude(Anthropic提供のAI/Sonnet 4.6)
精査担当。Geminiが作った設計やコードのミスを見つけ、より良い形に仕上げてくれました。
③ Google Colab(無料)
実行環境。ブラウザで開いて「再生ボタン」を押すだけでプログラムが動く、インストール不要の作業場です。
④ Googleスプレッドシート
指令塔。「何をどの順番で処理するか」をここに書いておきます。
⑤ Audacity(無料) 音声調整ソフト。素材を整えるのに使います。
全体の流れ:7つのステップ
① 自分のパソコンで
└ Audacityで音声素材を調整する
② Googleドライブへ
└ 素材ファイルを指定のフォルダへアップロードする
③ スプレッドシートで
└ タイトルと概要欄の下書きを入力する
④ Google Colabで ←【ここがメインの操作!】
└ サイトを開いて「再生ボタン」を押す
⑤ Googleドライブに
└ 完成した音源が自動で保存される
⑥ 自分のパソコンへ
└ 完成品をダウンロードする
⑦ Spotifyで
└ 手動でアップロードして配信予約完了
ステップ1:音声の「下ごしらえ」(Audacity)
自動化の品質は、素材の品質に左右されます。
Audacityで以下の3点を整えておくことで、結合後も自然な聴き心地になります。
① 音量を揃える
ジングルだけ急に大きく聞こえる、といった違和感をなくします。
各パーツの音圧を統一しておきます。
② 無音を入れる
各音声ファイルの先頭と末尾に、0.5秒〜1秒の無音 を追加します。
これをしておくと、自動結合した後も音と音の間に自然な間隔が生まれます。
「繋ぎ目が不自然」になる原因のほとんどは、ここを省略していることです。
③ ファイル名のルールを揃える
スプレッドシートと同じ命名ルールでファイルを保存し、Googleドライブへアップロードします。
ファイル名がずれると、プログラムが「どのファイルを結合すればいいか」を正しく判断できなくなります。
ステップ2:スプレッドシートに情報は集約
すべての情報はスプレッドシートに集約されています。
配信日、エピソード番号、ファイル名などは、関数で半自動生成される設定にしております
「タイトルの下書き」と「概要欄の下書き」を書く
実行用のチェックボックスをONにする
ステップ3:Google Colabで「再生ボタン」を押す
Google Colabって何? Googleが無料で提供している、ブラウザ上でプログラムを動かせるサービスです。
難しいソフトのインストールは不要。
コードを貼り付けて「▶(再生ボタン)」を押すだけで動きます。
Youtubeの動画を再生する感覚に近いです。
ボタンを押すと、以下の3つが自動で実行されます。
① 音声ファイルの自動結合
スプレッドシートの指示を読み取り、最大7つのパーツ(ジングル・本編・EDなど)を正確な順番で1本に連結します。
手作業で順番を確認する必要は、もうありません。
② 概要欄のHTML自動生成
概要欄の下書きとして普通に書いたテキストを、Spotify用のHTML形式に自動変換します。
ここに筆者のこだわりがあります。
URLの扱いを次のように設定しました。
クリックできるリンクとして機能する
画面には https://... というURLのテキストがそのまま表示される
なぜこの仕様にしたか。
リンクが切れたとき、URLが見えていれば読者が自分で検索できます。
見た目だけのリンクテキスト(「こちら」など)にしてしまうと、リンク切れ後の逃げ道がなくなります。
③ 進捗の自動更新
処理が完了すると、スプレッドシートの「作業完了」列に自動でチェックが入ります。「あのエピソード、処理したっけ?」という確認作業がなくなります。
最後だけ手作業:Spotifyへのアップロード
Spotifyの管理画面は仕様変更が頻繁なため、ここだけは意図的に手作業にしています。
自動化と仕様変更のいたちごっこを避けるための判断です。
やることはシンプルです。
完成した音源を自分のパソコンからアップロード
「タイトル」と、スプレッドシートに生成された「HTML概要」をコピー&ペースト
配信日時やその他の設定をして予約完了
運用して変わったこと
順番ミスがゼロに
「このパーツ、入れ忘れた」という事故がなくなりました。プログラムがスプレッドシートの指示通りに処理するので、人間の確認作業が不要です。
概要欄のリンク切れがゼロに
URLが多い回でも、HTML変換は一瞬です。手作業でのコピペミスによるリンク切れが、完全になくなりました。
AIを「チーム」として使う
今回は2つのAIに、明確に役割を分担させました。
Gemini:全体の設計と、プログラムの初稿作成
Claude:コードの精査・バグ修正・改善提案(Adaptive Thinkingモード使用)
さらにもう一工夫。
Claudeには無料枠の制限があるため、あまり働かせることができません。
「Claudeへの質問文の作成」と「Claudeの回答の評価」はGeminiに担当させるという体制を作りました。
AIがAIをチェックする相互確認のしくみです。
1つのAIだけでは気づかなかった改善点が、この体制によって次々と見つかりました。
📎 付録:実際に動いているコード
Google Colabを開いて貼り付けてください。書き換えが必要な箇所は 4カ所だけ、コメントで示しています。
import re
import unicodedata
import os
from pydub import AudioSegment
from IPython.display import HTML, display
from datetime import datetime
# =====================================================
# ▼▼▼ ここだけ書き換えてください(4カ所) ▼▼▼
# =====================================================
FOLDER_PATH = "/content/drive/MyDrive/YourFolderPath"
# ↑ Googleドライブの素材フォルダのパスに変更してください
SPREADSHEET_ID = "YourSpreadsheetID"
# ↑ スプレッドシートのIDに変更してください
# (URLの /d/ と /edit の間にある英数字の羅列です)
SHEET_NAME = "YourSheetName"
# ↑ 使うシートのタブ名に変更してください(例:"配信管理")
JINGLE_KEYWORD = "ピンポンパンポン"
# ↑ ジングルファイルの名前に含まれるキーワード(例:"ピンポンパンポン")
# =====================================================
# ▲▲▲ 書き換えはここまで(以下、自動処理プログラム) ▲▲▲
# =====================================================
# 列番号の定義(スプレッドシートの構造に合わせて調整が必要な場合があります)
COL_CHECK_DONE = 3 # C列:完了
COL_HTML_DESC = 6 # F列:HTML出力
COL_RAW_DESC = 7 # G列:下書き内容
COL_FILE_ID = 10 # J列:管理番号
COL_JINGLE_NAME = 16 # P列:ジングル出演者名
COL_COMBINE_EXEC = 27 # AA列:実行スイッチ
def nkc(s):
"""文字のゆらぎ(全角・半角)を吸収する"""
if s is None: return ""
return unicodedata.normalize('NFKC', str(s)).strip()
def find_main_file(files, j_text):
"""本編ファイルを厳密に検索する"""
prefix = nkc(j_text)
pattern = re.compile(r'^' + re.escape(prefix.rstrip('-')) + r'(?![\d])')
matches = [f for f in files if pattern.match(nkc(f)) and "-op" not in nkc(f) and "-en" not in nkc(f)]
return matches[0] if matches else None
def linkify(text):
"""URLを表記はそのままにクリック可能にする"""
url_pattern = re.compile(r'(https?://[^\s\u3000、。)\)]+)')
return url_pattern.sub(r'<a href="\1">\1</a>', text)
def generate_html(raw_text, f1_template):
"""下書きをHTML形式に変換する"""
if not raw_text: raw_text = ""
paragraphs = raw_text.split('\n')
html_parts = [f"<p>{linkify(p.strip())}</p>" for p in paragraphs if p.strip()]
return "".join(html_parts) + (f1_template if f1_template else "")
def main_process():
# スプレッドシートへの接続(Google Colab環境を想定)
from google.colab import auth
from google.auth import default
import gspread
auth.authenticate_user()
creds, _ = default()
gc = gspread.authorize(creds)
sh = gc.open_by_key(SPREADSHEET_ID)
worksheet = sh.worksheet(SHEET_NAME)
f1_template = worksheet.acell('F1').value
data = worksheet.get_all_values()
all_files = [f for f in os.listdir(FOLDER_PATH) if f.lower().endswith(".mp3")]
print(f"📊 処理を開始します...")
for i, row in enumerate(data[1:], start=2):
# 実行フラグ(AA列)がTRUEの場合のみ実行
if str(row[COL_COMBINE_EXEC - 1]).upper() == "TRUE":
file_j_text = row[COL_FILE_ID - 1].strip()
short_name = file_j_text.rstrip('-').strip()
print(f"🎬 処理中: {short_name}")
# HTML生成
final_html = generate_html(row[COL_RAW_DESC - 1], f1_template)
# スプレッドシートの状態を更新(バッチ処理で高速化)
worksheet.batch_update([
{'range': f'F{i}', 'values': [[final_html]]},
{'range': f'AA{i}', 'values': [[False]]}, # 実行スイッチをOFFに
{'range': f'C{i}', 'values': [[True]]}, # 完了チェックをONに
])
print(f" ✅ 完了しました")
print("✨ すべての作業が終了しました。")
main_process()
このコードを「自分用」にする:AIへの頼み方
コードを見て「よくわからない」と感じても大丈夫です。以下の順番でAIに相談すれば、初心者でも自分の環境に合わせられます。
Step 1:目的を宣言する
「Podcastの配信準備を自動化したいです。参考になるコードを入手したので、私が使えるようにサポートしてください。プログラミングは初心者で、Google Colabを使う予定です。」
Step 2:コードを渡して書き換え箇所を確認する
「以下のコードを読んでください。自分のGoogleドライブとスプレッドシートに合わせて書き換えが必要な箇所はどこですか?」 ※このあとコードを貼り付けます
Step 3:セットアップ手順を教えてもらう
「このコードを動かすために必要な準備(ライブラリのインストールやGoogleアカウントの認証)を、初心者向けに1ステップずつ教えてください。」
はじめて試す方への3つのアドバイス
① IDは自分専用のものに必ず変える コードの中にある SPREADSHEET_ID や FOLDER_PATH はサンプル値です。自分のシートのURLからIDを取り出す必要があります。やり方がわからなければ「スプレッドシートのIDの取り出し方を教えてください」とAIに聞くだけでOKです。
② 必要なのはGoogleアカウントだけ 有料のソフトは一切不要です。Googleアカウントがあれば、今日からでも始められます。
③ エラーが出たらメッセージをそのままAIに貼る コードが動かないとき、画面に表示されるエラーメッセージをコピーしてAIに投げるだけで、たいていは解決します。「なぜ動かないか」を自分で考える必要はありません。詰まること自体が、AIの使い方を覚える練習になります。
専門知識がなくても、AIを正しくチームに組み込めば、自分専用のしくみは作れます。最初の一歩は、AIへの「目的の宣言」から。