古橋研究室公式のMedium (medium.com/furuhashilab) に投稿された記事を、GitHub Actionsで定期的にMarkdown形式でアーカイブし、GitHub Pagesで公開するサービス。
- トラックA(自動・継続): GitHub ActionsがMedium公式RSSフィードを毎日ポーリングし、新着・更新記事を自動でMarkdown化して
posts/に追加、画像はassets/images/にダウンロードして保存する - トラックB(半自動・初回のみ): RSSは最新10件までしか取得できないMedium側の制約があるため、過去記事はユーザーの実ブラウザセッション(Chrome DevToolsコンソール)で収集したデータを取り込んでバックフィルする
詳細な設計・技術的制約の調査結果は SPEC.md を参照。
pip install -r requirements.txt
# 新着記事の取得・Markdown化(RSSベース、トラックA)
python scripts/archive.py
# GitHub Pages用の記事一覧(data/index.json)を再生成
python scripts/build_index.pyGitHub Actions (.github/workflows/archive.yml) がこの2ステップを毎日自動実行し、差分があればコミット・pushする。
RSSでは取得できない過去記事は、実ブラウザセッションで収集する(GitHub Actionsからは実行不可 — Medium側のボット対策でブロックされるため。詳細は SPEC.md 参照)。
- Chromeで https://medium.com/furuhashilab/all を開く
- DevTools(Cmd+Option+J)> Console を開き、
scripts/browser_backfill.jsの中身を丸ごと貼り付けて実行 - 画面右下にカウンターが出るので、マウス/トラックパッドで実際にページを下にスクロールし続ける(無限スクロールの読み込みは本物の操作でないと発火しないため、スクリプトによる自動スクロールはできない)。カウンターが15〜20秒増えなくなったら最古の記事まで到達
- コンソールで
downloadPostList()を実行(記事一覧のJSONをダウンロード) - コンソールで
await fetchAllContent()を実行(全記事の本文を取得してJSONをダウンロード。数百記事あると数分かかる) - ダウンロードした
furuhashilab_full_content.jsonを使って:python scripts/import_export.py /path/to/furuhashilab_full_content.json python scripts/build_index.py
- コード: MIT License (LICENSE)
- アーカイブされた記事本文・画像: 原則 CC BY 4.0(詳細は CONTENT_LICENSE.md)。原文は各記事frontmatterの
medium_urlから参照可能 - 記事データの取得元: medium.com/furuhashilab 公式RSSフィード
青山学院大学 地球社会共生学部 古橋研究室 (Furuhashi Lab)