Githubトレンドリポジトリ自動分析、解説記事生成システム
GitHubのトレンドリポジトリを自動収集し、解説記事の執筆から画像生成、CMS投稿、SNS発信までを一貫して行う自律型メディア運営システムです。READMEの高度な分析による高品質な日本語記事の生成に加え、週次のSEOリライトやプロンプト自動最適化といった自己改善機能を備え、人間の介入を最小限に抑えた「完全自動運営」を実現します。
技術スタックにはAstro、Strapi、PostgreSQL、Cloudflareを採用し、月額2,000円前後の低コスト運用を可能にしています。エンジニア向けの技術情報発信による集客と、AIツールのアフィリエイト収益化を組み合わせたメディアビジネスを、24時間365日エージェントが自動で回し続けるための実践的なソリューションです。
⬇ ダウンロード(repo-lab-main.zip / 0.4 MB)
repo-lab
GitHub Trending JP — GitHub注目リポジトリを自動収集・記事化し、AIツールアフィリエイトと組み合わせて収益化する HOOTL(Human Out Of The Loop)自律運営メディア。
---
概要
日本語向けの GitHub トレンド解説メディアを全自動で運営するシステム。
Spinela ワークフローエンジンが 3 時間毎に GitHub Trending を収集 → 記事生成 → CMS 投稿するパイプラインを実行し続ける。記事品質の自己改善・プロンプト自動最適化・SEO リライトまで含め、人間の介入なしで運営を継続することを目標としている。
サイト: repo-lab.com
ビジネスモデル: GitHub 分析コンテンツ(集客)+ AIツールアフィリエイト(収益)
---
システム構成
[GitHub API]
│ repo-collector(1日2回)
▼
[PostgreSQL / VPS] ←── candidate_queue(記事化候補プール)
│ candidate-selector(3時間毎・chain起点)
▼
[article-writer] ── GitHub README分析・記事生成・サムネイル生成(Flux.2[klein])
│ chain(articles_ready==true)
▼
[article-poster] ── Strapi v5 投稿 → CF Pages 再ビルドトリガー
│
▼
[Cloudflare Pages]
repo-lab.com(Astro)
---
技術スタック
| 領域 | 技術 |
|---|---|
| フロントエンド | Astro v6 + Tailwind CSS v4 |
| ホスティング | Cloudflare Pages(Git 連携 + Deploy Hook) |
| CMS / API | Strapi v5(ConoHa VPS・api.repo-lab.com) |
| DB | PostgreSQL(VPS ローカル・スキーマ分離) |
| ストレージ | Cloudflare R2(images.repo-lab.com) |
| パイプライン | Spinela(CodeLodis WF エンジン)on VPS |
| 画像生成 | Flux.2[klein](Black Forest Labs API) |
| VPS | ConoHa 4GB(hootl-prod-01 / Ubuntu) |
| プロセス管理 | PM2(Strapi + Spinela 常駐) |
---
主要コンポーネント
site/ — Astroフロントエンド
Cloudflare Pages でホストされる静的サイト。Strapi REST API からデータを取得して記事一覧・詳細・ツール解説ページを表示する。
site/
├── src/pages/
│ ├── index.astro # トップ(リポジトリ記事一覧)
│ ├── articles/[slug].astro # 記事詳細
│ ├── tools/[slug].astro # AIツール解説(アフィリ導線)
│ ├── categories/[slug].astro
│ └── diagnose.astro # 診断ページ
├── src/components/ # RelatedArticles など
└── wrangler.toml # CF Pages 設定(GA4 ID等)
repo-lab/ — Spinelaパイプライン
VPS 上で動作するエージェント群と WF 定義ファイル。rlctl CLI でエージェントを管理する。
repo-lab/
├── workflow.yaml # メイン 3WF 定義(candidate-selector / article-writer / article-poster)
├── workflows/ # サブシステム WF(品質改善・SEO・X 投稿等)
├── agents/
│ ├── candidate-selector/ # Step1: 記事化候補を candidate_queue から選定
│ ├── article-writer/ # Step2: README 分析 → 記事生成 → 画像生成
│ ├── article-poster/ # Step3: Strapi 投稿 → CF Pages 再ビルド
│ ├── repo-collector/ # GitHub Trending 収集(1日2回)
│ ├── quality-improver/ # 低スコア記事の自動リライト(週次)
│ ├── seo-improver/ # GSC/GA4 データ活用の SEO 改善(週次)
│ ├── prompt-improver/ # 品質傾向分析 → プロンプト自動最適化(週次)
│ ├── x-post-scheduler/ # X(Twitter)自動投稿
│ ├── link-checker/ # 記事内リンク死活確認(週次)
│ └── db-backup/ # PostgreSQL バックアップ → R2(日次)
├── db/ # DB マイグレーション SQL
└── templates/article.md # 記事生成テンプレート
VPS(ConoHa / hootl-prod-01)
| サービス | PM2 名 | 用途 |
|---|---|---|
| Strapi v5 | strapi-repo-lab | CMS API(api.repo-lab.com) |
| Spinela | — | WF 実行エンジン |
| PostgreSQL | — | DB(strapi_hootl) |
---
ワークフロー概要
メインパイプライン(3時間毎・自動)
candidate-selector
└─ candidate_queue から未記事化リポジトリを選定
↓ has_candidates == true
article-writer
└─ GitHub README 分析 → 記事本文生成 → Flux.2[klein] でサムネイル生成
↓ articles_ready == true
article-poster
└─ Strapi v5 に投稿 → CF Pages Deploy Hook で再ビルド → DB 記録
自律改善パイプライン(週次・自動)
| WF | スケジュール | 内容 |
|---|---|---|
| quality-improver | 毎週月曜 UTC 3:00 | スコア < 70 の記事を自動リライト |
| seo-improver | 週次 | GSC/GA4 データ → 低 CTR 記事のタイトル/meta 改善 |
| prompt-improver | 毎週日曜 UTC 8:00 | 品質データ集計 → プロンプト改善提案 → 自動適用 + ロールバック |
---
セットアップ(概要)
前提条件
- ConoHa VPS(4GB)上に以下が稼働していること:
- PostgreSQL(
strapi_hootlDB) - Strapi v5(PM2 管理・
api.repo-lab.com) - Spinela(CodeLodis WF エンジン)
- Cloudflare Pages プロジェクト(
repo-lab.com) - Cloudflare R2 バケット(
repo-lab-images/repo-lab-backups)
環境変数設定
cd repo-lab/
cp .env.example .env
# .env を編集して各 API キー・接続情報を設定
# 詳細: docs/infra/env-vars.md
主要な設定項目:
| 変数 | 説明 |
|---|---|
POSTGRES_DSN | PostgreSQL 接続文字列 |
GITHUB_TOKEN | GitHub PAT(public_repo 読み取り) |
STRAPI_API_URL / STRAPI_API_TOKEN | Strapi CMS 接続情報 |
CF_DEPLOY_HOOK_URL | Cloudflare Pages デプロイフック |
R2_ACCESS_KEY / R2_SECRET_KEY | R2 認証情報 |
BFL_API_KEY | Flux.2[klein] 画像生成 API |
WF 登録・起動
# Spinela に WF を登録
lodisctl workflow register repo-lab/workflow.yaml
lodisctl workflow register repo-lab/workflows/quality-improver.yaml
# ... 他の workflows/ も同様
# 手動起動(動作確認)
lodisctl workflow run "github-trending::candidate-selector"
# 実行状態確認
lodisctl workflow status <run_id>
サイト(Astro)ローカル確認
cd site/
npm install
npm run dev # http://localhost:4321
npm run build # 静的ビルド(CF Pages にデプロイ)
---
現在の稼働状況
| コンポーネント | 状態 | 備考 |
|---|---|---|
| 記事生成 WF(3WF チェーン) | ✅ 稼働中 | 3時間毎・公開記事 22件・品質合格率 100% |
| Astro サイト | ✅ 稼働中 | repo-lab.com |
| repo-collector | ✅ 稼働中 | 1日2回(UTC 6:00 / 18:00) |
| db-backup | ✅ 稼働中 | JST 02:00 |
| quality-improver | ✅ 週次登録済み | 稼働確認要 |
| seo-improver | ⚠️ 実装済み | Google API SA 設定待ち |
| x-post-scheduler | ⚠️ 登録済み | X API KEY 未取得のため停止中 |
| アフィリリンク | ❌ 審査待ち | 5件 #pending(DO / Udemy / Perplexity 等) |
---
ドキュメント
| ドキュメント | 内容 |
|---|---|
| docs/wbs.md | 実装計画・WBS・現状サマリ |
| docs/infra/infrastructure-design.md | インフラ構成設計 |
| docs/infra/env-vars.md | 環境変数一覧 |
| docs/workflow/pipeline/spinela-pipelines.md | Spinela パイプライン設計 |
| docs/workflow/pipeline/article-lifecycle-wf-design.md | 記事ライフサイクル WF 設計 |
| repo-lab/README.md | Spinela パイプライン詳細 |
---
月次コスト(参考)
| 項目 | 費用 |
|---|---|
| ConoHa VPS 4GB | ≈¥891〜¥1,144 |
| ドメイン(repo-lab.com) | ≈¥83 |
| Flux.2[klein](月 240 枚) | ≈¥540 |
| Cloudflare Pages / R2 | ¥0 |
| テキスト生成(Claude Code サブスク) | ¥0 |
| 合計 | ≈¥1,514〜¥1,767 |