CKB Pulse について
CKB Pulseは、Nervos CKBエコシステムの公開GitHub活動を可視化し、プロジェクトや開発者、DAOの助成対象を追う人向けに提供します。リアルタイム情報に加え、履歴、オンチェーン利用状況、Fiberネットワークの表示、ダイジェストやフィード、バッジを備えています。
主な機能
- 01GitHubの活動をリアルタイム表示
- 02プロジェクトと開発者の履歴を確認
- 03オンチェーンのコントラクト利用状況を表示
- 04Fiber決済ネットワークをマップ表示
- 05ダイジェスト、Atomフィード、バッジを提供
活用シーン
- 01CKBプロジェクトの最近の開発を追跡
- 02プロジェクトや開発者の長期的な活動を確認
- 03助成対象プロジェクトの進捗を把握
- 04Fiberネットワークのノードとチャネルを確認
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://pulse-lab.lusocryptolabs.com/mcpclaude mcp add --transport http lusocryptolabs-ckb-pulse https://pulse-lab.lusocryptolabs.com/mcp{"mcpServers":{"lusocryptolabs-ckb-pulse":{"type":"http","url":"https://pulse-lab.lusocryptolabs.com/mcp"}}}Cursor で開く{"servers":{"lusocryptolabs-ckb-pulse":{"type":"http","url":"https://pulse-lab.lusocryptolabs.com/mcp"}}}VS Code で開く{"mcpServers":{"lusocryptolabs-ckb-pulse":{"type":"http","url":"https://pulse-lab.lusocryptolabs.com/mcp"}}}{"mcpServers":{"lusocryptolabs-ckb-pulse":{"serverUrl":"https://pulse-lab.lusocryptolabs.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
CKB Pulse
3D で描画する、CKB エコシステムの GitHub アクティビティのライブ表示です。
各プロジェクトはブロックとして表示され、誰かが作業するとライトアップします。ライブ表示、過去 24 時間、または過去 7 日間に対応しています。英語、中国語、ポルトガル語に対応しています。上部のカウンターを開くと、同じ情報をプロジェクトと人のリストで確認できます。キーボードやスクリーンリーダーからも利用できます。
https://pulse-lab.lusocryptolabs.com
実行
npm install
GITHUB_TOKEN=<read-only token> node server.mjs
Node 20 以降が必要です。依存関係は 2 つあります。resvg は共有画像を描画し、web-push はブラウザー通知を送信します(キーは初回起動時に DATA_DIR/vapid.json に生成されます)。PORT のデフォルトは 8080、DATA_DIR のデフォルトは ./data です。PUBLIC_URL は、ダイジェスト、フィード、Telegram に表示するアドレスです(設定しない場合は、各リクエストが到達したアドレスが使われます)。
テスト
npm test
CKB の作業としてカウントするもの、マニフェスト、バースト上限、エージェントとスケジュールといったルール、すべての言語の文言、共有カード、バッジ、ダイジェストページとフィード、訪問数、長期履歴、長いダッシュを使わないことをテストします。CI はプッシュのたびにテストを実行します。
GET /health は、サーバーが稼働している間は 200 を返します。組織のフィードから 10 分間応答がない場合、collector.ok は false になります。今日の訪問数も含まれます。
訪問数
ページ、Fiber マップ、ダイジェスト、フィード、バッジの日ごとのページビュー数と訪問者数は、GET /api/visits(30 日間)および DATA_DIR/visits.json(90 日間)で確認できます。Cookie もアカウントも使いません。訪問者は、その日のソルト、アドレス、ブラウザーから生成したハッシュで識別されます。ソルトとハッシュは日付が変わると破棄されるため、残るのは集計数だけです。稼働状況チェック、クローラー、リンクプレビュー、スクリプト、ヘッドレスブラウザーは、ユーザーエージェントによって bots として別にカウントされます。2026-10-26 には、ページビューのうち 1997 回がこれらによるもので、スクリプトは 26 回取得されました。
対象範囲
config.mjsに記載された組織とアカウントを、ETag を使って毎分ポーリングします。アカウント自身のフィードにはそのアカウントの活動しか表示されないため、アカウントのリポジトリを一つずつ読み取ります。- GitHub のイベント API には 30 秒から数時間の遅延があるため、このページもそれより速く更新されることはありません。
- GitHub がプッシュの送信を停止することもあります。2026-10-30 の 11:00 UTC 頃から 2 日間、どの組織のフィードにもプッシュが表示されませんでしたが、プルリクエストとコミットは引き続き表示されました。そのため、過去 14 日間に作業があったすべてのリポジトリについて、メインブランチのコミットも 15 分ごとに読み取ります。プッシュによって取り込まれなかったコミットは、45 分後にその作成者によるプッシュとして扱います(同じリポジトリの新しいコミットは互いの到着を待ち、まとめて扱われます)。そのコミットのプッシュが後から到着した場合は破棄します。
- ビルダー:CKB ライブラリ(CCC、Lumos、Spore、RGB++、JoyID、JS、Go、Java SDK、ckb-std、ckb-types、ckb-testtool など。
config.mjsに記載)に依存する公開リポジトリ、Fiber ノードを呼び出すリポジトリ(ソースファイル内の RPC フィールドを検索)、または CKB トピックを持つリポジトリを、6 時間ごとの検索で見つけます。 - CKB Community Fund DAO が資金を提供するプロジェクトは、
config.mjsに提案とともに記載されています。ほかのプロジェクトは検出処理で見つけます。CKB トピックがなく、コード検索で検出できる依存関係もないプロジェクトもいくつかあります。 - 公開リポジトリのみが対象です。リポジトリが非公開になると、最初の非公開イベントが発生した時点、遅くとも 6 時間以内にページから除外されます。保存済みの作業も対象に含まれます。30 日間、人間による活動がないオーナーは表示されません。
- 自動化された作業はグレーのスパークとして表示され、件数やメダルには含まれません。対象はボット、AI エージェントが独自のブランチ(
claude/、codex/、copilot/、cursor/、devin/、および Claude Code のクラウド用ccr-ブランチ)でプッシュ、ブランチ作成、提案を行った作業です。ただし、その作業のマージはカウントされます。また、過去 30 日間のうち 15 日以上、あるアカウントが一つのプロジェクトにプッシュしたコミットタイトルも対象です。 - 対象リポジトリで活動している人については、週に一度、その人自身の CKB プロジェクトも確認します。ページから組織や個人を誰でも提案できます。GitHub で過去 30 日間の公開 CKB 活動(トピック、名前、CKB への依存、Fiber ノードの呼び出し)が確認されると、対象に加わります。
config.mjsのBLOCKEDに記載されたオーナーは対象外です。 - 1 日に一度、対象リポジトリごとのイベント一覧でその週の情報を補います。組織のフィードには直近 300 件のイベントしか保持されないためです。
履歴
イベント API で取得できるのは過去 90 日分です。月別と年別のデータは、GitHub の貢献者統計に基づいています。既知の CKB リポジトリすべてについて、静かなリポジトリも含め、週ごと、作成者ごとのコミットを取得し、毎週 DATA_DIR/history.json に更新します。これを基に、過去 2 年分の月ごとのアクティブな開発者(その月にコミットした人)、新しい開発者(これらのリポジトリに初めてコミットした人)、コミット数を算出します。また、プロジェクトごとの月別コミット数も算出します。ボット、actions-user、claude や cursoragent としてコミットする AI エージェントなど、人ではない作成者(config.mjs に記載)は、ライブの集計と同様に除外されます。
一度読み取ったリポジトリは、活動がなくなったりページから外れたりしても、引き続き集計されます。古い名前(名前変更または移動前の名前)で指定されたリポジトリは、新しい名前のもとで一度だけ集計されます。GitHub ではどちらの名前で取得しても同じ数値が返されます。このページが始まる前に活動を終えたプロジェクトは、現在も集計に含まれていません。そのため、古い月の数値は実際より低く、成長は実際より大きく見えます。
オンチェーン
1 日に一度、CKB エクスプローラーが認識しているスクリプトのうち、ソースリポジトリがあるものをすべて取得します(そのリポジトリも追跡対象になります)。さらに、プロジェクトがコミット済みの ckb-cli マイグレーションに記録したメインネットコントラクトを、公開 CKB ノード(CKB_RPC、デフォルトは mainnet.ckb.dev)で測定します。各コントラクトを使用するライブセル内の CKB 数と最終使用時刻を取得します。各プロジェクトのカードに表示し、シーンにはタグを付けます。
Fiber
/fiber は mainnet と testnet の Fiber 決済ネットワークをマッピングします。ノード、公開チャネル、およびその更新情報は、自分で用意した、リッスンのみを行う Fiber ノード(チャネルなし、資金なし、自動承認オフ)から取得します。その RPC に FIBER_MAINNET_RPC と FIBER_TESTNET_RPC を設定してください。チャネルの開設と閉鎖は、Fiber の FundingLock がセルとして出現し、使用済みになる様子をブロックごとにチェーンから取得するため、プライベートチャネルも含まれます(CKB_RPC、CKB_TESTNET_RPC)。決済はノード間で暗号化されて送信されるため、可視化されません。
ゴシップ情報の反映には時間がかかります。2026-10-10 に testnet で測定したところ、新しいリッスンノードは 2 分後に 317 個のチャネルを取得し、20 分後にそれらのノードが再び通知を行った際に、さらに 537 個を取得しました(この波には 41 分前の更新情報が含まれていました)。波の外では、チャネルの更新情報は、そのタイムスタンプから 14~62 秒後に届きました(90 分間で 6 件)。開設と閉鎖は高速な経路であるチェーンから取得します。
このページでは、LSP のライブビューが 1 つの LSP を描画する方法でネットワークを描画します。通知された各ノードはセル(ハブ、8 個以上の隣接ノードを持ち、中心部は正方形で構成)となり、チャネルを持つノードの各ペアはルートとなって、CKB が多いほど太くなります。実際に変化があったときだけ動きます。新しいチャネルができるとルートが伸び、マップから離れるとルートがしぼみ、活動の兆しがあるとルートが光って両端が鳴り、新しいノードが現れると大きくなります。「シンプル」では通常のマップを表示します。毎秒 20 回の描画を維持できない場合、ページは自動的にシンプル表示に切り替わります(Chrome の CPU スロットリングを使った testnet での測定では、30 回/秒までは最大 6 倍の低速化に耐え、20 倍ではシンプル表示になります)。
新しいプロジェクトとフォロー
フォロー中の公開リポジトリが過去 14 日以内に作成されている場合、新しいプロジェクトとして扱われます。New の下に一覧表示され、開いているページに 1 回通知されます。フォークは対象外です。フォロー中の組織以外では、リポジトリ名、説明、またはトピックにチェーン関連の語句が含まれている必要があります。「ckb」だけでは、リポジトリが CKB 関連とは判断されません(Central Kurdish や Codebase Knowledge Base 形式を指す場合もあります)。fiber-network トピックも同様です。光ファイバー関連のプロジェクトでも使われるためです。
訪問者はアカウントを作成せず、各自のデバイスでプロジェクトや人をフォローできます。ブラウザー通知が許可されている場合、フォロー中の対象に動きがあるとサーバーから通知が送られます(プロジェクトごとに 10 分間で最大 1 回)。リクエストに応じて、新しいプロジェクトが現れたときにも通知されます。iPhone では、ページをホーム画面に追加する必要があります。
ダイジェスト、フィード、バッジ
/digest?p=day|week|month は、期間中の注目情報を 3 つの言語(lang=)でまとめたシンプルなページです。閲覧、転送、印刷に使え、独自のリンクプレビューもあります。毎週月曜日 08:00 UTC に、その週の注目情報が DATA_DIR/digests.json に保存されます(1 年分を保持し、ページに 1 週間分の実績がたまると最初のものを作成します)。また、/feed.xml は、それらの週と新しいプロジェクトを掲載する Atom フィードで、フィードリーダーから利用できます。TELEGRAM_BOT_TOKEN、TELEGRAM_CHAT_ID、PUBLIC_URL が設定されている場合は、週次ダイジェストが DIGEST_LANG(en)で、画像を先頭にしてそのチャットにも投稿されます。
バッジは過去 7 日間の情報を示す小さな SVG で、README やサイトで使えます。動きがない場合、またはフォローされていない場合はグレーで表示され、10 分間キャッシュされます。
[](https://pulse-lab.lusocryptolabs.com/?repo=owner/repo)
[](https://pulse-lab.lusocryptolabs.com/?person=someone)
[](https://pulse-lab.lusocryptolabs.com/)
ページ上の各プロジェクトと人のカードには、そのバッジとコピー用の Markdown が表示されます。
資金提供を受けているプロジェクト
/funded には、CKB Community Fund DAO が支援するプロジェクト(config.mjs の FUNDED)が表示されます。各リポジトリのメインブランチにおける投票以降の週ごとのコミット数を GitHub の統計情報から取得し、Nervos Talk にある提案スレッドでのチーム自身の投稿と並べて表示します。これらの投稿は 1 日 1 回 DATA_DIR/funded.json に読み込まれます。投稿は、最初の語句に基づいてマイルストーン報告または完了報告としてカウントされます。GitHub での作業も報告も 30 日間ない助成プロジェクトは、完了報告が行われるまで活動なしとみなされます。/api/funded は同じ情報を JSON で返します。
シーン
最大のクラスターである独立系ビルダーは、言語ごとに配置されます。リポジトリが4つ以上ある言語にはそれぞれラベル付きの小さなグリッドが用意され、それ以外の言語はひとつのグリッドを共有します。初めて訪れると、カメラはプロジェクトと今週の人のところまで飛んでから停止します。触れると、飛行はいつでも終了します。
スマートフォンでは、デフォルトでプロジェクトがバーとして表示されます。プロジェクトごとに1行あり、作業をした人ごとの作業量に応じた長さ(平方根)で、その種類の色で表示され、最後に作業した人の顔が並びます。作業が届くと行は新しい位置へスライドし、リストに指を置いている間は動きません。バーの上にある切り替えボタンでシーンの表示とバーの表示を切り替えられ、選択はデバイスに保存されます。バーの表示中はシーンを描画しません。
シーン表示では、スマートフォンの画面にはパネルが空けている領域に合わせてシーンが表示され、パネルは画面下部のシートとして表示されます。バーをドラッグすると、少しだけ表示する状態、画面の半分まで表示する状態、または画面上部まで表示する状態に切り替えられます。半分を超えると、ティッカーは脇に退きます。タイムラインとシートはホームインジケーターに重ならないように配置されます。
24時間と7日間の表示では、期間全体が一度に表示され、再生ボタンで再生できます。フィルター適用中は、件数はフィルターで絞り込まれた内容を示します(「filtered, of 247 updates」)。?ui=next では、よりすっきりしたレイアウトを試せます(?ui=old で無効にできます。選択はブラウザーに保存されます)。すべての画面でバーが表示され、フィルターはボタンの背後に配置されます。タイムラインの上の帯は、パネルに表示されない情報がある場合のみ表示され、README のバッジは「開発者向け」の下に折りたたまれます。
外観
すべてのページで public/theme.css が共有されており、Cellula ページと同じ外観です。テキストには Space Grotesk、数字と小さなラベルには JetBrains Mono を使用し、暖かみのある黒にライム色を合わせています。フォントは public/vendor/fonts から配信されます(ラテン文字のサブセット、SIL Open Font License、そのライセンス文書も同じ場所にあります)。そのため、ページを訪れてもフォントホストに接続する必要はありません。中国語にはシステムのフォントが使われます。読み物ページ(/funded、/digest、/use)は、小さなラベル、キーワードを際立たせた大きなタイトル、その下の1行から始まります。
メニュー
すべてのページ(ライブページ、/fiber、/funded、/digest、/use)で、public/menu.js と public/menu.css による同じメニューを使います。内容は、見る(ライブ、Fiber、資金提供、今週のダイジェスト)、最新情報を得る(お知らせ、フィード)、ビルダー向け(プロジェクトの追加、バッジ、AI エージェントと API)、このサービスについて、です。画面が広い場合は、3つのビュー(ライブ、Fiber、資金提供)も名前の横に並んで表示されます。ライブページの特定箇所を開くリンクは、/?tab=new、/?tab=notices、/?tab=suggest、/?about=1 です。
共有
期間のハイライト(?h=day|week|month)、プロジェクト(?repo=owner/name)、または人(?person=login)へのリンクを開くと、その対象を表示したページが開きます。プレビューには、サーバーが生成した1200 x 630の画像が使われます。/funded(すべての助成金、または ?g=<topic> で指定したもの)、/fiber?net=mainnet|testnet(実際のグラフ)、/use も同様です。また、過去14日以内に作成されたプロジェクトには「CKBに新登場」のリボンが付きます。X と Telegram ではアドレスごとにプレビューが保存されるため、各画像のアドレスには描画内容のスタンプ(v=)が含まれ、共有リンクには日付(d=)が含まれます。資金提供を受けたプロジェクトの画像に状態が記載されるのは、進行中または納品済みの場合のみです。カードには、fonts/ にあるページ用フォントが使われます。メダルの集計では、短時間に集中した更新は対象外です。人、プロジェクト、時間ごとに、更新は最大10件まで数えられ、ブランチを開いてもカウントされません。
API
GET /api/state:リポジトリ、ハイライト、過去7日間の履歴を返します。1分間に最大1回生成されます。ETag が付与され、変更がない場合はIf-None-Matchを送信すると 304 が返りますGET /api/repo?name=owner/repo:1つのリポジトリの過去30日間のデータを返します。名前は大文字・小文字を区別せずに受け付け、応答では元の表記を保持しますGET /api/stream:新しいイベントを Server-Sent Events で配信しますGET /og/highlights.png?p=,/og/repo.png?name=,/og/person.png?login=。それぞれlang=en|pt|zhを指定すると、共有用の画像を返しますGET /api/push/key、POST /api/pushに{sub, repos, people, news, lang}、POST /api/push/offに{endpoint}:ブラウザー通知GET /api/fiber?net=mainnet|testnet:Fiber マップ、チェーン上で開いているチャネル、過去1週間のチャネルの開設と閉鎖を返しますGET /api/fiber/stream:Fiber の変更を発生時に Server-Sent Events で配信しますGET /version.json:新バージョン通知用に、サーバーが実行しているビルドを返しますPOST /api/proposeに{"login"}を送信し、その後GET /api/propose?id=:提案とその確認結果を返しますGET /digest?p=day|week|month&lang=:ハイライトをページとして返します。GET /feed.xml?lang=:Atom フィードを返しますGET /badge/repo.svg?name=,/badge/person.svg?login=,/badge/ckb.svg。それぞれlang=を指定すると、バッジを返しますGET /api/visits:過去30日間の日ごとの閲覧数と訪問者数を返しますPOST /mcp:以下のとおり、AI エージェント向けに同じデータを返しますGET /use?lang=:Pulse のすべての機能を紹介するページです。メニューと各ページのフッターからリンクされています。GET /llms.txt:AI エージェント向けに同じ内容を返します
MCP
Pulse は /mcp にある Model Context Protocol サーバーでもあります(Streamable HTTP、セッション不要、インストール不要)。
claude mcp add --transport http ckb-pulse https://pulse-lab.lusocryptolabs.com/mcp
ブラウザーで /mcp を開くと /use#ai に移動し、接続方法が表示されます。
MCP Registry には io.github.LusoCryptoLabs/ckb-pulse(server.json。mcp-publisher publish で公開)として登録されています。
ツールは Pulse がすでに保存しているデータのみを読み取り(GitHub への呼び出しはありません)、対象はユーザーのみ、期間は過去30日間です。
overview:1日、1週間、1か月の更新、ユーザー、プロジェクト、最も活発な項目、Pulse に新しく追加されたプロジェクトfind_projects:単語と分野(ckb、fiber、dob/spore、rgb++、ccc、nervos)で、フォロー中のプロジェクトを検索しますproject:1つのプロジェクト、そのアクティビティ、月ごとの履歴、ユーザー、最新の更新person:1人のユーザーのプロジェクト、それらのプロジェクトの分野と言語、そのユーザーが行った更新の種類who_works_on:ある分野、または指定した単語に一致するプロジェクトで最も活発なユーザーrecent_updates:全体、1つのプロジェクト、または1人のユーザーによる最新の更新dao_funded:Community Fund DAO の助成金。レポートの隣にコードを表示しますtrends:開発者、新規開発者、月ごとのコミット数
別のエコシステム
「CKB」と記載されているもののほとんどは、config.mjs(組織、検索、審査用の単語、タグ)と public/words.js のグループ名にあります。オンチェーン機能と Fiber 関連の機能は CKB 固有のもので、対応する変数を設定しない限り動作しません。設定を別のエコシステムの組織やライブラリに向けると、同じページがそのエコシステムに合わせて動作します。
ライセンス
MIT。Three.js(MIT)と d3(ISC)は、それぞれのライセンスに基づき public/vendor に同梱されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。