MackSCがカム業界を計測する方法

3つのカムプラットフォームを2分おきにポーリングしています。本ページではどのように集計しているか、何を保存しているか、何を追跡していないか、引用方法を文書化しています。

以下は一人称で書かれています、このパイプラインは個人プロジェクトであり委員会の産物ではないからです。選択が奇妙に見えたら、明確な理由があってそうしており、その理由を説明します。本文書またはデータにバグを見つけたら[email protected]までメールしてください。

スタック構成

Chaturbate、Stripchat、Streamateを追跡しています。プラットフォームごとに1つのAPI:

Streaming NowBrowse all →
  • Chaturbate、アフィリエイトAPIで、アクティブなルームリスト全体を返します。各ポーリングサイクルで呼び出します。
  • Stripchat、StripCashバルクAPIで、1回のコールあたり上位400ルームを返します。上位400圏外の特定モデルについては、ブラウザUser-Agentヘッダー付きのStripchatダイレクトAPIで個別ルックアップします。
  • Streamate、SMLive XMLエンドポイントで、1回のコールあたり最大500のライブモデルを返します。指定モデルにはSMLive名前検索エンドポイントを使います。

OVHデータセンターIPはChaturbateエッジから約4%の頻度で403を返されます。403はリトライ可能なエラーとして扱い、前回のスナップショットをバックアップトランジェント(30分TTL)に保持、次回成功ポールまで持ち越します。Cloudflare WAFの403も同じルールです。

ポーリング周期

  • 2分ごと、3プラットフォーム全部をポーリング。合計値とトップモデルを180秒TTLのトランジェント保存。
  • 10分ごとwp_macksc_snapshotsテーブルに永続化行を1件書き込み。10分ウィンドウごとに1行。
  • 毎日02:15 UTC、30日より古い生スナップショットを時間別平均にロールアップ。集計後に生行は削除。
  • 毎週月曜03:00 UTC、前週比デルタを含む自動生成の週次統計投稿を公開。

2分周期はレート制限が発動する前に維持できる最短間隔。10分永続化周期はスナップショットテーブルが肥大化せず吸収できる限界。日次ロールアップはテーブルが古くなってもクエリ遅延を平坦に保つためです。

スナップショットスキーマ

wp_macksc_snapshotsの各行には以下のカラムがあります。本表が正規ドキュメントです、コードがこの表とズレたらコードが間違っています。

カラム 内容
id BIGINT 主キー、auto-increment
snapshot_time DATETIME 取得時刻(UTC)、10分境界にアライン
cb_rooms INT Chaturbateライブルーム数
cb_viewers INT Chaturbate同時視聴者数の合計
sc_rooms INT Stripchatライブルーム数
sc_viewers INT Stripchat同時視聴者数の合計
total_rooms INT CB+SC合計ルーム
total_viewers INT CB+SC合計視聴者
top_tags JSON 上位20タグ、パフォーマー数順
top_countries JSON 上位国、ルーム数順
gender_rooms JSON 性別コード別(f/m/c/s)のルーム数ブレイクダウン
gender_viewers JSON 性別コード別の視聴者数ブレイクダウン
created_at TIMESTAMP 行挿入時刻

Streamateのルーム数は別のトランジェントで追跡しており、sc_roomscb_roomsには組み込まれません。Streamateの同時視聴者数はSMLive APIで公開されていないため、Streamate行はルーム合計のみに寄与し、視聴者合計には寄与しません。

追跡していないデータ

意図的にパイプラインから除外しているもの:

  • 視聴者の身元情報。誰が見ているかは一切見ていません。APIはルーム単位の集計を返し、セッション識別子やIPアドレスは返しません。
  • 支払いや投げ銭データ。ルームにトークンゴールがあるのは見えますが、誰がいくら出したかは見えません。
  • プライベートショーの内容。モデルがプライベートに入るとAPIでルームが隠蔽されます。可視性を失い、回復しようとしません。
  • モデルの個人識別データ。モデルが配信する公開ユーザー名を記録します。法的な氏名やプラットフォームが公に公開していないデータは記録しません。
  • チャット記録。チャット内容は読み取り・保存・インデックス化していません。

