1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

🚀 Cursor + Python🔥YouTube動画要約!!

1
Last updated at Posted at 2025-04-07

🎯 はじめに

「気になる技術動画、見る時間がないな…」「セミナーの内容、パッとテキストで読みたいな!」
そんな風に思うこと、ありますよね?

特にCursorを使いこなす皆さんにとって、動画での情報収集はとっても大事。
今回は、私たちが使っている 「YouTube動画要約機能」 の裏側をこっそりご紹介しますね!✨


✨ この機能って何ができるの?

簡単に言うと、YouTube動画の話している内容を文字にして、さらにAIが「ここ大事!」ってポイントを教えてくれる機能です!

  • 🗣️ 文字でサッと読める: 動画を再生しなくても、テキストで内容をチェック!
  • 📝 要点をパッと把握: 長い動画も、大事なところだけ抜き出して時短に貢献⏱️
  • 💡 インプットがスピードアップ: 効率よく新しい知識をゲットできます!

💰 コストを気にせず使える: CursorならAPI使用料を気にせず、定額で何度でも要約し放題! (←ここ大事!😉)
✍️ cursorのチャットでいつでも動画翻訳ができる

👉 あなたの「知りたい!」を、もっとスムーズに叶えます🚀


⚙️ 使い方と仕組み:PythonスクリプトとAI連携の裏側

この便利な機能は、実は Pythonスクリプト私(CursorのAI) の連携プレー🤝で成り立っています。ここでは、その使い方と裏側の仕組みを一緒に見ていきましょう!

1. まずは準備:Cursorに「魔法の呪文」を教えよう! ⚙️

最初に、youtubeyouyaku というコマンド(魔法の呪文🧙‍♀️)をCursorが理解できるように設定します。

  1. Cursorの左側メニューから ⚙️ Settings (設定) をクリック。
  2. Rules (ルール) セクションを選びます。
  3. User Rules に、こんなルールを書き込みます✍️ (パスはあなたのPC環境に合わせてくださいね!):
    "youtubeyouyaku"のあとにURLが貼られたらcd C:\you-projrct; Python youtube_summarizer.py 
のあとにURLをつけて実行してその結果を要約してチャット欄に出力してね。

image.png

これで準備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()

💡 スクリプトの動きを簡単に解説:

  1. argparse っていうライブラリで、あなたが入力したYouTubeのURLを受け取ります。
  2. get_transcript 関数の中で、youtube_transcript_api ライブラリを使って、動画の文字起こしデータをゲット!
    • 日本語 (ja) や英語 (en) の文字起こしを優先的に探します。
    • もし見つからなければ、その動画で利用できる他の言語の文字起こしを探してくれます。
  3. 取ってきた文字起こしデータを、print を使ってチャット画面に表示します。

⚠️ ここがミソ!このスクリプトは文字起こしを取ってきて表示するだけ! 要約はしません。

じゃあ、どうやって要約されるの? 🤔

スクリプトが文字起こしを表示した後、そのテキストを私(CursorのAI)が読み取って、「ふむふむ…」と内容を理解し、ギュギュッと要点をまとめた要約文を生成して、チャット画面に出力するんです!

まさに、スクリプトが集めてきた材料(文字起こし)を、AIが調理(要約)する🍳、そんな連携プレーなんですね!

実行結果のイメージはこんな感じ:

まず、スクリプトが文字起こしを出力して…(ズラーッとテキストが表示されます)

image.png

動画要約 🎬:

この動画は、[動画のタイトルや内容に応じた簡単な説明] がテーマのようですね。
主なポイントはこんな感じです。

別の動画の要約例画像


これで、コマンド一発で動画の要点がサクッと分かっちゃうわけです👍


💻 使ってる主な技術たち

この機能は、これらの技術の組み合わせでできています!

  • Cursor: いつもの開発環境 兼 AIとおしゃべりする場所
  • Python: この機能を作ってるプログラミング言語 🐍
  • youtube_transcript_api: YouTube動画から文字起こしを取ってくる便利な外部ツール 📚
  • AI (私だよ!): テキストの意味を理解して、いい感じに要約する頭脳 🧠

🌱 これからもっと進化するかも? (可能性)

今はスクリプトとAIが役割分担してますが、将来的にはこんな風にパワーアップしたら面白そう!なんて考えてます。

  • 全自動要約マシン化: OpenAI APIとかをスクリプトに入れて、文字起こし→要約まで一気に自動化!
  • グローバル対応: 英語とか、他の言語の動画も要約できたら嬉しいですよね! 🌍
  • 要約レベル選択: 「ざっくりでOK」「もうちょい詳しく」「ガッツリ知りたい」みたいに、要約の長さを選べたら便利かも!

🚀 まだまだ便利になる可能性、秘めてますよ!


👋 おわりに

この「YouTube動画要約機能」は、Cursor 環境で PythonAI を賢く使って、動画からの情報ゲットをもっと楽ちんにするための試みなんです💪

この仕組みが、皆さんの「AIってこんな風にも使えるんだ!」っていう発見やヒントになれば、すごく嬉しいです ✨

まだシンプルな作りですが、これからもっと良くしていきたいなって思っています。

この記事を読んで「へぇ~面白い!」「役に立った!」って思ってくれたら、ぜひ 👍 ボタンやコメントで教えてくださいね!励みになります😊
「こんな機能もあったら最高!」みたいなアイデアも大歓迎です!待ってます!


📫 ご連絡

もしバグを発見された場合や、「こうすればもっと良くなるのでは」といったご意見・ご要望がありましたら、お気軽に以下の連絡先までお知らせいただけると嬉しいです。

🐦 X (旧Twitter): https://x.com/wyUMAjanaiyo

📧 Gmail: adwddwdaw@gmail.com

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?