FB apify-ai-search-visibility-tracker
Track whether a brand and its competitors get cited or mentioned across Google AI Overviews, Google AI Mode, ChatGPT Search, Perplexity, Microsoft Copilot, and Google Gemini for a defined set of prompts, on a recurring schedule. Use when user asks to track AI visibility, monitor brand mentions in AI search, track ChatGPT citations, do AI search SEO tracking, GEO tracking (Generative Engine Optimization), AEO tracking (Answer Engine Optimization), monitor Perplexity citations, track AI Overviews mentions, see if their brand shows up in AI search, discover which prompts competitors rank for in AI search, find citation opportunities, or audit a website for AI visibility readiness.
Track whether a brand and its competitors get cited or mentioned across Google AI Overviews, Google AI Mode, ChatGPT Search, Perplexity, Microsoft Copilot…
As a process B 74/100 · Nearly there — weak spots: when it triggers
What is at stake
The skill contains fragments that, in the wrong hands, cost money or data. Below: what the installer risks and what the author should do.
The skill contains commands that delete files, rewrite disks or execute code fetched from the network. The agent may run them without asking if it believes the instructions require it.
Replace destructive commands with safe equivalents that ask for confirmation, scope them to one folder, and stop piping curl into a shell: pin a version and a checksum.
How to improve
- Address the high-severity findings: each costs 18 safety points. If one is a false positive, add the rule id to guard.allow in spec.yaml.
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 20
-
high Dangerous commands
cmd-persistencereference/scripts/install_cron.sh:156Persistence mechanism (cron / launchd / scheduled task / autorun registry)if ! launchctl bootstrap "gui/$(id -u)" "$plist" 2>/dev/null; then
-
high Dangerous commands
cmd-persistencereference/scripts/install_cron.sh:157Persistence mechanism (cron / launchd / scheduled task / autorun registry)launchctl load "$plist"
-
high Dangerous commands
cmd-persistencereference/scripts/install_cron.sh:195Persistence mechanism (cron / launchd / scheduled task / autorun registry)( crontab -l 2>/dev/null | grep -v '# ai-visibility-tracker'; echo "$line" ) | crontab -
Medium and low: 17
-
medium Dangerous commands
cmd-persistencereference/scripts/install_cron.sh:5Persistence mechanism (cron / launchd / scheduled task / autorun registry) (code comment)# macOS -> ~/Library/LaunchAgents/com.apify.ai-visibility-tracker.plist
comment -
medium Dangerous commands
cmd-persistencereference/scripts/install_cron.sh:96Persistence mechanism (cron / launchd / scheduled task / autorun registry) (string literal in code, not executed)local plist="$HOME/Library/LaunchAgents/$LABEL.plist"
code literal -
medium Dangerous commands
cmd-persistencereference/scripts/uninstall_cron.sh:13Persistence mechanism (cron / launchd / scheduled task / autorun registry) (string literal in code, not executed)plist="$HOME/Library/LaunchAgents/$LABEL.plist"
code literal -
medium Dangerous commands
cmd-persistencereference/scripts/uninstall_cron.sh:26Persistence mechanism (cron / launchd / scheduled task / autorun registry) (detector / deny-list definition)crontab -l 2>/dev/null | grep -v '# ai-visibility-tracker' | crontab -
detector -
low Dangerous commands
cmd-cron-mentionreference/scheduling.md:76Mentions editing / listing crontab (documentation table row; documentation of a security skill)| `crontab -l` shows the entry but no log lines | cron daemon disabled | `systemctl status cron` (or `cronie`/`crond`); start it |
tablesecurity skill -
low Dangerous commands
cmd-cron-mentionreference/scripts/install_cron.sh:195Mentions editing / listing crontab( crontab -l 2>/dev/null | grep -v '# ai-visibility-tracker'; echo "$line" ) | crontab -
-
low Dangerous commands
cmd-cron-mentionreference/scripts/install_cron.sh:200Mentions editing / listing crontabcrontab -l
-
low Dangerous commands
cmd-cron-mentionreference/scripts/uninstall_cron.sh:25Mentions editing / listing crontabif crontab -l 2>/dev/null | grep -q '# ai-visibility-tracker'; then
-
low Dangerous commands
cmd-cron-mentionreference/scripts/uninstall_cron.sh:26Mentions editing / listing crontabcrontab -l 2>/dev/null | grep -v '# ai-visibility-tracker' | crontab -
-
low Exfiltration
exfil-secret-in-urlreference/troubleshooting.md:23Credential passed in a URL query string (normal for some APIs — verify the host is the intended service) (placeholder value)Named datasets are scoped to the token's account. Verify by hitting `https://api.apify.com/v2/datasets?token=…&unnamed=… If the runner's first call to "get-or-create dataset by name"
placeholder
A further 7 matches are quotations in this security skill's documentation and are not counted as findings.
Files scanned: 13. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- note
frontmatter-keyunknown frontmatter key "author_url"
Process rating: all ten parameters 74/100
- 20When it triggers. No condition that starts the skill
- 60Tools and files. Uses tools (bash, web, python) that frontmatter does not declare
- 60Result and completion. Output format stated, no completion criterion
- 70Inputs and preconditions. Inputs and preconditions are listed
- 100Steps. 48 steps
- 100Failures and branches. 1 branches, has a failure section
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 3456 tokens
- 100Running it twice. Mutating operations check current state
- 100Progress reporting. Reports progress
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +5Description has no quoted example phrases that should trigger the skill
- +4Description does not say when NOT to use the skill (false activations)
- +1No license
- +2Single-language instructions
- +3Description length 686: enough signal without eating the budget
- +4Structure: 22 headings
- +3Step-by-step instructions: 48 items
- +3Output format is stated explicitly
- +4Has examples (10 code blocks)
- +4Reference files are cited in the instructions (3 of 5)
Quality base 70; lint remarks subtract, signals add up to 100. Result: 90.