0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

会議や講演の録音を、年額契約なしでNotionに自動で要約する仕組みを作った(Gemini API × Notion API)

0
Posted at

はじめに

会議やイベントの内容を、時間がたつと忘れてしまう。大事なことを後から整理したいのに、録音を聞き返す時間はない。そんな自分の困りごとを、自分でツールを作って解決した話です。

録音にはPlaud(ボイスレコーダー)を使っています。ただ、文字起こしと要約を本格的に使うには年額契約が必要で、固定費は増やしたくありませんでした。そこで、録音はPlaudのまま、文字起こし・要約・Notionへの登録は自作することにしました。

作ったもの:rec2notion

  • 録音ファイルを inbox フォルダに入れて、run.bat をダブルクリックするだけ
  • 自動で「文字起こし → 要約 → Notionのデータベースに登録」まで進む
  • Notionのページには要約が本文に入り、長い文字起こしは折りたたみの中にしまわれるので、開いてすぐ要点を振り返れる

使った技術:Python / Gemini API(gemini-2.5-flash、無料枠) / Notion API

作る前に「合格基準」を決めた

作り始める前に、何をもって完成とするかを1行で決めました。

Plaudの要約と比べて、主要な論点と具体例が同等に残っていること

あるイベントの講演で「AIに頼むなら、合否の基準を先に決める。基準のない依頼は丸投げになる」という話を聞いたのがきっかけです。実際に、同じ講演の録音でPlaudの要約と自作の要約を並べて答え合わせし、足りなかった点(話の締めの言葉が抜ける、話されていない一般論が混ざる)はプロンプトを直して埋めました。

全体の構成

run.bat(ダブルクリック)
   │
   ▼
【前半:音声 → Markdown】
   ① inbox の音声を探す(処理済みのものは飛ばす)
   ② 音声を約10分ずつに分割
   ③ 1区間ずつ Gemini で文字起こし → 区間ごとにファイルへ保存
   ④ 全区間をつなげて、Gemini で要約
   ⑤ 要約+文字起こしを Markdown で保存
   │
   ▼
【後半:Markdown → Notion】
   ⑥ まだ登録していない Markdown を探す
   ⑦ Notionにページを作成(要約は本文、文字起こしは折りたたみの中)
   ⑧ 登録済みの印を残す

一番驚いたこと:Geminiは音声をそのまま渡すだけで文字起こしできる

文字起こしは専用のサービスや音声認識ライブラリが必要だと思っていましたが、Gemini APIなら音声ファイルをアップロードして「文字起こしして」と頼むだけでした。

from google import genai

client = genai.Client(api_key="(自分のAPIキー)")

with open("rec.mp3", "rb") as f:
    audio = client.files.upload(file=f, config={"mime_type": "audio/mpeg"})

res = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[audio, "この音声を日本語で文字起こししてください"],
)
print(res.text)

つまずいたこと3つと、その解決

1. 長い録音で、同じ言葉を延々と繰り返し始めた

137分の講演を丸ごと渡したところ、途中から「(間)」のような同じ語を延々と出力し続けるようになりました。

解決:音声を約10分ごとに分割し、1区間ずつ文字起こしするようにしました。保険として、同じ行が連続したら2回までに縮める処理も入れています。

2. 無料枠の1日の上限で止まってしまう

長い録音だと区間の数が多く、無料枠の回数制限に当たることがありました。

解決:1区間終わるごとに、結果をファイルに保存するようにしました。上限に達したらエラーで落ちるのではなく「ここで止めます」と表示して止まり、次に実行したときは保存済みの区間を飛ばして続きから再開します。

3. 何度も実行すると、Notionに同じページが重複して登録される

解決:Notionに登録できたら、横に「登録済み」の印ファイルを作り、次回は印があるものを飛ばすようにしました。

3つに共通する考え方

振り返ると、3つとも同じ設計で解決していました。**「終わった段階ごとに印のファイルを残して、次回は飛ばす」**です。

段階 印 効果
文字起こし全体 Markdownがある 同じ音声を二度処理しない
区間ごと 区間のテキストがある 途中で止まっても再開できる
Notion登録 登録済みの印がある 二重登録しない

このおかげで、何回 run.bat を押しても壊れない作りになりました。

結果

  • Plaudの要約と同等以上の内容が残ることを、答え合わせで確認できた(合格基準を達成)
  • 追加の費用は0円(Gemini APIの無料枠の範囲)
  • 企画から運用開始まで2日

AIとの役割分担

コードはAI(Claude)と一緒に書きました。自分が担当したのは、何に困っているか(問い)を決めること、合格基準を決めること、実際の録音で答え合わせして直すことです。作ったあとは、コードを読み直して、なぜこの作りなのかを自分で説明できるところまで確認しました。

注意点:無料枠に機密を含む録音は流さない

Gemini APIの無料枠では、送信した内容と回答がGoogleのサービス改善に使われ、人間のレビュアーが確認する場合があると利用規約に書かれています。規約でも、無料枠には機密情報や個人情報を送らないよう求められています。

そのため、このツールは講演やセミナーなど、公開された内容の録音向けと割り切って使っています。仕事の会議など機密を含む録音を扱う場合は、有料枠(入力がサービス改善に使われない)や、会社で許可されたツールを使ってください。

参考:Gemini API 追加利用規約

まとめ

「会議の内容を忘れる」という自分の困りごとを、自分でツールを作って解決できました。大きなシステムでなくても、困りごとを1つ選んで、合格基準を決めて、小さく作って試す。それだけで、生活の不便は自分で直せると実感しました。

今後やりたいこと

  • 1週間ふだん通りに使って、面倒だったところだけ直す
  • mp3以外(m4aなど)の録音も分割できるようにする
  • コードをGitHubで公開する
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?