jpskill.com
💼 ビジネス コミュニティ

tinybird

Tinybirdは、大量のイベントデータをリアルタイムに分析できるAPIを、SQLを使って簡単に構築できるサービスで、利用状況の計測やプロダクト分析のバックエンド構築を支援するSkill。

📜 元の英語説明(参考)

Build real-time analytics APIs with Tinybird — ingest millions of events and query with SQL over HTTP. Use when someone asks to "build analytics API", "Tinybird", "real-time analytics", "event analytics", "ClickHouse as a service", "usage metering", or "product analytics backend". Covers data ingestion, SQL pipes, API endpoints, and real-time dashboards.

🇯🇵 日本人クリエイター向け解説

一言でいうと

Tinybirdは、大量のイベントデータをリアルタイムに分析できるAPIを、SQLを使って簡単に構築できるサービスで、利用状況の計測やプロダクト分析のバックエンド構築を支援するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o tinybird.zip https://jpskill.com/download/15484.zip && unzip -o tinybird.zip && rm tinybird.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15484.zip -OutFile "$d\tinybird.zip"; Expand-Archive "$d\tinybird.zip" -DestinationPath $d -Force; ri "$d\tinybird.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して tinybird.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → tinybird フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Tinybird

概要

Tinybird は、生のイベントデータをリアルタイムな分析 API に変換します。毎秒数百万件のイベントを取り込み、SQL クエリ (ClickHouse ダイアレクト) を記述し、インフラストラクチャを管理することなく、それらを HTTP API エンドポイントとして公開します。「API レイヤーが組み込まれたサービスとしての ClickHouse」と考えてください。製品分析、使用量測定、リアルタイムダッシュボード、および大規模なデータセットに対する高速な集計が必要なあらゆるワークロードに使用されます。

どのような時に使うか

  • 製品分析 (ページビュー、クリック、機能の使用状況)
  • 課金のための使用量測定 (顧客ごとの API 呼び出し)
  • リアルタイムダッシュボード (ライブメトリクス、モニタリング)
  • 大規模なイベント処理 (IoT、ログ、ユーザーアクティビティ)
  • ClickHouse を管理せずに ClickHouse のパフォーマンスが必要な場合

手順

セットアップ

pip install tinybird-cli
tb auth --token YOUR_TOKEN

データソースの定義

-- datasources/events.datasource
DESCRIPTION >
  アプリケーションから取り込まれた生のユーザーイベント

SCHEMA >
  `event_id` String,
  `user_id` String,
  `event_type` String,
  `properties` String,  -- JSON string
  `timestamp` DateTime
ENGINE MergeTree
ENGINE_SORTING_KEY timestamp, user_id

イベントの取り込み

// src/analytics/track.ts — Tinybird にイベントを送信
const TINYBIRD_URL = "https://api.tinybird.co/v0/events";
const TINYBIRD_TOKEN = process.env.TINYBIRD_TOKEN;

async function trackEvent(event: {
  userId: string;
  eventType: string;
  properties?: Record<string, any>;
}) {
  await fetch(`${TINYBIRD_URL}?name=events`, {
    method: "POST",
    headers: { Authorization: `Bearer ${TINYBIRD_TOKEN}` },
    body: JSON.stringify({
      event_id: crypto.randomUUID(),
      user_id: event.userId,
      event_type: event.eventType,
      properties: JSON.stringify(event.properties || {}),
      timestamp: new Date().toISOString(),
    }),
  });
}

// 使用例
await trackEvent({ userId: "user_123", eventType: "page_view", properties: { page: "/pricing" } });
await trackEvent({ userId: "user_123", eventType: "button_click", properties: { button: "signup" } });

SQL Pipes (クエリ → API)

-- pipes/daily_active_users.pipe
DESCRIPTION >
  過去30日間の日間アクティブユーザー数

NODE daily_counts
SQL >
  SELECT
    toDate(timestamp) AS date,
    uniqExact(user_id) AS active_users
  FROM events
  WHERE timestamp >= now() - INTERVAL 30 DAY
  GROUP BY date
  ORDER BY date DESC