既知のギャップと注意点

  • Chaturbateの地理情報はフリーテキスト。キーワード辞書で国タグにマッピングしています。「south of Bogota」のようなエッジケースはcoにマップされるべきですが、漏れる場合があります。
  • Stripchatの上位400バルクコールは中規模配信者を切り落とします。上位400圏外のルームはモデル別ルックアップで到達可能ですが、ポーリング時間が増えます。
  • Streamateの視聴者数は非公開。SMLive APIはRelevanceスコア(0-1000)を返しますが、同時視聴者数は返しません。表示用に合成視聴者推定を算出: max(20, min(500, round(relevance * 0.5)))。これは人気プロキシであって実視聴者数の主張ではありません。StreamateモデルのカードにはDOM属性data-estimated="true"を付与。ソーシャルプルーフバッジ(「X人が視聴中」)はStreamateの合成視聴者を除外し、ChaturbateとStripchatの実数のみをカウントします。
  • 02:15 UTCのロールアップ中に発火するポール(稀)はテーブルロックを踏む可能性。発生時はポールが遅延し、次の10分ウィンドウで追いつきます。
  • 2分周期は、WP-Cronが本物のcronではないため1サイクルあたり数秒ドリフトします。ドリフトは公開数値に影響しません、スナップショットが完全に等間隔ではなくなるだけです。

数値の所在

特定の数値が必要なら、最も問い合わせの多い質問向けに専用回答ページを用意しています。各ページはリクエストごとに更新され、数値のマイクロデータ要素、Dataset・FAQPageスキーマを露出します。全カタログはmacksc.com/ask/で閲覧可能。

クイックリンク:

CSV一括ダウンロード

スナップショットテーブルはmacksc.com/data/v1/で4つの正規化CSVファイルとして利用可能。各ファイル冒頭に5行の引用コメントブロックがあります(pandasのcomment="#"引数でインポート時に削除可能)。デフォルトウィンドウは直近30日、?since=YYYY-MM-DD&until=YYYY-MM-DDで絞り込み。

  • timeseries.csv、10分スナップショットごとに1行、全フラットカラム。
  • countries.csv、top_countries JSONカラムから正規化された国分布。
  • tags.csv、スナップショットごとの上位20タグランキング、rankカラム付き。
  • gender.csv、スナップショットごとの性別コード別ルーム・視聴者内訳。

macksc.com/data/v1/のJSONマニフェストに4エンドポイント全ての機械可読メタデータを記載。

引用の仕方

観測ダッシュボードの数値を引用する際は、取得元URLとページ上のタイムスタンプを明示してください。例:

  • ダッシュボードからの合計値: MackSC Observatory. (2026). Live Cam Industry Statistics. Retrieved from https://macksc.com/stats/
  • 特定回答URL: 質問URLとページ上レンダリングのタイムスタンプを引用。
  • 生データ: MackSC. (2026). Cam Industry Snapshot Dataset. Version 1.1. https://macksc.com/data/

本サイトの全内容はCC BY 4.0で公開。出所明示で自由に利用可能、メール問い合わせ不要。

メソドロジーのバージョン

本文書はバージョン1.1、公開日2026-04-13。パイプラインの変更で公開数値に影響が出る場合、バージョンを上げ、以下に変更履歴を追記します。

  • 1.0(2026-04-11)、初回版。3プラットフォームポーリング(Chaturbate、Stripchat、Streamate)、2分周期、10分スナップショット、02:15 UTC日次ロールアップ、月曜03:00 UTC週次統計投稿。
  • 1.1(2026-04-13)、Streamate合成視聴者数の開示追加。Streamateモデルカードにdata-estimated属性を付与。ソーシャルプルーフバッジはStreamate合成視聴者を除外。

修正、データリクエスト、提携相談: [email protected]

Live NowSee all →