Skip to content
← Public packages

@kentcdodds/x

X API v2 helpers for tweets, search, legacy DMs, and encrypted X Chat via a Fly XDK sidecar.

src/summarize-post-metrics.ts

24 lines · 1.0 KB · TypeScript
import { summarizePostMetrics } from './client.ts'
import type { XSummarizePostMetricsParams } from './client.ts'

/**
 * Build an engagement table from posts with public_metrics.
 *
 * Pure when `posts`/`post` are passed (no network). Optional thin fetch via
 * get-post when `ids`/`id`/`url` given.
 *
 * Engagement = likes + replies + retweets + bookmarks + quotes.
 * Rows include quotes / quotesPer1k. `followsPer1k` is always null with
 * `unavailableReason: 'not_in_public_metrics'` — do not scrape Analytics UI.
 *
 * @param params.sort - e.g. 'likesPer1k' | 'impressions' | 'quotesPer1k' | 'engagementPer1k'
 * @param params.filter - 'lowLikeHighImpression' (impressions ≥ median and likesPer1k < median)
 * @example
 * import summarizePostMetrics from 'kody:@kentcdodds/x/summarize-post-metrics'
 * const table = await summarizePostMetrics({ posts, sort: 'likesPer1k' })
 */
export default async function summarizePostMetricsEntrypoint(
	params: XSummarizePostMetricsParams = {},
) {
	return await summarizePostMetrics(params)
}