Pulling the numbers for your own accounts into a dashboard and scheduling a few posts is a weekend job: Meta's insights, YouTube Analytics and Bluesky or Mastodon feeds all work for accounts you own. What gets hard is breadth and upkeep. LinkedIn analytics sit behind partner approval, X charges for API access, competitor tracking relies on public data you must collect yourself, and every network changes fields and limits without warning. A narrow version for Instagram, Facebook and YouTube with a PDF report is realistic; Metricool's coverage and client reporting are not.
Before you buildMetricool Free already covers one brand with 20 scheduled posts a month and 30 days of analytics. Try it before you pay or build anything.
Build me a social analytics dashboard with a post scheduler for my own accounts to replace Metricool. Requirements: - Node.js 22 + TypeScript: a Hono server that renders pages with htmx, and Chart.js served from /static. `npm start` serves http://localhost:4880 and runs a collector job in the same process. - Storage: better-sqlite3 in ./data/metrics.db: accounts (network, handle, encrypted token), daily_metrics (account, date, followers, reach, impressions, engagement), posts (remote id, url, text, published_at, a metrics snapshot per day for 30 days), scheduled_posts and report runs. Tokens are encrypted with AES-256-GCM using TOKEN_KEY from .env. - Collectors behind one interface fetch(account, since): Instagram and Facebook Page (Graph API insights), YouTube (YouTube Analytics API, OAuth), Bluesky (`@atproto/api`) and Mastodon (instance API). Run at startup and every 6 hours, backfill what each API allows, and store the raw JSON next to the parsed row so a renamed field does not lose data. - Dashboard: one page per account with a follower line, reach and engagement-rate charts, a heat map of weekday x hour by engagement rate and a top-posts table; an all-accounts page comparing networks over 7, 30 and 90 days. - Competitors: add public Bluesky, Mastodon and YouTube handles and record followers and posting cadence daily. Instagram competitors are out, because the API returns little about other accounts. - Scheduler: compose a post for Instagram, a Facebook Page, Bluesky or Mastodon with a date and time in TIMEZONE from .env. A worker publishes it, setting status to publishing first so nothing posts twice. - Reports: a "Generate report" button renders the dashboard for a date range to PDF (`playwright` page.pdf) and a CSV of daily metrics in ./data/reports/; an optional setting writes one on day 1. - Single user with one password in .env. No accounts, no telemetry, local-first. The only outbound calls are to the networks listed above. - Out of scope: LinkedIn, TikTok, X, ads accounts, team roles and approvals, white-label reports, AI assistant. - README: creating the Meta and Google developer apps, scopes, token refresh, which metrics each network returns, where the data lives and how to back it up.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Metricool.
Add a monthly emailed report to the analytics dashboard in this folder. Requirements: - On day 1 at 08:00 in TIMEZONE, generate last month's PDF and CSV and email them with nodemailer SMTP (settings in .env) to REPORT_TO. - The email body is a plain-text summary: followers change, best post, worst week, and the top 3 hours to post, each computed from the database. - Keep a history of sent reports with date and status; a "Send now" button re-sends the last one. - If a collector has been failing for more than 2 days, say so at the top of the email. - Update the README.
Add drop alerts to the analytics dashboard in this folder. Requirements: - After each collector run, compare each account's reach and followers with its trailing 14-day median. - Raise an alert when reach falls more than 40% below the median for 2 days in a row, or when followers fall by more than 2% in a day. The thresholds live in settings. - Show alerts on the dashboard and send one email per alert, at most once per account per day. - Do not alert for the first 14 days of an account's history. - Add unit tests with fixed series for each rule. Update the README.
Add a website traffic panel to the analytics dashboard in this folder. Requirements: - Read daily visitors, pageviews and top referrers from an Umami or Plausible instance whose URL and API token are in .env. - Show them as one more account on the dashboard, with the same 7, 30 and 90 day views. - On each chart, mark days where a scheduled post was published, so traffic bumps can be matched to posts. - Cache responses for 1 hour and show "unreachable" instead of failing if the instance is down. - Update the README.
One screen covers scheduling, analytics, competitors and ads for many accounts, and the price follows the number of brands rather than seats. The reports sent to clients are the product, and Metricool keeps the connections behind those numbers working while networks change their APIs.
Estimate · Runs on your machine, or a $5 VPS if the collector must run while the laptop sleeps. The network APIs used here cost nothing. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 1 brand with all networks except LinkedIn and X, 20 scheduled posts a month, 30 days of analytics, 5 competitor profiles, 5 AI credits per brand a month. |
| Starter | $25 | $20 | 5 brands for $25 or 10 brands for $45 a month. Unlimited scheduling under a fair-use policy, LinkedIn, analytics with unlimited history, 100 competitor profiles, 20 AI credits per brand, PDF and PowerPoint reports, automated reports, several link-in-bio pages. |
| Advanced | $67 | $53 | 15 brands for $67, 25 for $107 or 50 for $210 a month. Adds team and client management, roles, post approval, customizable report templates, a Looker Studio connector, the API (Zapier, Make) and 35 AI credits per brand. |
| Custom | custom | — | Any number of brands, white label, a dedicated account manager, custom AI credits. |
Free covers 1 brand, 20 scheduled posts a month and 30 days of analytics.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: LinkedIn and X analytics, which sit behind partner approval or paid API access, Competitor tracking for up to 100 profiles on Starter.
About $25 a month on the Starter (5 brands) plan, $300 a year (checked 2026-10-19).
LinkedIn and X analytics, which sit behind partner approval or paid API access; Competitor tracking for up to 100 profiles on Starter; Facebook Ads, Google Ads and TikTok Ads reporting next to organic numbers; Client reports with templates, schedules and white label; Team roles and post approval for agencies. If any of those matter to you, keep paying.
Yes: Postiz (open source), Mixpost Lite (open source), BrightBean Studio (open source).