漫画サイトをスクレイピングして RSS フィードを生成するツール。
🔗 フィード一覧: https://shishi.github.io/rss_generator/
- JavaScript レンダリングが必要なサイトに対応(Playwright 使用)
- YAML 設定ファイルでサイトを管理
- GitHub Actions で毎日自動実行
- GitHub Pages で RSS フィードをホスティング
- Ruby 3.3+
- Node.js 22+
- Chromium(ローカル実行時)
# 開発環境に入る
nix develop
# 依存関係をインストール
bundle install# Ruby 依存関係
bundle install
# Playwright ブラウザ
npx playwright install chromium# Nix 環境では xvfb-run が必要(WSL2/headless 環境)
xvfb-run bundle exec ruby bin/generate
# GUI 環境がある場合
bundle exec ruby bin/generate
# カスタム設定ファイル
bin/generate path/to/config.yml
# カスタム出力先
bin/generate config/sites.yml output_dirbin/generate --helpconfig/sites.yml にサイト情報を記載:
sites:
- name: "漫画タイトル"
id: "manga-id" # 出力ファイル名(manga-id.xml)
url: "https://example.com/manga/1"
selectors:
episode_list: ".episode-list li" # エピソード一覧のセレクター
episode_title: ".title" # タイトルのセレクター
episode_url: "a" # リンクのセレクター
episode_date: ".date" # 日付のセレクター
wait_for: ".episode-list" # ページ読み込み完了を判定するセレクターoutput/*.xml- 各サイトの RSS フィードoutput/index.html- フィード一覧ページ
毎日 18:00 JST に自動実行され、RSS フィードを生成して GitHub Pages に自動デプロイ。
手動実行:Actions タブから "Run workflow" をクリック。
- Settings → Pages
- Source: "GitHub Actions"
- ワークフローが自動的に
output/ディレクトリをデプロイします
bundle exec rspec.
├── bin/
│ └── generate # エントリーポイント
├── config/
│ └── sites.yml # サイト設定
├── docs/ # 設計ドキュメント
├── output/ # 生成された RSS フィード(GitHub Pages)
├── lib/
│ ├── feed_builder.rb # RSS XML 生成
│ ├── index_builder.rb # index.html 生成
│ ├── rss_generator.rb # メイン処理
│ └── scraper.rb # Playwright スクレイピング
├── spec/ # テスト
├── flake.nix # Nix 開発環境
└── Gemfile
MIT