[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-0faf69b6-2762-4e0c-8a8c-e7e7ff3ffc4a":3,"$ftuXRR8lV4EVOnlhPqL2hJOt8A_-LprlRoI6L2-m87ws":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"0faf69b6-2762-4e0c-8a8c-e7e7ff3ffc4a","junta-leiloeiros","收集和查询巴西所有27个商业联合会的官方拍卖师数据。多省刮削器、SQLite数据库、FastAPI API和CSV\u002FJSON导出。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: junta-leiloeiros\ndescription: Coleta e consulta dados de leiloeiros oficiais de todas as 27 Juntas Comerciais do Brasil. Scraper multi-UF, banco SQLite, API FastAPI e exportacao CSV\u002FJSON.\nrisk: safe\nsource: community\ndate_added: '2026-03-06'\nauthor: renat\ntags:\n- scraping\n- brazilian-data\n- auctioneers\n- api\ntools:\n- claude-code\n- antigravity\n- cursor\n- gemini-cli\n- codex-cli\n---\n\n# Skill: Leiloeiros das Juntas Comerciais do Brasil\n\n## Overview\n\nColeta e consulta dados de leiloeiros oficiais de todas as 27 Juntas Comerciais do Brasil. Scraper multi-UF, banco SQLite, API FastAPI e exportacao CSV\u002FJSON.\n\n## When to Use This Skill\n\n- When the user mentions \"leiloeiro junta\" or related topics\n- When the user mentions \"junta comercial leiloeiro\" or related topics\n- When the user mentions \"scraper junta\" or related topics\n- When the user mentions \"jucesp leiloeiro\" or related topics\n- When the user mentions \"jucerja\" or related topics\n- When the user mentions \"jucemg leiloeiro\" or related topics\n\n## Do Not Use This Skill When\n\n- The task is unrelated to junta leiloeiros\n- A simpler, more specific tool can handle the request\n- The user needs general-purpose assistance without domain expertise\n\n## How It Works\n\nColeta dados públicos de leiloeiros oficiais de todas as 27 Juntas Comerciais estaduais,\npersiste em banco SQLite local e oferece API REST e exportação em múltiplos formatos.\n\n## Localização\n\n```\nC:\\Users\\renat\\skills\\junta-leiloeiros\\\n├── scripts\u002F\n│   ├── scraper\u002F\n│   │   ├── base_scraper.py      ← classe abstrata\n│   │   ├── states.py            ← registro dos 27 scrapers\n│   │   ├── jucesp.py \u002F jucerja.py \u002F jucemg.py \u002F jucec.py \u002F jucis_df.py\n│   │   └── generic_scraper.py   ← usado pelos 22 estados restantes\n│   ├── db.py                    ← banco SQLite\n│   ├── run_all.py               ← orquestrador de scraping\n│   ├── serve_api.py             ← API FastAPI\n│   ├── export.py                ← exportação\n│   └── requirements.txt\n├── references\u002F\n│   ├── juntas_urls.md           ← URLs e status de todas as 27 juntas\n│   ├── schema.md                ← schema do banco\n│   └── legal.md                 ← base legal\n└── data\u002F\n    ├── leiloeiros.db            ← banco SQLite (criado no primeiro run)\n    ├── scraping_log.json        ← log de cada coleta\n    └── exports\u002F                 ← arquivos exportados\n```\n\n## Instalação (Uma Vez)\n\n```bash\npip install -r C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\requirements.txt\n\n## Para Sites Com Javascript:\n\nplaywright install chromium\n```\n\n## Coletar Dados\n\n```bash\n\n## Todos Os 27 Estados\n\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\run_all.py\n\n## Estados Específicos\n\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\run_all.py --estado SP RJ MG\n\n## Ver O Que Seria Coletado Sem Executar\n\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\run_all.py --dry-run\n\n## Controlar Paralelismo (Default: 5)\n\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\run_all.py --concurrency 3\n```\n\n## Estatísticas Por Estado\n\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\db.py\n\n## Sql Direto\n\nsqlite3 C:\\Users\\renat\\skills\\junta-leiloeiros\\data\\leiloeiros.db \\\n  \"SELECT estado, COUNT(*) FROM leiloeiros GROUP BY estado\"\n```\n\n## Servir Api Rest\n\n```bash\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\serve_api.py\n\n## Docs Interativos: Http:\u002F\u002FLocalhost:8000\u002FDocs\n\n```\n\n**Endpoints:**\n- `GET \u002Fleiloeiros?estado=SP&situacao=ATIVO&nome=silva&limit=100`\n- `GET \u002Fleiloeiros\u002F{estado}` — ex: `\u002Fleiloeiros\u002FSP`\n- `GET \u002Fbusca?q=texto`\n- `GET \u002Fstats`\n- `GET \u002Fexport\u002Fjson`\n- `GET \u002Fexport\u002Fcsv`\n\n## Exportar Dados\n\n```bash\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\export.py --format csv\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\export.py --format json\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\export.py --format all\npython C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\\export.py --format csv --estado SP\n```\n\n## Usar Em Código Python\n\n```python\nimport sys\nsys.path.insert(0, r\"C:\\Users\\renat\\skills\\junta-leiloeiros\\scripts\")\nfrom db import Database\n\ndb = Database()\ndb.init()\n\n## Todos Os Leiloeiros Ativos De Sp\n\nleiloeiros = db.get_all(estado=\"SP\", situacao=\"ATIVO\")\n\n## Busca Por Nome\n\nresultados = db.search(\"silva\")\n\n## Estatísticas\n\nstats = db.get_stats()\n```\n\n## Adicionar Scraper Customizado\n\nSe um estado precisar de lógica específica (ex: site usa JavaScript):\n\n```python\n\n## Scripts\u002FScraper\u002FMeu_Estado.Py\n\nfrom .base_scraper import AbstractJuntaScraper, Leiloeiro\nfrom typing import List\n\nclass MeuEstadoScraper(AbstractJuntaScraper):\n    estado = \"XX\"\n    junta = \"JUCEX\"\n    url = \"https:\u002F\u002Fwww.jucex.xx.gov.br\u002Fleiloeiros\"\n\n    async def parse_leiloeiros(self) -> List[Leiloeiro]:\n        soup = await self.fetch_page()\n        if not soup:\n            return []\n        # lógica específica aqui\n        return [self.make_leiloeiro(nome=\"...\", matricula=\"...\")]\n```\n\nRegistrar em `scripts\u002Fscraper\u002Fstates.py`:\n```python\nfrom .meu_estado import MeuEstadoScraper\nSCRAPERS[\"XX\"] = MeuEstadoScraper\n```\n\n## Referências\n\n- URLs de todas as juntas: `references\u002Fjuntas_urls.md`\n- Schema do banco: `references\u002Fschema.md`\n- Base legal da coleta: `references\u002Flegal.md`\n- Log de coleta: `data\u002Fscraping_log.json`\n\n## Best Practices\n\n- Provide clear, specific context about your project and requirements\n- Review all suggestions before applying them to production code\n- Combine with other complementary skills for comprehensive analysis\n\n## Common Pitfalls\n\n- Using this skill for tasks outside its domain expertise\n- Applying recommendations without understanding your specific context\n- Not providing enough project context for accurate analysis\n\n## Related Skills\n\n- `leiloeiro-avaliacao` - Complementary skill for enhanced analysis\n- `leiloeiro-edital` - Complementary skill for enhanced analysis\n- `leiloeiro-ia` - Complementary skill for enhanced analysis\n- `leiloeiro-juridico` - Complementary skill for enhanced analysis\n- `leiloeiro-mercado` - Complementary skill for enhanced analysis\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,86,326,"2026-05-16 13:24:44",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"0a564d0c-c377-42f8-b537-4c5ccb7cefb6","1.0.0","junta-leiloeiros.zip",62112,"uploads\u002Fskills\u002F0faf69b6-2762-4e0c-8a8c-e7e7ff3ffc4a\u002Fjunta-leiloeiros.zip","f72ec10b1717a6dfb4e3e54d1c7578f50270e3c9257c830ca3e91842dc34e81c","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":6554},{\"path\":\"references\u002Fjuntas_urls.md\",\"isDirectory\":false,\"size\":5530},{\"path\":\"references\u002Flegal.md\",\"isDirectory\":false,\"size\":2872},{\"path\":\"references\u002Fschema.md\",\"isDirectory\":false,\"size\":3523},{\"path\":\"scripts\u002Fdb.py\",\"isDirectory\":false,\"size\":7783},{\"path\":\"scripts\u002Fexport.py\",\"isDirectory\":false,\"size\":4497},{\"path\":\"scripts\u002Frequirements.txt\",\"isDirectory\":false,\"size\":275},{\"path\":\"scripts\u002Frun_all.py\",\"isDirectory\":false,\"size\":6245},{\"path\":\"scripts\u002Fscraper\u002F__init__.py\",\"isDirectory\":false,\"size\":154},{\"path\":\"scripts\u002Fscraper\u002Fbase_scraper.py\",\"isDirectory\":false,\"size\":8119},{\"path\":\"scripts\u002Fscraper\u002Fgeneric_scraper.py\",\"isDirectory\":false,\"size\":4149},{\"path\":\"scripts\u002Fscraper\u002Fjucap.py\",\"isDirectory\":false,\"size\":4555},{\"path\":\"scripts\u002Fscraper\u002Fjuceac.py\",\"isDirectory\":false,\"size\":2773},{\"path\":\"scripts\u002Fscraper\u002Fjuceal.py\",\"isDirectory\":false,\"size\":2782},{\"path\":\"scripts\u002Fscraper\u002Fjuceb.py\",\"isDirectory\":false,\"size\":2698},{\"path\":\"scripts\u002Fscraper\u002Fjucec.py\",\"isDirectory\":false,\"size\":2255},{\"path\":\"scripts\u002Fscraper\u002Fjucema.py\",\"isDirectory\":false,\"size\":8292},{\"path\":\"scripts\u002Fscraper\u002Fjucemg.py\",\"isDirectory\":false,\"size\":8672},{\"path\":\"scripts\u002Fscraper\u002Fjucep.py\",\"isDirectory\":false,\"size\":2682},{\"path\":\"scripts\u002Fscraper\u002Fjucepa.py\",\"isDirectory\":false,\"size\":2910},{\"path\":\"scripts\u002Fscraper\u002Fjucepar.py\",\"isDirectory\":false,\"size\":3102},{\"path\":\"scripts\u002Fscraper\u002Fjucepe.py\",\"isDirectory\":false,\"size\":3126},{\"path\":\"scripts\u002Fscraper\u002Fjucepi.py\",\"isDirectory\":false,\"size\":2688},{\"path\":\"scripts\u002Fscraper\u002Fjucer.py\",\"isDirectory\":false,\"size\":9434},{\"path\":\"scripts\u002Fscraper\u002Fjucerja.py\",\"isDirectory\":false,\"size\":6717},{\"path\":\"scripts\u002Fscraper\u002Fjucern.py\",\"isDirectory\":false,\"size\":2902},{\"path\":\"scripts\u002Fscraper\u002Fjucesc.py\",\"isDirectory\":false,\"size\":3610},{\"path\":\"scripts\u002Fscraper\u002Fjucesp.py\",\"isDirectory\":false,\"size\":9269},{\"path\":\"scripts\u002Fscraper\u002Fjucetins.py\",\"isDirectory\":false,\"size\":5376},{\"path\":\"scripts\u002Fscraper\u002Fjucis_df.py\",\"isDirectory\":false,\"size\":2264},{\"path\":\"scripts\u002Fscraper\u002Fjucisrs.py\",\"isDirectory\":false,\"size\":12034},{\"path\":\"scripts\u002Fscraper\u002Fstates.py\",\"isDirectory\":false,\"size\":5436},{\"path\":\"scripts\u002Fserve_api.py\",\"isDirectory\":false,\"size\":4962},{\"path\":\"scripts\u002Fweb_scraper_fallback.py\",\"isDirectory\":false,\"size\":8999}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]