Agent Skills
› pollinations/pollinations
› spending-analysis
spending-analysis
GitHub提供基于Tinybird的Stripe收入、套餐购买及余额消耗分析能力,支持通过SQL查询获取周收入、最近购买记录、客户收入分布及按来源的消费统计。
Trigger Scenarios
需要分析平台收入数据
查询用户消费行为
获取套餐销售统计
Install
npx skills add pollinations/pollinations --skill spending-analysis -g -y
SKILL.md
Frontmatter
{
"name": "spending-analysis",
"description": "Analyze Pollinations Stripe revenue, pack purchases, and balance-bucket spending patterns with Tinybird production data."
}
Requirements
- Run from the
pollinationsrepository root. - Install
curl,jq, andsops. - Use the production Tinybird read token. The staging workspace has no real revenue.
Setup
export TINYBIRD_TOKEN=$(sops -d operations/kpi/secrets/env.json | jq -r '.TINYBIRD_READ_TOKEN')
Never print the token. Revenue queries must filter successful Stripe checkout events so asynchronous payment methods are counted exactly once.
Weekly pack revenue
curl -sS "https://api.europe-west2.gcp.tinybird.co/v0/sql" \
-H "Authorization: Bearer $TINYBIRD_TOKEN" \
--data-urlencode "q=SELECT toStartOfWeek(timestamp) AS week, round(sum(amount_cents) / 100, 2) AS revenue_usd, count() AS purchases FROM stripe_event WHERE payment_status = 'paid' AND event_type IN ('checkout.session.completed', 'checkout.session.async_payment_succeeded') AND timestamp >= now() - INTERVAL 90 DAY GROUP BY week ORDER BY week DESC FORMAT JSON" \
| jq '.data'
Recent pack purchases
curl -sS "https://api.europe-west2.gcp.tinybird.co/v0/sql" \
-H "Authorization: Bearer $TINYBIRD_TOKEN" \
--data-urlencode "q=SELECT timestamp, user_id, session_id, amount_cents / 100 AS amount, currency, payment_method FROM stripe_event WHERE payment_status = 'paid' AND event_type IN ('checkout.session.completed', 'checkout.session.async_payment_succeeded') ORDER BY timestamp DESC LIMIT 100 FORMAT JSON" \
| jq '.data'
Revenue by customer
curl -sS "https://api.europe-west2.gcp.tinybird.co/v0/sql" \
-H "Authorization: Bearer $TINYBIRD_TOKEN" \
--data-urlencode "q=SELECT user_id, round(sum(amount_cents) / 100, 2) AS revenue_usd, count() AS purchases FROM stripe_event WHERE payment_status = 'paid' AND event_type IN ('checkout.session.completed', 'checkout.session.async_payment_succeeded') AND timestamp >= now() - INTERVAL 30 DAY GROUP BY user_id ORDER BY revenue_usd DESC LIMIT 50 FORMAT JSON" \
| jq '.data'
Weekly spend by balance bucket
curl -sS "https://api.europe-west2.gcp.tinybird.co/v0/sql" \
-H "Authorization: Bearer $TINYBIRD_TOKEN" \
--data-urlencode "q=SELECT toStartOfWeek(start_time) AS week, splitByChar(':', selected_meter_slug)[-1] AS meter_source, sum(total_price) AS total_spend, count() AS requests FROM generation_event_v2 WHERE start_time >= now() - INTERVAL 60 DAY AND environment = 'production' GROUP BY week, meter_source ORDER BY week DESC FORMAT JSON" \
| jq '.data'
Notes
stripe_eventis the source of truth for pack-purchase revenue analytics.generation_event_v2records Pollen consumption, not cash revenue.- Both datasets use
user_id, so revenue and usage can be joined directly. - The dashboard's
daily_stripe_revenuepipe applies the same paid-event filter. - For pre-migration revenue history, note that Polar was the pre-Stripe merchant of record (Nov 2025–Jan 2026) and is retired. Do not combine historical Polar and Stripe totals without checking the cutoff for overlap.
Version History
-
8303332
Current 2026-08-20 04:57
修复了获取 Tinybird 读取令牌时 sops 解密配置文件的路径错误(从 apps/operation/kpi/secrets/env.json 更正为 operations/kpi/secrets/env.json)。
- 99bce92 2026-07-25 10:39


