Server Log Crawler Analyst
Use this skill when credential-free monitoring evidence is enough, or when credentialed
Search Console, rank tracking, analytics, or assistant citation tools are unavailable.
Read references/data-source-tiers.md before producing a monitoring report.
Owns
- credential-free monitoring baseline;
- server access-log summary with IP privacy protection;
- crawler/user-agent observation reports;
- public HTTP checks for robots, llms.txt, sitemaps, RSS, and representative URLs;
- data-source tiering;
- monitoring limitations and unknowns;
- backlog handoff for Search Console, rank/SERP, analytics, and LLM citation monitoring.
Does Not Own
- credentialed Search Console or analytics API work;
- scraping search engines;
- bypassing bot protections;
- live firewall or WAF changes;
- claims about rankings or assistant citations without direct evidence;
- storing raw IP logs in public artifacts.
Workflow
- Identify available evidence: public URL fetches, access-log snippet, exported summary, or synthetic fixture.
- Label the evidence tier and collection time.
- If logs are provided, summarize requests by path, status, user-agent class, and redacted IP hash.
- Separate known crawler hits from unknown bot-like traffic.
- Check public discovery endpoints when requested.
- Record limitations: no Search Console, no rank data, no assistant citation data unless explicitly provided.
- Produce a monitoring report using assets/crawler-monitor-report.template.md.
- Hand off credentialed or citation tasks to the backlog.
Non-Negotiables
- Do not publish raw IP addresses.
- Do not store credentials, cookies, API keys, or private analytics exports in skill files.
- Do not infer ranking, indexing, or citation success from server logs alone.
- Do not claim a user-agent is verified Google/OpenAI/Claude/Perplexity unless verification method is documented.
- Do not scrape SERPs or assistants against terms of service.
- Do not change firewall, WAF, robots, or server config from this skill.
Safety And Privacy Boundaries
- Treat raw logs as private by default.
- Use aggregated counts and redacted identifiers.
- Keep exact timestamps only when needed for evidence; otherwise aggregate by hour/day.
- If the user asks to publish a report, remove raw IP, query strings, session IDs, auth paths, and admin URLs unless explicitly needed and safe.
- Public reports should say "observed in provided logs" rather than "definitely crawled by" unless bot verification is complete.
Evidence Labels
Observed: directly in log, HTTP response, or exported report.
Verified: observed and checked by an accepted verification method.
Inferred: likely based on user-agent/path/status, but not verified.
Open: no evidence available in this run.
Validation
Validate skill edits with:
python3 $CODEX_HOME/skills/senior-skill-architect/scripts/lint_production_skill.py $HOME/SKILL/skills/server-log-crawler-analyst
python3 $HOME/SKILL/skills/server-log-crawler-analyst/scripts/analyze_access_log.py $HOME/SKILL/skills/server-log-crawler-analyst/fixtures/sample-access.log --report /tmp/server-log-crawler-report.json
python3 $HOME/SKILL/plans/seo-llm-skill-cluster/scripts/lint_skill_cluster.py $HOME/SKILL
Forward tests live in evals.json.
Output Shape
Return:
- Evidence source and timestamp.
- Data tier and privacy handling.
- Observed crawler/user-agent classes.
- Public endpoint status checks if performed.
- Suspicious or irrelevant bot traffic summary.
- Unknowns and claims refused.
- Monitoring backlog and next evidence needed.
1---2name: server-log-crawler-analyst3description: Analyze credential-free public website monitoring evidence from server access logs, HTTP fetches, robots/llms/sitemap checks, and exported summaries while protecting raw IP and private query data. Use this skill when the user asks whether crawlers or AI bots reached a site, whether public SEO/LLM discovery files respond, or how to separate observed facts from unknown Search Console, rank, analytics, or citation claims.4---56# Server Log Crawler Analyst78Use this skill when credential-free monitoring evidence is enough, or when credentialed9Search Console, rank tracking, analytics, or assistant citation tools are unavailable.1011Read [references/data-source-tiers.md](references/data-source-tiers.md) before producing a monitoring report.1213## Owns1415- credential-free monitoring baseline;16- server access-log summary with IP privacy protection;17- crawler/user-agent observation reports;18- public HTTP checks for robots, llms.txt, sitemaps, RSS, and representative URLs;19- data-source tiering;20- monitoring limitations and unknowns;21- backlog handoff for Search Console, rank/SERP, analytics, and LLM citation monitoring.2223## Does Not Own2425- credentialed Search Console or analytics API work;26- scraping search engines;27- bypassing bot protections;28- live firewall or WAF changes;29- claims about rankings or assistant citations without direct evidence;30- storing raw IP logs in public artifacts.3132## Workflow33341. Identify available evidence: public URL fetches, access-log snippet, exported summary, or synthetic fixture.352. Label the evidence tier and collection time.363. If logs are provided, summarize requests by path, status, user-agent class, and redacted IP hash.374. Separate known crawler hits from unknown bot-like traffic.385. Check public discovery endpoints when requested.396. Record limitations: no Search Console, no rank data, no assistant citation data unless explicitly provided.407. Produce a monitoring report using [assets/crawler-monitor-report.template.md](assets/crawler-monitor-report.template.md).418. Hand off credentialed or citation tasks to the backlog.4243## Non-Negotiables4445- Do not publish raw IP addresses.46- Do not store credentials, cookies, API keys, or private analytics exports in skill files.47- Do not infer ranking, indexing, or citation success from server logs alone.48- Do not claim a user-agent is verified Google/OpenAI/Claude/Perplexity unless verification method is documented.49- Do not scrape SERPs or assistants against terms of service.50- Do not change firewall, WAF, robots, or server config from this skill.5152## Safety And Privacy Boundaries5354- Treat raw logs as private by default.55- Use aggregated counts and redacted identifiers.56- Keep exact timestamps only when needed for evidence; otherwise aggregate by hour/day.57- If the user asks to publish a report, remove raw IP, query strings, session IDs, auth paths, and admin URLs unless explicitly needed and safe.58- Public reports should say "observed in provided logs" rather than "definitely crawled by" unless bot verification is complete.5960## Evidence Labels6162- `Observed`: directly in log, HTTP response, or exported report.63- `Verified`: observed and checked by an accepted verification method.64- `Inferred`: likely based on user-agent/path/status, but not verified.65- `Open`: no evidence available in this run.6667## Validation6869Validate skill edits with:7071```bash72python3 $CODEX_HOME/skills/senior-skill-architect/scripts/lint_production_skill.py $HOME/SKILL/skills/server-log-crawler-analyst73python3 $HOME/SKILL/skills/server-log-crawler-analyst/scripts/analyze_access_log.py $HOME/SKILL/skills/server-log-crawler-analyst/fixtures/sample-access.log --report /tmp/server-log-crawler-report.json74python3 $HOME/SKILL/plans/seo-llm-skill-cluster/scripts/lint_skill_cluster.py $HOME/SKILL75```7677Forward tests live in [evals.json](evals.json).7879## Output Shape8081Return:82831. Evidence source and timestamp.842. Data tier and privacy handling.853. Observed crawler/user-agent classes.864. Public endpoint status checks if performed.875. Suspicious or irrelevant bot traffic summary.886. Unknowns and claims refused.897. Monitoring backlog and next evidence needed.