SkillAgentSearch skills...

Substats

( `д′) how many followers do i have? how many!

Install / Use

/learn @spencerwooo/Substats
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<div align="center"> <img src="./assets/header.png" alt="substats" /> <h3><a href="https://api.swo.moe/stats">substats</a></h3> <p><a href="#get-started">Get started</a> · <a href="#whats-new">What's new?</a> · <a href="#sponsoring">Sponsoring</a></p> <p>( `д′) <em>how many followers do i have? how many!</em></p> <img src="https://img.shields.io/badge/Cloudflare-F69652?style=flat&logo=cloudflare&logoColor=white" alt="Cloudflare Workers" /> <img src="https://img.shields.io/badge/Version-2.0*-F69652?style=flat&labelColor=2B3137" alt="Version 2.0/substats" /> <a href="https://github.com/spencerwooo/substats/actions?query=workflow%3ADeploy"><img src="https://github.com/spencerwooo/substats/workflows/Deploy/badge.svg" alt="Vercel" /></a> </div>

Get started

sub · stats /səb ˈ stats/

  • a serverless api for getting the number of followers of you in your favourite services

*Version 2.0 is still in beta, not all features are ported from 1.0. Check below for details 👇

Basic

https://api.swo.moe

You request:

GET /stats/:source/:key

I respond:

{
  source: string,
  key: string,
  failed: true | false,
  count: number | string  // Most often it's a number when source !== 'common'
}

Yep, it's that simple now. ;)

*Note that key needs to be url encoded, remember this if you are requesting the feedly, inoreader, or feedspub routes.

Building badges 🎫

Of course! And as a matter of fact, substats works quite well with shields.io's /dynamic route. All these badges below are dynamically generated with substat's data:

