🎯 はじめに
「気になる技術動画、見る時間がないな…」「セミナーの内容、パッとテキストで読みたいな!」
そんな風に思うこと、ありますよね?
特にCursorを使いこなす皆さんにとって、動画での情報収集はとっても大事。
今回は、私たちが使っている 「YouTube動画要約機能」 の裏側をこっそりご紹介しますね!✨
✨ この機能って何ができるの?
簡単に言うと、YouTube動画の話している内容を文字にして、さらにAIが「ここ大事!」ってポイントを教えてくれる機能です!
- 🗣️ 文字でサッと読める: 動画を再生しなくても、テキストで内容をチェック!
- 📝 要点をパッと把握: 長い動画も、大事なところだけ抜き出して時短に貢献⏱️
- 💡 インプットがスピードアップ: 効率よく新しい知識をゲットできます!
💰 コストを気にせず使える: CursorならAPI使用料を気にせず、定額で何度でも要約し放題! (←ここ大事!😉)
✍️ cursorのチャットでいつでも動画翻訳ができる
👉 あなたの「知りたい!」を、もっとスムーズに叶えます🚀
⚙️ 使い方と仕組み:PythonスクリプトとAI連携の裏側
この便利な機能は、実は Pythonスクリプト と 私(CursorのAI) の連携プレー🤝で成り立っています。ここでは、その使い方と裏側の仕組みを一緒に見ていきましょう!
1. まずは準備:Cursorに「魔法の呪文」を教えよう! ⚙️
最初に、youtubeyouyaku というコマンド(魔法の呪文🧙♀️)をCursorが理解できるように設定します。
- Cursorの左側メニューから ⚙️ Settings (設定) をクリック。
- Rules (ルール) セクションを選びます。
- User Rules に、こんなルールを書き込みます✍️ (パスはあなたのPC環境に合わせてくださいね!):
"youtubeyouyaku"のあとにURLが貼られたらcd C:\you-projrct; Python youtube_summarizer.py
のあとにURLをつけて実行してその結果を要約してチャット欄に出力してね。
これで準備OK!Cursorは youtubeyouyaku [URL] を見たら、「よし、youtube_summarizer.py スクリプトを動かして、結果を要約するぞ!」と理解してくれます👍
2. 使ってみよう:コマンド一発で要約スタート! 🚀
準備ができたら、あとは簡単!Cursorのチャットに、要約したいYouTube動画のURLと一緒にコマンドを入力するだけです。
youtubeyouyaku https://youtu.be/xxxxxxxxxxx
(例としてNet Ninjaさんの動画を使ってみますね)
youtubeyouyaku https://youtu.be/OHT0wGUz5GI?list=PL4cUxeGkcC9goeb7U1FXFdNszWetCmhfB
これを実行すると、裏側では次のようなことが起こっています👇
3. 裏側の動き:スクリプトが文字起こし → AIが要約! 🐍➡️🧠
あなたがコマンドを実行すると、まずStep1で設定した youtube_summarizer.py というPythonスクリプトが動き出します。
このスクリプトの役割は、指定されたYouTube動画から「文字起こしデータ」を取ってくること!
これがそのスクリプト (youtube_summarizer.py) の中身です:
# youtube_summarizer.py
from youtube_transcript_api import YouTubeTranscriptApi
import argparse
import os
# import google.generativeai as genai # 不要になったためコメントアウトまたは削除
# --- APIキー設定は不要 ---
# API_KEY = os.getenv("GOOGLE_API_KEY")
# if not API_KEY:
# print("警告: 環境変数 GOOGLE_API_KEY が設定されていません。要約機能は利用できません。")
# else:
# genai.configure(api_key=API_KEY)
def get_transcript(youtube_url):
"""YouTube動画のURLから文字起こしを取得する"""
try:
# URLからVideo IDを抽出 (より堅牢な方法も検討可能)
if "v=" in youtube_url:
video_id = youtube_url.split("v=")[1].split("&")[0]
elif "youtu.be/" in youtube_url:
video_id = youtube_url.split("youtu.be/")[1].split("?")[0]
else:
print("エラー: 有効なYouTube URL形式ではありません。")
return None
print(f"Video ID: {video_id}")
# 利用可能な文字起こし言語を取得
transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
# 日本語、英語、それ以外の順で試す
target_languages = ['ja', 'en']
transcript = None
for lang in target_languages:
try:
transcript = transcript_list.find_transcript([lang])
print(f"{lang} の文字起こしが見つかりました。")
break
except:
continue
# 日本語・英語が見つからない場合、利用可能な最初の言語を取得
if not transcript:
try:
available_langs = [t.language for t in transcript_list]
if not available_langs:
print("エラー: 利用可能な文字起こしが見つかりませんでした。")
return None
print(f"日本語・英語の文字起こしが見つかりません。利用可能な言語: {available_langs}")
transcript = transcript_list.find_transcript([available_langs[0]])
print(f"{available_langs[0]} の文字起こしを使用します。")
except Exception as e:
print(f"利用可能な文字起こしの取得中にエラー: {e}")
return None
# transcript.fetch() が返すオブジェクトの構造変更に対応
# 以前: item['text']
# 現在: item.text
transcript_text = " ".join([item.text for item in transcript.fetch()])
return transcript_text
except Exception as e:
print(f"文字起こしの取得または処理中に予期せぬエラーが発生しました: {e}")
import traceback
traceback.print_exc() # 詳細なエラー情報を表示
return None
# summarize_text 関数は不要になったため削除またはコメントアウト
# def summarize_text(text):
# """テキストをGemini APIを使って要約する"""
# ...
def main():
parser = argparse.ArgumentParser(
description="YouTube動画のURLを指定して、その文字起こしを取得します。", # 説明を修正
formatter_class=argparse.RawTextHelpFormatter # ヘルプメッセージの改行を保持
)
parser.add_argument("youtube_url", help="文字起こしを取得したいYouTube動画のURL\n例: \"https://www.youtube.com/watch?v=XXXXXXXXXXX\"") # ヘルプを修正
args = parser.parse_args()
print(f"動画URL: {args.youtube_url}")
print("文字起こしを取得中...")
transcript = get_transcript(args.youtube_url)
if transcript:
print("\n文字起こし取得完了。")
print("\n--- 文字起こし結果 --- ")
print(transcript) # 取得した文字起こし全文を表示
print("---------------------")
print("\n上記のテキストをコピーして、Cursorなどのエディタで要約してください。")
else:
print("\n文字起こしが取得できなかったため、処理を終了します。")
if __name__ == "__main__":
main()
💡 スクリプトの動きを簡単に解説:
-
argparseっていうライブラリで、あなたが入力したYouTubeのURLを受け取ります。 -
get_transcript関数の中で、youtube_transcript_apiライブラリを使って、動画の文字起こしデータをゲット!- 日本語 (
ja) や英語 (en) の文字起こしを優先的に探します。 - もし見つからなければ、その動画で利用できる他の言語の文字起こしを探してくれます。
- 日本語 (
- 取ってきた文字起こしデータを、
printを使ってチャット画面に表示します。
⚠️ ここがミソ!このスクリプトは文字起こしを取ってきて表示するだけ! 要約はしません。
じゃあ、どうやって要約されるの? 🤔
スクリプトが文字起こしを表示した後、そのテキストを私(CursorのAI)が読み取って、「ふむふむ…」と内容を理解し、ギュギュッと要点をまとめた要約文を生成して、チャット画面に出力するんです!
まさに、スクリプトが集めてきた材料(文字起こし)を、AIが調理(要約)する🍳、そんな連携プレーなんですね!
実行結果のイメージはこんな感じ:
まず、スクリプトが文字起こしを出力して…(ズラーッとテキストが表示されます)
動画要約 🎬:
この動画は、[動画のタイトルや内容に応じた簡単な説明] がテーマのようですね。
主なポイントはこんな感じです。
これで、コマンド一発で動画の要点がサクッと分かっちゃうわけです👍
💻 使ってる主な技術たち
この機能は、これらの技術の組み合わせでできています!
- Cursor: いつもの開発環境 兼 AIとおしゃべりする場所
- Python: この機能を作ってるプログラミング言語 🐍
- youtube_transcript_api: YouTube動画から文字起こしを取ってくる便利な外部ツール 📚
- AI (私だよ!): テキストの意味を理解して、いい感じに要約する頭脳 🧠
🌱 これからもっと進化するかも? (可能性)
今はスクリプトとAIが役割分担してますが、将来的にはこんな風にパワーアップしたら面白そう!なんて考えてます。
- 全自動要約マシン化: OpenAI APIとかをスクリプトに入れて、文字起こし→要約まで一気に自動化!
- グローバル対応: 英語とか、他の言語の動画も要約できたら嬉しいですよね! 🌍
- 要約レベル選択: 「ざっくりでOK」「もうちょい詳しく」「ガッツリ知りたい」みたいに、要約の長さを選べたら便利かも!
🚀 まだまだ便利になる可能性、秘めてますよ!
👋 おわりに
この「YouTube動画要約機能」は、Cursor 環境で Python と AI を賢く使って、動画からの情報ゲットをもっと楽ちんにするための試みなんです💪
この仕組みが、皆さんの「AIってこんな風にも使えるんだ!」っていう発見やヒントになれば、すごく嬉しいです ✨
まだシンプルな作りですが、これからもっと良くしていきたいなって思っています。
この記事を読んで「へぇ~面白い!」「役に立った!」って思ってくれたら、ぜひ 👍 ボタンやコメントで教えてくださいね!励みになります😊
「こんな機能もあったら最高!」みたいなアイデアも大歓迎です!待ってます!
📫 ご連絡
もしバグを発見された場合や、「こうすればもっと良くなるのでは」といったご意見・ご要望がありましたら、お気軽に以下の連絡先までお知らせいただけると嬉しいです。
🐦 X (旧Twitter): https://x.com/wyUMAjanaiyo
📧 Gmail: adwddwdaw@gmail.com


