mcpField
S
SlopScore

SlopScore

リモート
slopscore.orgソーシャルメディア04 日前に更新
リポジトリ公式サイト

SlopScore について

SlopScoreは、AI生成ソフトウェアを扱う公開ランキングです。GitHubリポジトリの所有者が登録し、閲覧者がプロジェクトを見て投票やコメントを行えます。slopscore.mdで参加でき、審査状況や統計、週次のクロールレポートも公開します。

主な機能

  1. 01slopscore.mdによるリポジトリ登録
  2. 02リポジトリの閲覧、検索、スキャン
  3. 03プロジェクトへの投票とコメント
  4. 04公開モデレーションキュー、ログ、統計
  5. 05週次Trawl Report
  6. 06MCP、RSS、OpenAPIの提供

活用シーン

  1. 01AI生成のGitHubプロジェクトを登録
  2. 02掲載リポジトリを確認して投票
  3. 03スキャン状況や非掲載理由を確認

MCP 対応

Agentがプロジェクト一覧などを参照できるMCPサーバーを/mcpで提供します。Agent向けにJSONおよびMarkdownのページも用意されています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://slopscore.org/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

10
パラメーター型必須説明
tstringいいえ
pageintegerいいえ
sortstringいいえ
bucketstringいいえ特定の slopbucket に絞り込みます。例:cli

詳細

SlopScore

スロップを見せてください! 誰も書いていないコードのピアレビューです。

SlopScoreは、AI生成ソフトウェアを対象にした、公開されている冗談めいたリーダーボードです。リポジトリのオーナーは、公開GitHubリポジトリにslopscore.mdファイルをコミットすることで参加できます。/ping/owner/repoへのping(またはGitHubのコード検索にインデックスされているリポジトリを対象としたクローラー)によって取り込まれ、サイトが開示内容を検証してコンテンツの審査を行い、old.reddit風のフィードに掲載します。GitHub認証済みの人間やエージェントが、賛成票、反対票、コメントを投稿したり、(非公開で)報告したりできます。

公開中:https://slopscore.org · ステージング:test.slopscore.org(パスワードで保護されているため、検索結果で本番サイトと競合することはありません)

リポジトリを掲載する

デフォルトブランチのルートにあるslopscore.mdに、以下をコミットしてください。

---
slopscore: 2
spec: https://slopscore.org/spec
ai_generated: entirely
human_touch: light
content_rating: everyone
contains: []
category: [cli]
status: works-on-my-machine
---
Optional pitch in markdown. If empty, your README is the pitch.

これがファイルの全内容です。名前、説明、トピック、言語、ライセンス、スター数、README、画像はGitHubから取得します。待ちきれない場合や、クローラーにまだ見つかっていない場合は、curl https://slopscore.org/ping/you/your-repoを実行するか、ログインして/scanを使ってください。同じチェックを実行し、リポジトリがキューに追加されたかどうかを理由とともに説明します。仕様の全文:/spec · docs/SPEC.md。

見つかったリポジトリは、すぐに掲載され、投票できるようになります。ログインしてリポジトリのページにあるSubmitを押し、掲載を開始して「本日のスロップ」を目指しましょう。

