Competitor radar
Skill naveedharri/benai-skills/plugins/benai-marketing/skills/competitor-radar
Build and weekly-refresh a branded HTML "Competitor Radar" dashboard that tracks a roster of competitors across YouTube, Instagram, LinkedIn, TikTok, community, and SEO. Use when the user wants to track competitors, monitor competitor socials/engagement/subscribers, build a competitor dashboard, or refresh the weekly competitor report. Gathers real data via connectors (YouTube, Apify, Firecrawl), renders a two-tab (Demo/Actual) dashboard in Ben AI branding, deploys it to a stable Vercel URL via git push, and posts the link to Slack.From its SKILL.md
npx -y skills add naveedharri/benai-skills --skill competitor-radarAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.0 KB, 593 tokens by cl100k_base, as published. Nobody here has run it
Competitor Radar
Tracks a fixed roster of competitors weekly and renders one branded HTML dashboard: follower counts, posting cadence, median engagement, week-over-week subscriber growth, standout post of the week, and SEO, per platform. Two tabs: Demo (a sample niche) and Actual (real competitors, with a focus/blur toggle so only "you" shows on camera).
Files
config.json: the stable roster (who to track, handles per platform, platforms to include, Apify actor ids). Edit to add/remove competitors.radar_data.js: the weekly artifact.WEEK_ENDING,AV(base64 avatars, stable), andDATA({demo, actual}). The refresh step rewrites this.assets/template.html: the fixed dashboard shell (CSS, render logic, tabs, focus mode). Never regenerate; carries a single/*__RADAR_DATA__*/marker.scripts/build_dashboard.py: deterministic build (template + radar_data.js toindex.html). No network.
Weekly refresh workflow
- Read
config.json(roster) and the currentradar_data.js(last week's numbers, needed for week-over-week deltas). - Gather fresh data for each creator per
references/data-sources.md. Do NOT fabricate; mark missing asnull. - Compute deltas per
references/data-sources.md. - Rewrite
radar_data.jswith the newWEEK_ENDINGand refreshedDATA. Handle avatars perreferences/data-sources.md. - Build:
python3 scripts/build_dashboard.py <skill_dir> ../index.html. - Deploy and Slack the live URL per
references/deploy.md.
Self-improvement
This skill is never finished. Improve it as you use it.
- When the user corrects how a step was done, update the relevant reference file (
references/data-sources.md,references/deploy.md) or this SKILL.md so the correction sticks. Do not just fix it for this run. - When a correction is a hard rule ("always X", "never Y"), add it as a permanent rule here.
- When the user says an output was genuinely good, save it to
references/examples/so it becomes a model for future runs. - Keep the skill small: when you add something, run the deletion test and cut anything that no longer changes behavior.
Guardrails
- YouTube numbers are the reliable core; always real. Never invent socials/SEO: set
nulland move on. - Never edit the template shell, CSS, or render JS. Only
radar_data.js(andconfig.jsonwhen the roster changes). - Ben AI voice, no em dashes.
What ships with it: 6 files
190.6 KB alongside SKILL.md, 2 of them executable
assets/
- template.html19.4 KB
references/
- data-sources.md2.3 KB
- deploy.md1.2 KB
scripts/
- build_dashboard.pyruns807 B
- config.json3.7 KB
- radar_data.jsruns163.3 KB