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?

【元市議が挑む】議事録をNotebookLM/Obsidianで活用するためのMarkdown変換スクリプト

0
Posted at

【元市議が挑む】議事録を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用に変換するスクリプトを作ることを考えています。

#地方自治 #議事録分析 #名取市 #地方政治 #日本共産党

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?