Cosense (旧: Scrapbox) のページに含まれるコメントを自動集計し、誰がどれだけ活発に議論に参加しているかを可視化するツールです。
手動でコメントを数えるのは大変...
- 「このページでは誰が一番発言してる?」
- 「このプロジェクトの活発な参加者は誰?」
- 「このトピック関連で、全体の議論量は?」
このツールは、Cosense の [username.icon] パターンを自動認識し、数秒で集計します。
📊 コメント集計結果
============================================================
📄 解析ページ数: 123/123 (100.0% 成功)
💬 総コメント数: 45,678
👥 コメンター数: 90
------------------------------------------------------------
🏆 コメンターランキング:
1. person A : 300 ██████████████████████████████
2. person B : 279 ████████████████████████████
3. person C : 191 ███████████████████████
4. person D : 134 █████████████████████
5. person E : 102 ██████████████████
...
- Ruby 2.7 以上
- Bundler
# リポジトリをクローン
git clone https://github.com/yasulab/cosense_comment_counter.git
cd cosense_comment_counter
# 依存関係をインストール
bundle install# 公開ページのコメントを集計
bundle exec ruby main.rb --page yasulab/README
# キーワードでフィルタリング(例:Ruby 関連のページのみ)
bundle exec ruby main.rb --page yasulab/README --keyword "Ruby"| オプション | 説明 | 例 |
|---|---|---|
--page PROJECT/PAGE |
必須 解析するページを指定 | --page yasulab/README |
--keyword KEYWORD |
リンクをフィルタリングするキーワード | --keyword "Ruby" |
--username USERNAME |
特定ユーザーの詳細を表示 | --username yasulab |
--check-links |
リンク先の有効性チェック(デバッグ用) | --check-links |
--first |
最初のリンクのみ解析(デバッグ用) | --first |
# yasulab プロジェクトの「README」ページを解析
bundle exec ruby main.rb --page yasulab/README# "Ruby" を含むページのみ集計
bundle exec ruby main.rb --page yasulab/README --keyword "Ruby"# yasulab さんのコメントを各ページごとに詳細表示
bundle exec ruby main.rb --page yasulab/README --username yasulab
# 出力例:
# 1. ページタイトル
# yasulab: 5
# 詳細:
# L42: [yasulab.icon] このアイデアいいですね!
# L78: [yasulab.icon] 実装してみました# リンク先のページが実際に存在するか確認 (DEBUG)
bundle exec ruby main.rb --page yasulab/README --check-links集計結果は自動的に result.txt に保存されます。
Cosense のテーブル形式に変換する場合:
# result.txt を Cosense テーブル形式に変換
bundle exec ruby convert_result_to_cosense.rb
# 出力: cosense.txt
# table:コメントランキング
# rank name comments
# 1 foobar 282
# 2 foobaz 179
# ...プライベートな Cosense プロジェクトにアクセスする場合は、Cookie 認証が必要です。
-
Cookie を取得
- ブラウザで対象の Cosense プロジェクトにログイン
- 開発者ツール → Application → Cookies →
connect.sidをコピー
-
環境変数を設定
.envファイルを作成:COSENSE_SID=s:xxxxxxxx... # コピーした connect.sid の値
-
動作確認
bundle exec ruby main.rb --page private-project/page-name
詳細な設定手順は docs/USER_SETUP_GUIDE.md を参照してください。
このツールは Cosense の アイコン記法 [username.icon] を検出してコメントをカウントします。
[yasulab.icon] これは yasulab のコメントです
[person A.icon] これは person A のコメントです
重要: @yasulab のようなメンション記法はカウント対象外です。コメント数は発言者のアイコン表示数でカウントします。
- ページ取得: 指定されたまとめページの API データを取得
- リンク抽出: ページ内のリンク(
linksフィールド)を抽出 - フィルタリング: キーワードが指定されていれば、該当するリンクのみに絞り込み
- 個別取得: 各リンク先のページデータを順次取得
- コメント抽出: 各ページから
[username.icon]パターンを検出 - 集計: ユーザーごとにコメント数を集計
- 結果表示: ランキング形式で表示し、ファイルに保存
- リクエスト間に 0.2 秒の遅延を挿入
- 大量のページを処理する場合は自動的に調整
❌ ページが見つかりません: project/page_name
原因: ページ名の指定が間違っている
対処:
- スペースはアンダースコアに自動変換されます
- ブラウザで実際のページ URL を確認してください
❌ 認証エラー: Cookieが無効または期限切れです
原因: プライベートページで Cookie が期限切れ
対処:
- ブラウザで再ログイン
- 新しい
connect.sidを取得 .envファイルを更新
原因: API レート制限
対処:
- しばらく待ってから再実行
--firstオプションでテスト実行
- 絵文字を使った視覚的な表示
- バーグラフでコメント数を可視化
- 全角文字(日本語名)にも対応した整形
result.txt: 標準出力と同じ形式cosense.txt: Cosense テーブル形式(変換スクリプト使用時)
MIT License - 詳細は LICENSE ファイルを参照してください。
注意: このツールは Cosense (旧: Scrapbox) の非公式ツールです。API の仕様変更により動作しなくなる可能性があります。