公開済みの IIIF Curation 群を自前の IIIF Curation Platform に一括登録して横断検索する
Web で公開済みの IIIF Curation 群を、自前の IIIF Curation Platform(ICP)にまとめて登録し横断検索できるようにする手順。JSONkeeper への POST に必要な X-Access-Token と Accept ヘッダ、Canvas Indexer の大量クロール時のタイムアウト回避を扱う。
Web で公開済みの IIIF Curation 群を、自前の IIIF Curation Platform(ICP)にまとめて登録し横断検索できるようにする手順。JSONkeeper への POST に必要な X-Access-Token と Accept ヘッダ、Canvas Indexer の大量クロール時のタイムアウト回避を扱う。
CODH の IIIF Curation Platform を macOS(Apple Silicon)のローカルに Docker で一式構築する手順。BSD sed の非互換、ポート競合、Docker のディスク不足、localhost の名前解決、Canvas Indexer の SQLAlchemy 2.0 対応など、手元で動かす際に引っかかる macOS 固有のつまずきを具体的に埋める。
暫定ミラー codh-mirror について、前回記事では『認証・保存バックエンドは結局動かない』としていたところを、後から方針転換して Firebase 認証と JSONkeeper 互換 API (Cloudflare Workers + D1 / PythonAnywhere の二系統) を実際に動かすまでの記録です。Authorized domains 設定、FirebaseUI 3.x の signInFlow リダイレクト落とし穴、authFirebase.js の差し替え、Curation Manager の外部リンク相対化、5 箇所の curationJsonExportUrl 書き換えなど、codh-mirror リポジトリ側で行った変更を 1 本にまとめます。
IIIF Curation Viewer のキュレーション保存先である JSONkeeper を、もとの Flask 実装ではなく Cloudflare Workers + D1 で書き直した記録です。Hono + jose による Firebase ID トークンの検証 (Admin SDK 不要・サービスアカウント鍵不要)、D1 SQLite スキーマ設計、JSON-LD @id 書き換えのトップレベル+ネストノード対応、Activity Stream の最小実装、CORS と Viewer 互換ヘッダ、wrangler によるデプロイ runbook、そしてアップストリーム JSONkeeper との差分一覧までを 1 本にまとめています。
IIIF Curation Viewer の保存先 (JSONkeeper, Flask) を PythonAnywhere 無料プラン (Beginner) に自前で立てる手順記録です。ブラウザ操作はトークン発行とコンソールアタッチの 2 回だけに抑え、残りすべてを HTTP API + curl で完結させます。Flask 1.0 / apscheduler 3.5 の現代 Python 非互換、Firebase Admin SDK のサービスアカウント鍵運用、CPU 100 秒/日制約、CORS、Viewer 側 (codh-mirror) の差し替えまで一通り。