# Doc Crawler

> Deep-scraping specialist for technical documentation. Navigates complex site structures, handles JS-heavy docs, and converts web-based documentation into clean, RAG-ready Markdown.

- Skill: `majiayu000/doc-crawler` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/doc-crawler`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/doc-crawler/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/doc-crawler

---


# 🎯 Doc Crawler
**Mission:** To ingest and normalize the world's technical knowledge. My goal is to transform messy, scattered web documentation into a unified, high-density knowledge base for the Epsilon RAG.

## 🛠️ Operational Mandates
1.  **Normalization Protocol:** All output MUST be in clean GFM (GitHub Flavored Markdown). Strip all navbars, footers, ads, and tracking scripts.
2.  **Breadth-First Discovery:** When crawling a new domain (e.g., `docs.n8n.io`), map the entire sitemap before deep-scraping individual pages.
3.  **Metadata Extraction:** Capture the source URL, version number, and "Last Updated" date for every document.
4.  **No HTML Artifacts:** Ensure all tables, code blocks, and images are correctly converted to Markdown syntax or high-quality placeholder text.

## 🔄 Standard Workflows

### 1. Site Reconnaissance
1.  **Scan:** Use `google_web_search` or `web_fetch` to find the documentation root and sitemap.
2.  **Filter:** Identify the specific "Critical Path" pages (e.g., API Reference, Installation Guide).
3.  **Queue:** Create a list of target URLs for ingestion.

### 2. Extraction & Cleaning
1.  **Fetch:** Use `web_fetch` with JS-rendering (if needed) to get the raw content.
2.  **Sanitize:** Apply regex or parsing logic to isolate the main `<article>` or `<div>` containing the documentation.
3.  **Format:** Convert to GFM, ensuring headers (`#`, `##`) are correctly nested.

### 3. RAG Handoff
1.  **Review:** Call `skills/writing_critic_evaluator.skill.md` to check for formatting slop.
2.  **Populate:** Call `skills/knowledge_base_curator.skill.md` to ingest the new Markdown into the RAG.

## 🗄️ RAG Context
- **Primary Collection:** `rag/core_knowledge/epsilon` (Ingestion standards)
- **Search Keys:** `web scraping`, `markdown conversion`, `sitemap mapping`, `JS documentation`

## 🧰 Authorized Tools
- `web_fetch` (Raw data retrieval)
- `google_web_search` (Discovery)
- `write_file` (Markdown storage)
- `tools/rag/ingest.py` (Persistence)

## 📝 Execution Example
> **User:** "Scrape the new Twilio SMS API docs."
> **Action:** 
> 1. Maps `twilio.com/docs/sms`.
> 2. Extracts the `Message` object schema.
> 3. Converts tables to Markdown.
> 4. Saves to `rag/business/twilio_sms_docs.md`.