GitHub Telegram 微博 少数派 爱发电 即刻 Steam 知乎 哔哩哔哩 掘金 [![语雀](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.swo.moe%2Fstats%2Fyuque%2F85213&query=count&color=2CA5E0&label=%E8%AF%AD%E9%9B%80&labelColor=36d07c&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTc2IiBoZWlnaHQ9IjE3MiIgdmlld0JveD0iMCAwIDE3NiAxNzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxyYWRpYWxHcmFkaWVudCBjeD0iMzguMTc1JSIgY3k9Ijg2LjA3OCUiIGZ4PSIzOC4xNzUlIiBmeT0iODYuMDc4JSIgcj0iOTcuMDY3JSIgZ3JhZGllbnRUcmFuc2Zvcm09InNjYWxlKC44NTUzNyAxKSByb3RhdGUoLTQ2LjMwMSAuNDE0IC43ODUpIiBpZD0iYiI+PHN0b3Agc3RvcC1jb2xvcj0iIzE3OEY2NyIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiMzMUNDNzkiIHN0b3Atb3BhY2l0eT0iLjU1IiBvZmZzZXQ9IjU0LjY4NSUiLz48c3RvcCBzdG9wLWNvbG9yPSIjNTNFNjhEIiBzdG9wLW9wYWNpdHk9Ii44IiBvZmZzZXQ9IjEwMCUiLz48L3JhZGlhbEdyYWRpZW50PjxwYXRoIGQ9Ik03Ni41NjcgMGgxLjA2NWwuNTA5LjAwMy41MTkuMDAyLjUyOC4wMDQuNTM4LjAwNS41NDcuMDA2LjU1Ni4wMDcuMzc2LjAwNS4zOC4wMDYuNTc4LjAxLjU4Ny4wMTEuNTk2LjAxMi40MDIuMDEuNjEuMDE0LjYyLjAxNi42MjcuMDE4LjQyMy4wMTMuNjQyLjAyLjY1LjAyMS40MzkuMDE2LjQ0Mi4wMTYuNDQ1LjAxNy40NS4wMTcuNDUyLjAxOS40NTYuMDE5LjY5Mi4wMy40NjUuMDIxLjcwNC4wMzQuNDc0LjAyMy40NzcuMDI0LjcyMi4wMzguNDg2LjAyNi40OS4wMjcuNDkyLjAyOC40OTUuMDMuNS4wMy41MDIuMDMuNTA1LjAzMi41MDkuMDMzLjUxMi4wMzQuNTE1LjAzNWMxOC40OSAxLjI2MyAyMy4zODggMTQuNTggMjMuOTA5IDE2LjE3M2wuMDI3LjA4NS4wMjEuMDcgOC4wMjcuNDM4YS43NzYuNzc2IDAgMCAxIC4zMzkgMS40NzNjLTguMjQgNC40NTktMTAuNzU3IDEzLjUxOC05LjI3NyAxOS40Mi40NzcgMS45MDIgMS4yMTggMy41MzcgMi4wNDMgNS4yNjVsLjUyMSAxLjA4N2MxLjkxIDMuOTk1IDQuMDU0IDguODMxIDQuNDA0IDE4LjU2NS43ODQgMjEuNzktMTguMzcgNDEuMzczLTQxLjAzMiA0MS4zNzNoLS43NzhsLS44NzcuMDAzLS42NC4wMDMtMS4wNDQuMDA2LS43NTIuMDA0LS43OTYuMDA2LTEuMjc3LjAxLTEuMzc3LjAxMS0xLjQ3OC4wMTQtMi4xMjUuMDItMS43MS4wMTgtMy4wNzMuMDMzLTMuMzUxLjAzOC0zLjYyOS4wNDMtMi4zMS4wMjgtMy4yMzcuMDQtNC4yOTUuMDU1LTQuNTczLjA2LTMuODU4LjA1MS02LjEyLjA4NC00LjMwNC4wNTktNy45NTcuMTExLTguNTAyLjEyMS03LjcyLjExMi00LjAxMS4wNTggNDguNDY0LTU1LjExMi40NC0uNS40MzgtLjQ5OS40MzYtLjQ5NSAyLjE2MS0yLjQ0OS40MjctLjQ4NC40MjUtLjQ4My40MjMtLjQ4Mi4yMS0uMjQuNDItLjQ4LjIwOS0uMjQuNDE1LS40NzkuNDE0LS40NzdjNC44MDktNS41NyA5LjA5LTExLjAwOCAxMi4xMzEtMTcuMjQ0IDMuMzc2LTkuNTM2LS4wNi0xNi42NTItMy41Ny0yMC45NjMtLjI3LS4zMzMtLjU0MS0uNjUtLjgxLS45NDktMS4xOTYtMS41My0uMzgyLTQuMDgyIDEuODk2LTQuMDgyLjE4NSAwIC4zNzUtLjAwMi41NjgtLjAwNmwuNDQtLjAwOS4zMDItLjAwNS40Mi0uMDA1LjQzMS0uMDA0LjI5My0uMDAzLjc1Mi0uMDA1TDc2LjA5IDAgNzYuNTY3IDB6IiBpZD0iYSIvPjxsaW5lYXJHcmFkaWVudCB4MT0iODEuNDY4JSIgeTE9IjU3LjE4OCUiIHgyPSItOC4yMzYlIiB5Mj0iNzkuMTI0JSIgaWQ9ImQiPjxzdG9wIHN0b3AtY29sb3I9IiNGRkYiIHN0b3Atb3BhY2l0eT0iMCIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3AtY29sb3I9IiNENkYwNTYiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0iTTU2LjE5NiA1MC41ODdDMzUuMjIgNzQuMTkyIDEwLjI1NiAxMDIuOTEzLjc4IDExMy43MDFjLTEuODI1IDIuMDc5LS4wNTYgNC4wNDEgMS4zNTggNC4yODQgNzAuNyAxMi4xNTUgOTMuMTQ3LTIxLjE2MiA5OC4xNDctMzYuMzkyIDYuODQxLTIwLjgzOC0yLjgyNS0zMS4wMDYtOC4yOTUtMzQuMzIyLTE4LjU1LTExLjI0My0zMi4zMTQtLjU5OS0zNS43OTMgMy4zMTZ6IiBpZD0iYyIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3LjkzMyAzMC4xMzUpIj48dXNlIGZpbGw9IiMzMUNDNzkiIHhsaW5rOmhyZWY9IiNhIi8+PHVzZSBmaWxsLW9wYWNpdHk9Ii42IiBmaWxsPSJ1cmwoI2IpIiB4bGluazpocmVmPSIjYSIvPjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNy45MzMgMzAuMTM1KSI+PHVzZSBmaWxsPSIjOTNFN

View on GitHub
GitHub Stars896
CategoryDevelopment
Updated5d ago
Forks60

Languages

TypeScript

Security Score

100/100

Audited on Mar 29, 2026

No findings