Install
openclaw skills install @matsclaes2/viral-outliersFind viral outlier posts on TikTok, Instagram and YouTube, pull creator stats, transcribe and analyse videos, build competitor watchlists, and crawl profiles on demand. Prepaid credits, MCP or REST.
openclaw skills install @matsclaes2/viral-outliersUse this skill when the user wants to find viral or trending content in a niche, see which posts massively outperform a creator's usual numbers ("outliers"), pull creator stats, compare creators, transcribe a TikTok, Reel or Short, get a scene-by-scene breakdown of a video, remix a viral post into their own niche, build and search a competitor watchlist, or add a public profile to the database on demand.
Viral Outliers continuously crawls creator profiles and ranks every post by outlier score: how far it overperforms that account's own baseline. That surfaces repeatable formats instead of posts that are big only because the account is big. Billing is prepaid credits (1 credit = $0.01) with a hard stop at zero: no surprise bills.
Two endpoints are free and need no key:
curl https://viraloutliers.com/api/v1/trending
curl https://viraloutliers.com/api/v1/pricing
The user needs an API key: either instantly at https://viraloutliers.com/api-access (pay $15 for 1,500 credits, no account needed, the key is shown right after checkout) or from https://viraloutliers.com/settings?tab=api-keys with a free account. With the key in the VIRAL_OUTLIERS_API_KEY environment variable, register the server once:
openclaw mcp add viral-outliers --url https://viraloutliers.com/api/mcp --transport streamable-http --header "Authorization=Bearer ${VIRAL_OUTLIERS_API_KEY}"
Then call the tools by name (search_outliers, get_post, request_transcript, ...). The server also accepts the key as an x-api-key header, and the free get_trending_outliers tool works before any key is configured. If your OpenClaw build fails to forward the header, use the REST fallback below.
In Hermes Agent, add the server to config.yaml instead (the variable is read from your .env):
mcp_servers:
viral-outliers:
url: "https://viraloutliers.com/api/mcp"
headers:
Authorization: "Bearer ${VIRAL_OUTLIERS_API_KEY}"
curl -X POST https://viraloutliers.com/api/v1/search/content \
-H "Authorization: Bearer $VIRAL_OUTLIERS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "home workout", "platforms": ["tiktok"], "minOutlierScore": 5, "pageSize": 20}'
The full REST contract is at https://viraloutliers.com/openapi.json. If Node 20+ is available, the official CLI wraps every skill with the same key (JSON output, --wait polls async jobs):
npx viral-outliers search-outliers --query "home workout" --platforms tiktok --min-outlier-score 5
search_outliers (1 credit; POST /api/v1/search/content): Find statistically overperforming ("outlier") social media posts across TikTok, Instagram and YouTube with rich filters.search_profiles (1 credit; POST /api/v1/search/profiles): Find tracked creator profiles by name/handle across platforms, with follower and performance stats.get_post (1 credit; GET /api/v1/posts/{postId}): Full data for one post: stats, outlier scores across seven time windows, plus cached transcript and visual analysis when available.get_profile (1 credit; GET /api/v1/profiles/{profileId}): Follower counts, average performance baselines and recent posts for one tracked profile.request_transcript (10 credits; POST /api/v1/transcriptions): Queue AI speech transcription for any tracked video post; poll the job, then fetch via get_post.request_visual_analysis (10 credits; POST /api/v1/visual-analysis): Queue AI scene-by-scene visual analysis (on-screen text, shot breakdown, editing style) for any tracked post; poll the job, then fetch via get_post.crawl_profile (40 credits; POST /api/v1/crawls): Add any public TikTok, Instagram or YouTube profile to the tracked database on demand.get_job_status (free; GET /api/v1/jobs/{jobRef}): Free polling endpoint for asynchronous jobs (crawls, transcriptions).get_credit_balance (free; GET /api/v1/credits): Free endpoint returning your current credit balance.get_pricing (free; GET /api/v1/pricing): Free, unauthenticated, machine-readable price list: per-skill credit costs, credit packs and the USD-per-credit rate.compare_profiles (2 credits; POST /api/v1/profiles/compare): Benchmark 2–5 tracked creators side by side: followers, average views/likes/engagement, and who wins each metric.niche_trends (2 credits; POST /api/v1/trends): The posts spiking in a niche right now, plus which formats and creators are driving it.resolve_post_url (1 credit; POST /api/v1/posts/resolve): Turn a public TikTok/Instagram/YouTube post URL into the internal post id every other skill uses.download_post_media (3 credits; POST /api/v1/posts/media): Get direct media URLs (video or slideshow images) for a tracked post; fetched on demand when not stored.remix_post (20 credits; POST /api/v1/remixes): Turn any public viral post into a niche-adapted content idea: rewritten hook, script segments, a why-it-went-viral analysis and an execution checklist.get_remix_result (free; GET /api/v1/remixes/{jobRef}): Free: fetch the finished output of a remix_post job.create_topup_link (free; POST /api/v1/credits/topup): Out of credits? Get a ready-to-pay Stripe link for a credit pack to hand to the account owner. Free.report_issue (free; POST /api/v1/feedback): Hit a bug, wrong data, or a missing capability? Tell us. It is free, and you can ask to be notified when it is fixed.get_trending_outliers (free; GET /api/v1/trending): Free, no-auth teaser: the current top trending outlier posts across platforms.track_profile (free; POST /api/v1/tracking): Keep a TikTok, Instagram or YouTube profile fresh on a schedule (daily, every 3 days or weekly) and pull its new posts.untrack_profile (free; DELETE /api/v1/tracking): Stop the scheduled refresh crawls for a monitored profile. Free.list_tracked_profiles (free; GET /api/v1/tracking): See every profile you are monitoring, its cadence, next refresh time and whether it is paused. Free.create_watchlist (free; POST /api/v1/watchlists): Create a named set of creators you can then search with a single watchlistId filter. Free.list_watchlists (free; GET /api/v1/watchlists): All your watchlists with their ids and profile counts, so an agent can pick one to search. Free.get_watchlist (free; GET /api/v1/watchlists/{watchlistId}): One watchlist with its member creators (ids, handles, platforms, follower counts). Free.add_watchlist_profiles (free; POST /api/v1/watchlists/profiles): Add up to 25 tracked creators to a watchlist per call, by profile id or by platform+handle. Free; counts against your followed-profiles allowance.remove_watchlist_profiles (free; DELETE /api/v1/watchlists/profiles): Remove creators from a watchlist by profile id. Free.delete_watchlist (free; DELETE /api/v1/watchlists): Delete one of your watchlists and its memberships, freeing the allowance it used. Free.get_tracked_updates (free; GET /api/v1/tracking/updates): Pull the posts first seen since your last check across all monitored profiles, then advance the cursor. Free.Details for every skill, including parameters and example workflows, are in references/skills.md; the step-by-step onboarding guide is in references/getting-started.md.
X-Credits-Charged and X-Credits-Balance headers; get_credit_balance is free. On an insufficient_credits error (HTTP 402), call create_topup_link (free) and give the user the payment link instead of retrying.payment_required with a payment link in error.payment.checkoutUrl: show it to the user, then set VIRAL_OUTLIERS_API_KEY to the key they receive after paying.crawl_profile, request_transcript, request_visual_analysis, download_post_media, remix_post) return a jobRef. Poll get_job_status (free) every 10 to 30 seconds; never resubmit a slow job. Transcripts and visual analyses appear on get_post; remixes on get_remix_result. Failed jobs refund automatically.request_transcript is for videos. Image slideshows have no audio and are rejected without charge; use request_visual_analysis for their on-screen text.create_watchlist, add_watchlist_profiles) and pass its id as watchlistId to search_outliers. Watchlists count against a workspace allowance that comes from a subscription or is earned from API spend; every API key starts with 1 watchlist and 10 followed profiles.search_profiles finds nothing, or resolve_post_url reports profile_not_tracked), crawl_profile adds them within minutes.