Как посчитать content velocity в SQL
Содержание:
Зачем content velocity
Content velocity — скорость, с которой создаётся новый контент на платформе. Главный индикатор health UGC (User Generated Content). Растёт — платформа жива, creators активны. Падает — flag, надо investigate. Combined with consumption velocity показывает баланс supply/demand.
Формула
content_velocity = posts_created / period_daysVariations: per-author, per-category, per-cohort.
Velocity в SQL
SELECT
DATE_TRUNC('day', created_at)::DATE AS day,
COUNT(*) AS posts_created,
COUNT(DISTINCT author_id) AS unique_authors,
COUNT(*)::NUMERIC / NULLIF(COUNT(DISTINCT author_id), 0) AS posts_per_author
FROM posts
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE_TRUNC('day', created_at)
ORDER BY day;Если posts_per_author растёт — power users становятся активнее. Если падает — много новичков но не делают много.
По cohort авторов
SELECT
DATE_TRUNC('month', a.created_at)::DATE AS author_cohort,
DATE_TRUNC('day', p.created_at)::DATE AS day,
COUNT(p.post_id) AS posts,
COUNT(DISTINCT p.author_id) AS active_authors
FROM authors a
JOIN posts p ON p.author_id = a.author_id
WHERE p.created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE_TRUNC('month', a.created_at), DATE_TRUNC('day', p.created_at)
ORDER BY author_cohort, day;Старые cohorts обычно меньше posts/day (плато). Новые — burst в первый месяц.
По категориям
SELECT
category,
DATE_TRUNC('week', created_at)::DATE AS week,
COUNT(*) AS posts
FROM posts
WHERE created_at >= CURRENT_DATE - INTERVAL '12 weeks'
GROUP BY category, DATE_TRUNC('week', created_at)
ORDER BY week, category;Identify trending categories (rising volume) и dying (declining).
Частые ошибки
Ошибка 1. Считать all-time velocity. Старые cohorts давят на average. Recent-period velocity informative.
Ошибка 2. Включать spam/deleted.
Spam-posts inflate count. Filter status = 'published'.
Ошибка 3. Per-day for low-volume. Small platform: weekly aggregation для сглаживания.
Ошибка 4. Только volume без quality. Volume × engagement = real signal. Низкий engagement без volume — мусор.
Ошибка 5. Не различать types. Image post vs longform text — разная effort. Aggregate by type.
Связанные темы
- Как посчитать active creators в SQL
- Как посчитать creator retention в SQL
- Как посчитать UGC rate в SQL
- Как посчитать engagement в SQL
FAQ
Какой velocity хороший?
Зависит от platform size. 1000 posts/day для middle social network — норма.
Velocity vs consumption?
Если consumption растёт быстрее velocity → content shortage. Если velocity быстрее → noise.
Per author distribution?
Power law: 1% creators делают 50% контента. Healthy 5-10% делают 80%.
Velocity и monetization?
Direct: создатели posts = audience attention = ad revenue.
Как stimulate velocity?
Creator funds, contests, gamification, easier creation tools.