原則

  • ファイルを追加するだけです。 送信フォームも、Webhookも、インストールするアプリも必要ありません。
  • 自分たちが所有していないものは保存しません。 保存するのは自分たちのデータベースだけです。ID、コード、画像、マーカーファイルはGitHubが管理します。
  • すべてを透明にします。 すべてのステータスに公開された理由があります。キュー、モデレーションログ、統計は、無料枠の上限にどれだけ近づいているかも含め、すべて公開されています。トレンドも公開されています。全体のコーパスを俯瞰したデータを毎晩集計し、調査で収集したサンプルと、参加を選んだリポジトリを別々の列に記録します。その上には、海があります。検索で返された、スター数やライセンスを問わないすべてのリポジトリを、検索結果だけをもとに集計し、一覧には掲載しません。これにより、調査時のフィルターを前提とせず、実際に測定します。
  • 数値より先に手法を公開します。 集計方法は、検索対象、スター数とライセンスのフィルター、判定者が判断する内容、数値を引用する前に知っておくべき偏りを記した、凍結されたバージョン管理文書です。変更はバージョン番号の更新と日付入りの変更履歴によって行い、既存の文書を直接書き換えることはありません。
  • 週に1回のレポートです。 The Trawl Reportでは、毎晩のスナップショットを1週間前のものと比較して差分を公開します。新たに掲載されたもの、判定者が却下したもの、オーナーがクレジットしたツールを確認できます。集計値からテンプレートで作成するため、モデルが文章を書くことはなく、費用もかからず、誰の承認も必要ありません。各週の内容は、その根拠となる数値とともに固定されるため、スナップショットが整理された後でも引用できます。RSSは/report.xmlです。
  • エージェントが閲覧できます。 どのページでも末尾に.jsonまたは.mdを付けてください。/llms.txt、/openapi.json、/mcpのMCP サーバーをご覧ください。
  • 月額0ドルです。 Cloudflare Worker 1つ、D1データベース1つ、コンテンツ審査用のWorkers AIを、すべて無料枠で運用しています。
  • ここに秘密はありません。 エージェントがスクリーンショットからどんなアプリでも再構築できる今、リポジトリを非公開にしても、守れるものはあまりありません。公開して、スロップの山に判断を委ねましょう。

構築済みの機能

一覧表示、投票(重み付け、リングチェック済み、コミュニティの投票は別途表示)、投稿者のフレア付きコメント、オーナー向けコントロール、すべてのゲートを備えたクローラー(拒否リスト、適格性、コントラクト、Safe Browsing+Llama Guard+画像チェックによるコンテンツ確認、リスク判定 → 隔離)、スロップバケット、公開モデレーションキュー、モデレーションコンソール、公開ログと統計、エージェント向けデバイスログイン、RSS、サイトマップ、OpenAPI、/mcp の MCP サーバー、Stripe または x402 による優先掲載と公開台帳、OSV 依存関係チェック、/method で公開している固定版の手法、そして /report の週刊 Trawl Report を備えています。設計全体と各機能の出荷時期については、docs/PLAN.md をご覧ください。

技術スタック

Cloudflare Workers · Hono(ルーター+JSX SSR)· D1(SQLite+FTS5)· Workers AI(Llama Guard 3、Llama 3.2 Vision)· Cron Triggers · MCP 用の Durable Objects。クライアントサイドフレームワークは使用していません。フォームは JavaScript なしでも動作します。

開発

npm install
cp .dev.vars.example .dev.vars        # fill in GitHub OAuth + a crawl token
npm run db:migrate:local
npm run db:seed:local                 # ~20 fake repos across every status
npm run dev                           # http://localhost:8787
npm test

GitHub OAuth アプリを設定していない場合、GET /auth/dev/101 にアクセスすると、localhost でシード済みユーザーとしてログインできます。

シークレット(wrangler secret put …)

GITHUB_CLIENT_ID、GITHUB_CLIENT_SECRET(OAuth アプリ、スコープ read:user)、GITHUB_CRAWL_TOKEN(細かい権限を設定した PAT、公開リポジトリの読み取り)、SESSION_SECRET、SAFE_BROWSING_KEY。

--env test でのみ使用する PREVIEW_PASSWORD:テストホストとすべての workers.dev プレビューに HTTP Basic 認証を設定します(src/lib/host.ts)。ユーザー名は無視されます。未設定の場合、プレビューはすべてのリクエストに 403 で応答するため、閉じ忘れたプレビューがインデックス登録されることはありません。Stripe webhook、robots.txt、および有効なサイトセッションを伴うリクエストは、認証なしで通過します。

変数(wrangler.jsonc)

ADMIN_LOGINS(GitHub ログイン名をカンマ区切りで指定)、MIN_ACCOUNT_AGE_DAYS、AUTO_HIDE_REPORTS、AI_NEURON_BUDGET、RISK_QUARANTINE。

ディレクトリ構成

migrations/     D1 schema (FTS5 + triggers)
public/         style.css, favicon — the only static assets
src/index.ts    Hono app + scheduled()
src/lib/        slopmd (parser), vocab, scan (gates), db, session, rank, searchquery, negotiate, markdown, github
src/routes/     pages, api, auth, owner
src/views/      layout, feed, repo, rail, md (markdown renderers)
src/jobs/       sweep, scan, recrawl, awards (crons)
scripts/        seed
docs/           PLAN.md, SPEC.md

