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本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
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
$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. 下の青いボタンを押して
tinybird.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
tinybirdフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
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 形式
- 開発用の CLI —
tb 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 development —
tb pushdeploys pipes,tb sqlfor ad-hoc queries