-- これは API エンドポイントになります:
-- GET https://api.tinybird.co/v0/pipes/daily_active_users.json
-- pipes/user_activity.pipe
DESCRIPTION >
  特定のユーザーのアクティビティの内訳

NODE activity
SQL >
  SELECT
    event_type,
    count() AS event_count,
    max(timestamp) AS last_seen
  FROM events
  WHERE user_id = {{ String(user_id, required=True) }}
    AND timestamp >= now() - INTERVAL {{ Int32(days, 7) }} DAY
  GROUP BY event_type
  ORDER BY event_count DESC

-- API: GET /v0/pipes/user_activity.json?user_id=user_123&days=30

アプリからのクエリ

// src/analytics/query.ts — Tinybird API から分析データを取得
async function getDailyActiveUsers(): Promise<Array<{ date: string; active_users: number }>> {
  const res = await fetch(
    "https://api.tinybird.co/v0/pipes/daily_active_users.json",
    { headers: { Authorization: `Bearer ${TINYBIRD_TOKEN}` } }
  );
  const data = await res.json();
  return data.data;
}

async function getUserActivity(userId: string, days = 7) {
  const res = await fetch(
    `https://api.tinybird.co/v0/pipes/user_activity.json?user_id=${userId}&days=${days}`,
    { headers: { Authorization: `Bearer ${TINYBIRD_TOKEN}` } }
  );
  return (await res.json()).data;
}

例 1: 製品分析ダッシュボードの構築

ユーザープロンプト: 「SaaS アプリでユーザーイベントを追跡し、リアルタイムの分析ダッシュボードを構築します。」

エージェントは、Tinybird のイベント取り込みを設定し、主要なメトリクス (DAU、リテンション、機能の使用状況) のための SQL pipes を作成し、ダッシュボード用の API エンドポイントを構築します。

例 2: API 課金のための使用量測定

ユーザープロンプト: 「使用量ベースの課金のために、顧客ごとの月ごとの API 呼び出しを追跡します。」

エージェントは、API 呼び出しのデータソースを作成し、顧客と請求期間で集計し、測定 API エンドポイントを公開します。

ガイドライン

  • 取り込み用の Events API — HTTP POST、バッチ処理をサポート
  • クエリ用の SQL Pipes — テンプレートパラメータ付きの ClickHouse SQL ダイアレクト
  • Pipes は API になる — 各 pipe はクエリ可能な HTTP エンドポイント
  • テンプレートパラメータ — 動的な API クエリのための {{ String(param) }}
  • MergeTree エンジン — 高速なクエリのために timestamp + キー列でソート
  • Materialized views — サブ秒のダッシュボードクエリのために事前集計
  • 無料枠: 10GB ストレージ、無制限のクエリ — スタートアップに寛大
  • 大規模なテーブルでの JOIN は避ける — 取り込み時にデータを非正規化
  • バッチ取り込み — 大量ロードのための NDJSON 形式
  • 開発用の CLItb push は pipes をデプロイし、tb sql はアドホッククエリを実行します
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Tinybird

Overview

Tinybird turns raw event data into real-time analytics APIs. Ingest millions of events per second, write SQL queries (ClickHouse dialect), and publish them as HTTP API endpoints — all without managing infrastructure. Think "ClickHouse as a service with built-in API layer." Used for product analytics, usage metering, real-time dashboards, and any workload where you need fast aggregations over large datasets.

When to Use

  • Product analytics (page views, clicks, feature usage)
  • Usage metering for billing (API calls per customer)
  • Real-time dashboards (live metrics, monitoring)
  • Event processing at scale (IoT, logs, user activity)
  • Need ClickHouse performance without managing ClickHouse

Instructions

Setup

pip install tinybird-cli
tb auth --token YOUR_TOKEN

Define Data Sources

-- datasources/events.datasource
DESCRIPTION >
  Raw user events ingested from the application

SCHEMA >
  `event_id` String,
  `user_id` String,
  `event_type` String,
  `properties` String,  -- JSON string
  `timestamp` DateTime