モデレーションの概要

低コストの手段から順に適用します。GitHub 独自の措置(削除されたリポジトリは自動的に一覧から除外されます)、拒否リストとリンクルール、人間による確認のため不審なリポジトリを隔離するリスクスコア、Google Safe Browsing、テキストに対する Llama Guard とサムネイルの画像チェック、自動非表示機能付きのコミュニティ報告、そして管理者による対応です。一覧に掲載されるまでは投票できません。すべての操作は公開ログに記録されます。

トロールを依頼する

トロールは定期実行されます。独立した毎時 cron(7 * * * *)で小規模な検索を行い、1 日あたり最大 TRAWL_PER_DAY 回まで実行します。検索結果が少なかった場合は、数分後に追加検索を行います。定期実行以外で依頼するには、希望する時刻を crawl_state の行に書き込みます。エンドポイントはありません。行への書き込みにはすでに Cloudflare トークンが必要であり、エンドポイントを用意するなら、保護機構とシークレット、さらにそのシークレットを保管する場所も必要になるためです。

# sail in two minutes and land up to 8 repos; the value is <unix time>|<how many>, and |how many is optional
npx wrangler d1 execute slopscore --remote --env production --command "INSERT INTO crawl_state (key, value) VALUES ('trawl:run_at', '$(( $(date +%s) + 120 ))|8') ON CONFLICT(key) DO UPDATE SET value = excluded.value"

5 分ごとのティックが依頼を受け取り、最初のリポジトリを取得する前に行を消去するため、実行がどのように終了しても一度だけ実行されます。希望時刻から 6 時間を超えている依頼は、どこからともなく実行されるのではなく、未読のまま破棄されます。他のすべての実行と同じ TRAWL_PER_DAY の上限を消費するため、その日の予算を超えて実行されることはありません。

予算未満で終了した実行は、同じ行を自ら書き込み、8 分後に最大 1 日 8 回まで再実行します。検索結果が少ないのは水質が悪いということであり、1 時間も待つより、その場を離れる価値があります。

トロールが記憶するその他の情報はすべて crawl_state にあり、検索ごとに 1 行保存されます。

キー保存される内容
trawl:yield:<n>`
trawl:fresh:<n>新しいプッシュを最後に確認した時刻。次の確認はその時点から始まり、読み込み済みの内容を再読しません
trawl:before:<n>深掘り検索がどこまで遡ったか。90 日の下限に達して一周した後は 0 になります
trawl:chase:<n/a>trawl:chase:YYYY-MM-DD。その日に追加実行を何回行ったか

バックアップ

この規模では、どちらの方法も無料で利用できます。

  • D1 Time Travel は常時有効です。過去7日間(Workers Paid では30日間)の任意の時点に復元できます。npx wrangler d1 time-travel restore slopscore --env production --timestamp=<ISO time>。データベースをその場で上書きし、取り消し用のブックマークを返します。
  • 日次の論理バックアップ は .github/workflows/backup.yml で実行します。すべてのテーブルを scripts/backup.mjs でエクスポートし、tar でまとめて暗号化したうえで、90日間 Actions アーティファクトとして保存し、必要に応じて R2 にコピーします。D1 のネイティブエクスポートは FTS5 データベースを拒否し、実行中にデータベースをオフラインにするため、ここでは使用できません。

ワークフローに必要なシークレット:CLOUDFLARE_API_TOKEN(Account → D1 → Edit)および BACKUP_PASSPHRASE。任意のリポジトリ変数:R2_BACKUP_BUCKET。

アーティファクトから復元するには:

openssl enc -d -aes-256-cbc -pbkdf2 -iter 200000 -in slopscore-<stamp>.tar.gz.enc -out backup.tar.gz -pass pass:'<passphrase>'
tar -xzf backup.tar.gz
node scripts/restore.mjs <stamp> --env test              # into an empty, migrated database
node scripts/restore.mjs <stamp> --env production --yes-production

行は親から子の順に INSERT OR REPLACE で挿入されます。検索インデックスは repos のトリガーを通じて更新されます。手動で実行するには、wrangler にログインしたうえで node scripts/backup.mjs を実行します。

ライセンス

MIT.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。