⚠ Shadowban Alerts All accounts →
Top Growing Accounts 7-day winners
Throttle Risk Manage →
IG-Ready Posts Top performers →
⚠ Flags — Underperforming Posts
Loading…
⚠ Flags — Repetition Risk
Loading…
📅 Scheduled in Metricool
Loading…
Recent Virals
Activity
Shadowban check: When a post's 1h views drop below 5% of the account's typical, the account auto-flags as suspected. Confirm or dismiss in the account detail drawer.
When a video pops: log all 5 variables (hook/sound/outfit/setting/caption), pick ONE to test, post 5–10 variations changing only that. Evolve every 5–7 posts.
IG-Ready = anything performing above the threshold (currently 100k views). Adjust in Settings. High-view posts are repost candidates for Instagram.
Theme rotation: Same theme yes, same exact format no. Throttling kicks in around post 7. Evolve a variable every 5–7 posts.
Brands
Loading…
Thresholds

Tune what counts as "IG-ready" and what flags a post as viral.

default 100,000
default 5,000
default 100,000
API Integrations

Plug in API keys to enable Metricool scheduling sync and AI content idea generation.

Get one at console.anthropic.com → API Keys
Metricool → Account → Profile → API
The brand to show in the dashboard scheduling widget
Flag a post if 1h-views drop more than this % below the account's average
Backup

All data lives in this browser. Export regularly — VPS backend coming next.

Bulk import creators

Upload a JSON file containing an array of creators. Each entry should match the creator schema (name, niche, tags, notes, etc.). The 54-creator ryftbot roster is loaded automatically when you first run node init.js on the server.

Keyboard shortcuts
+KCommand palette / search
NNew item in current tab
/Focus search
EscClose drawer / palette
18Jump to tab (1=Dashboard, 3=Accounts, 4=Viral, etc.)

ENVY.
Command Centre · Sign in
First time? Run node init.js on the server.
} } catch (e) { alert('Metricool failed: ' + e.message); } } async function syncAccountsFromMetricool() { if (!confirm('Pull all platform handles (TikTok / Instagram / Twitter / YouTube) from your linked Metricool brands and create Account records?\n\nExisting accounts with the same handle will be skipped.')) return; try { const r = await api.post('/metricool/sync-accounts'); toast(`✓ Created ${r.created} accounts · ${r.skipped} already existed`); await loadStateFromApi(); renderAccounts(); } catch (e) { alert('Sync failed: ' + e.message); } } loadPrefs(); applyTheme(); (async () => { try { await api.get('/auth/me'); hideLogin(); await loadStateFromApi(); showTab('dashboard'); } catch (e) { showLogin(); } })();