【元市議が挑む】議事録をNotebookLM/Obsidianで活用するためのMarkdown変換スクリプト
1.はじめに自己紹介など
私は宮城県名取市の元市議会議員(党派は日本共産党)です。名取市は、仙台市のすぐ南側に隣接し、仙台空港のある、自然と利便性が調和した街です。
2024年の改選時に落選し、現在は福祉系の会社で支援員として働きながら、事務作業の効率化やAI活用に取り組んでいます。
そんな私ですが、議員在職中から「膨大な議事録を効率よく分析できないか?」と考えてきました。2019年頃にこちらの記事(Qiita)を見つけ、見よう見まねでPythonを学び始めましたが、当時は挫折と放置を繰り返し、気づけば2026年になってしまいました・・・。
そんな状況をひっくり返したのが、昨今のAI技術の発展です。
「AIに聞けばコードが書ける」「NotebookLMのような強力な分析ツールがある」という現代の環境のおかげで、視点を変えて実現に至りました。
ちなみに、最終的には**KH Coder(計量テキスト分析ソフト)**での分析も視野に入れていますが、まずは「AIで扱いやすくすること」を最優先に開発しました。
2.なにを作ったのか?
テキスト形式の議事録から不要なデータを削除し、NotebookLMやObsidianで扱いやすいMarkdown形式に変換するスクリプトです。
各自治体議会の議事録サイトのドメインが dbsr.jp であれば、正規表現等を修正すれば使えるのではと考えています(未検証ですが)。
- 動作環境: VS Code + Jupyter Notebook(拡張機能)
-
開発環境: CachyOS + Docker desktop上のPythonコンテナ
- ※コンテナ環境ですが、PythonとJupyterが動く環境ならWindows/Mac問わず動作すると思います。
変換イメージ(Before / After)
議事録サイトから全文ダウンロードで保存した、読みづらいテキストデータを構造化します。
Before(元のテキスト)
4:
◯議長(○○ ○○) 御異議なしと認めます。よって、会期は29日間と決定いたしました。
─────────────────────○──────────────────────
諸般の報告
...
─────────────────────○──────────────────────
日程第3 議案第4号から
日程第58 議案第59号まで
After(変換後のMarkdown)
**議長(○○ ○○)**: 御異議なしと認めます。よって、会期は29日間と決定いたしました。
**議長(○○ ○○)**: この際、諸般の報告をいたします。
(中略)
## 日程第3 議案第4号から/日程第58 議案第59号まで
**議長(○○ ○○)**: 次、日程第3 議案第4号から日程第58 議案第59号までを一括上程いたします。
3.GitHubリポジトリ
https://github.com/Sai-Hiromi-eee/Gikai_Gijiroku_Conv
4.開発の経緯・工夫した点
AI(Gemini & Claude)の二刀流
平日は会社員なので、朝から晩まで開発というわけにもいきません。夕方、帰宅してからの数時間で今までの失敗を整理し、それを数ヶ月重ねてきました。。
そこを土台にして、コードの作成をAIに全面的に頼りました。というか、AIがいなければ作れませんでした。
- Gemini: 全体的な構造の相談や、NotebookLMとの相性確認。
- Claude: 複雑なロジックや正規表現のデバッグや、リファクタリング。
この2つを組み合わせることで、無料枠をギリギリまで活用しながら、初心者でも動作するコードを組み上げることができました。
なぜJupyter Notebookなのか
あえて純粋なPythonスクリプト(.py)ではなく、Jupyter Notebook(.ipynb)形式にしたのは、**「1ステップずつ実行結果を確認しながらデバッグしたかったから」**です。今の自分には、この「目に見える安心感」が必要でした。
はじめてpythonに触れたのが、jupyter環境だったのも理由の一つです。
会議体ごとの分離
「本会議」と「財務常任委員会」でスクリプトを分けました。会議によって議論の構成やルールが異なるため、最初から分けておくことで変換後の分析精度を高めています。
5.苦労したところ(初心者だからハマったところ)
正規表現という壁
議員や職員の名前を抽出するための正規表現には苦労しました。議事録は「紙」の配布を前提としているため、名前の間の空白がランダムだったり、改ページによるノイズが入っていたりと、なかなかの難物でした。
ノイズの適切な分離(発言取消への対応)
議会では不適切な発言などが取消される際、議事録では「アンダーバー」で表示されますが、そのまま消すと文脈が壊れます。これを**「(発言取消)」という文字列に置き換える**ことで、AIが正しく内容を解釈できるように工夫しました。
この辺は、議員だったという経験から処理を思いついています。
6.まとめ・今後の展望
地方政治のリアルは議事録の中にこそあります。このツールを通じて、誰でも手軽に議事録を分析し、政治に興味を持つきっかけを作っていければと考えています。
次は、出席者名簿や各種委員会のPDF議事録の変換にも取り組んでいくことと、KHCoder用に変換するスクリプトを作ることを考えています。
#地方自治 #議事録分析 #名取市 #地方政治 #日本共産党