Repository navigation
Design Philosophy
G医t(G-I-T)は、医師であるMatanuki氏が、医療・薬事・学会関連サイトの「本当に必要な更新」を正確に捉えるために設計・運用している個人プロジェクトです。
現代のウェブサイトは装飾や動的要素が多く、単純な更新チェックではノイズに埋もれがちです。そこで氏は、website-stalkerをベースに、日本特有の文字コード(Shift_JISなど)や改行コードの揺らぎによる誤検知を抑える独自の修正を加え、HTMLのサニタイズを組み合わせて「意味のあるコンテンツの変化」だけを抽出する仕組みを構築しました。変化はGitでURLごとに厳密に履歴管理され、Google Gemini APIを用いて人間が理解しやすい日本語で解説されます。
さらに、更新を検知したページはWayback Machineにも保存し、公式サイト側で情報が消えても過去の状態を参照できるようにしています。こうした「いつ・何が・どう変わったか」を検証可能な形で蓄積する取り組みは、日本の医療情報の歴史的資料としての価値を持つ可能性を秘めています。特に構造化データとしてSupabaseに残されることで、他の研究者が政策やガイドラインの変遷を解析する基盤となり得る点も、このプロジェクトの意義の一つです。
営利を目的とせずオープンに公開されている点も含め、現場の実情に根ざした実用的なツールとして設計されたものです。
実装から読み取れる、判断の拠りどころを書き出します。
更新通知の価値は、偽の更新が少ないことで決まります。そのために、取得したページを次の順で整えてから保存し、比較します。
-
css_select: body… 本文だけを取り出す -
css_remove…script/style/noscript/iframeを除く -
ignore(サイトごと)… セッションIDなど、毎回変わる文字列を消す(設定リファレンス) -
html_sanitize/html_prettify… 見た目だけの違いを均す
文字コードや改行コードの揺らぎは、website-stalker のフォーク側で吸収します。
- 1サイトの1回の実行結果が、1コミット(
Update <slug>)です。 - 記録した後のコミットは書き換えません(
--amendをしません)。コミットのハッシュを、DB・ダッシュボード・差分ページの共通の鍵にしているためです。 - サイト別の履歴は
git log -- sites/<slug>/で取り出せます。
更新を検知したページは、Internet Archive(Wayback Machine)にも保存します。ページに載っていた文書(PDF など)も、別のワーカーが時間をかけて保存します。
- AIの要約は、誤りや抜けを含むことがあります。要約の隣に、必ず差分へのリンクを置きます。
- 読者は、非専門家ではなく、医療行政・臨床・薬剤・病院ITの専門的な読者を想定しています。要約は事実だけを短く書き、用語の解説や影響の推測は書かせません。
- 初回取得(比べる相手がない状態)には要約を付けません。
- 取得したページの内容は信頼できない入力として扱い、指示とデータを分けて AI に渡します。
外部サービス(Gemini、Internet Archive、Supabase)の失敗は、そのサイト・その件だけの失敗として扱います。
- Gemini の一時的なエラーは、間隔を空けて自動で再試行します。失敗した要約は、後の実行で作り直します。
- Wayback への保存は、パイプラインとは別の定期ジョブで、1件ずつ間隔を空けて行います(レート制限対策)。
- ダッシュボードは、Supabase が取得できないときに、公開中のページを空で上書きしません。
GitHub Actions で処理し、GitHub Pages で配信します。読者ごとの設定(フォロー)は、読者のブラウザの中(localStorage)にだけ保存し、サーバーには送りません。
読者のお名前やメールアドレスはお尋ねせず、ログインもありません。「フォロー」の選択は、読者のブラウザの中にだけ保存し、サーバーには送りません。
一方で、サイトを改善するために、アクセス解析を使います。Google アナリティクス 4 と Cloudflare Web Analytics です(内容と停止の方法は、サイトのプライバシーとアクセス解析にあります)。
- 既定で有効、いつでも停止できる(オプトアウト)方式です。ブラウザの Do Not Track / Global Privacy Control の設定も尊重します。
-
共有リンクのフォロー設定(
?follow=…)は、どちらにも送りません。 読者の関心そのものだからです。 - 2つを使う理由:Google アナリティクスは、流入元や外部リンクのクリックなど、詳しい分析のため。Cloudflare Web Analytics は、Cookie を使わない閲覧数の集計と、ページの表示性能を知るためです。
- どちらも、ID を設定したときだけページに組み込まれます(未設定なら、タグは出力されません)。
Copyright 2026- Matanuki & MATANUKI