ENGINE MergeTree
ENGINE_SORTING_KEY timestamp, user_id

Ingest Events

// src/analytics/track.ts — Send events to Tinybird
const TINYBIRD_URL = "https://api.tinybird.co/v0/events";
const TINYBIRD_TOKEN = process.env.TINYBIRD_TOKEN;

async function trackEvent(event: {
  userId: string;
  eventType: string;
  properties?: Record<string, any>;
}) {
  await fetch(`${TINYBIRD_URL}?name=events`, {
    method: "POST",
    headers: { Authorization: `Bearer ${TINYBIRD_TOKEN}` },
    body: JSON.stringify({
      event_id: crypto.randomUUID(),
      user_id: event.userId,
      event_type: event.eventType,
      properties: JSON.stringify(event.properties || {}),
      timestamp: new Date().toISOString(),
    }),
  });
}

// Usage
await trackEvent({ userId: "user_123", eventType: "page_view", properties: { page: "/pricing" } });
await trackEvent({ userId: "user_123", eventType: "button_click", properties: { button: "signup" } });

SQL Pipes (Queries → APIs)

-- pipes/daily_active_users.pipe
DESCRIPTION >
  Daily active users over the last 30 days

NODE daily_counts
SQL >
  SELECT
    toDate(timestamp) AS date,
    uniqExact(user_id) AS active_users
  FROM events
  WHERE timestamp >= now() - INTERVAL 30 DAY
  GROUP BY date
  ORDER BY date DESC

-- This becomes an API endpoint:
-- GET https://api.tinybird.co/v0/pipes/daily_active_users.json
-- pipes/user_activity.pipe
DESCRIPTION >
  Activity breakdown for a specific user

NODE activity
SQL >
  SELECT
    event_type,
    count() AS event_count,
    max(timestamp) AS last_seen
  FROM events
  WHERE user_id = {{ String(user_id, required=True) }}
    AND timestamp >= now() - INTERVAL {{ Int32(days, 7) }} DAY
  GROUP BY event_type
  ORDER BY event_count DESC

-- API: GET /v0/pipes/user_activity.json?user_id=user_123&days=30

Query from Your App

// src/analytics/query.ts — Fetch analytics from Tinybird API
async function getDailyActiveUsers(): Promise<Array<{ date: string; active_users: number }>> {
  const res = await fetch(
    "https://api.tinybird.co/v0/pipes/daily_active_users.json",
    { headers: { Authorization: `Bearer ${TINYBIRD_TOKEN}` } }
  );
  const data = await res.json();
  return data.data;
}

async function getUserActivity(userId: string, days = 7) {
  const res = await fetch(
    `https://api.tinybird.co/v0/pipes/user_activity.json?user_id=${userId}&days=${days}`,
    { headers: { Authorization: `Bearer ${TINYBIRD_TOKEN}` } }
  );
  return (await res.json()).data;
}

Examples

Example 1: Build a product analytics dashboard

User prompt: "Track user events in our SaaS app and build a real-time analytics dashboard."

The agent will set up Tinybird event ingestion, create SQL pipes for key metrics (DAU, retention, feature usage), and build API endpoints for the dashboard.

Example 2: Usage metering for API billing

User prompt: "Track API calls per customer per month for usage-based billing."

The agent will create a data source for API calls, aggregate by customer and billing period, and expose a metering API endpoint.

Guidelines

  • Events API for ingestion — HTTP POST, supports batching
  • SQL Pipes for queries — ClickHouse SQL dialect with template parameters
  • Pipes become APIs — each pipe is a queryable HTTP endpoint
  • Template parameters{{ String(param) }} for dynamic API queries
  • MergeTree engine — sort by timestamp + key columns for fast queries
  • Materialized views — pre-aggregate for sub-second dashboard queries
  • Free tier: 10GB storage, unlimited queries — generous for startups
  • No JOINs on large tables — denormalize data at ingestion time
  • Batch ingestion — NDJSON format for bulk loading
  • CLI for developmenttb push deploys pipes, tb sql for ad-hoc queries