بنقرة واحدة
criar-pje-download
Cria skill de download do PJE para qualquer tribunal via engenharia reversa de HAR
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Cria skill de download do PJE para qualquer tribunal via engenharia reversa de HAR
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Converte PDFs judiciais para TXT via OCR. Use com /baixar-converter.
Use when creating MCP servers for Brazilian court jurisprudence searches. Focuses on scraping techniques (JSF/AJAX, HTML parsing) for tribunals without public REST APIs. Includes automatic boolean syntax discovery. Keywords: mcp tribunal, jurisprudência, scraping, precedentes, criar mcp.
Baixa processos do PJE via API REST. Use com /baixar-pje ou /baixar-converter.
| autor | George Marmelstein |
| projeto | Sistema Marmelstein |
| licenca | Todos os direitos reservados |
| ano | 2026 |
| name | criar-pje-download |
| description | Cria skill de download do PJE para qualquer tribunal via engenharia reversa de HAR |
| context | main |
| agent | general-purpose |
| allowed-tools | Read, Write, Bash |
<quando_usar>
- Usuario quer baixar processos de tribunal diferente do TRF5
- Usuario menciona "criar skill para [tribunal]"
- Usuario tem arquivo HAR do PJE de outro tribunal
- Usuario quer adaptar pje-download para seu tribunal
- Se o tribunal for TRF5, usar skill pje-download diretamente
- Se usuario so quer baixar (nao criar skill), usar skill existente
</quando_usar>
**HAR de Listagem (obrigatorio):**
```
1. Abra o PJE do seu tribunal no navegador
2. Faca login com certificado digital
3. Abra DevTools (F12) -> aba Network
4. Marque "Preserve log" para nao perder requisicoes
5. Navegue ate o Painel do Usuario
6. Aguarde carregar a lista de processos
7. Clique direito na lista -> "Save all as HAR"
8. Salve como: pje_listagem.har
```
**HAR de Download (recomendado):**
```
1. Com DevTools ainda aberto
2. Clique em um processo da lista
3. Solicite download dos autos digitais
4. Aguarde o PDF comecar a baixar
5. Salve novo HAR: pje_download.har
```
**Alternativa: Chrome MCP**
Se o usuario tiver Chrome MCP configurado:
```
1. Usar mcp__claude-in-chrome__read_network_requests
2. Navegar pelo PJE logado
3. Capturar requisicoes em tempo real
```
Ler o HAR e identificar o dominio base do PJE.
**Padroes comuns de URL:**
| Tribunal | Padrao 1G | Padrao 2G |
|----------|-----------|-----------|
| TRF1 | pje1g.trf1.jus.br | pje2g.trf1.jus.br |
| TRF2 | pje.trf2.jus.br | pje2g.trf2.jus.br |
| TRF3 | pje1g.trf3.jus.br | pje2g.trf3.jus.br |
| TRF4 | pje.trf4.jus.br | - |
| TRF5 | pje1g.trf5.jus.br | pje2g.trf5.jus.br |
| TRTs | pje.trtN.jus.br | - |
| TJs | pje.tjXX.jus.br | - |
**O que procurar no HAR:**
```python
# Buscar em entries[].request.url
# Filtrar por: /pje/seam/resource/rest/
# Exemplo: https://pje1g.trf5.jus.br/pje/seam/resource/rest/...
BASE_URL = extrair_dominio(url) # https://pje1g.trf5.jus.br
```
Os cookies sao a chave da autenticacao. Identificar quais sao obrigatorios.
**Cookies universais do PJE:**
| Cookie | Funcao | Obrigatorio |
|--------|--------|-------------|
| JSESSIONID | Sessao do servidor | SIM |
| KEYCLOAK_IDENTITY | Token SSO | SIM (se usar Keycloak) |
| KEYCLOAK_SESSION | Sessao SSO | SIM (se usar Keycloak) |
| dtCookie | Monitoramento | Nao |
**Cookies especificos do tribunal:**
Procurar cookies com nome do tribunal (ex: `trf5017e3f72`).
Estes sao identificadores de sessao sticky/load balancer.
**O que procurar no HAR:**
```python
# Em entries[].request.cookies
# Listar todos os cookies unicos
# Marcar quais aparecem em TODAS as requisicoes bem-sucedidas
```
Alguns tribunais exigem headers customizados.
**Headers comuns do PJE:**
| Header | Valor Exemplo | Funcao |
|--------|---------------|--------|
| X-pje-legacy-app | pje-trf5-1g | Identificador da aplicacao |
| X-pje-usuario-localizacao | 12345 | ID da lotacao do usuario |
| X-pje-cookies | [cookie string] | Cookies em header (redundante) |
| Origin | https://pje1g.trf5.jus.br | CORS |
| Referer | https://frontend-prd.trf5.jus.br/ | Pagina de origem |
**ATENCAO: Authorization**
```
NUNCA enviar header Authorization com Bearer token para endpoints de download!
A API REST do PJE usa APENAS cookies para autenticacao de sessao.
Enviar Authorization causa erro 401.
```
**O que procurar no HAR:**
```python
# Em entries[].request.headers
# Filtrar headers que comecam com "X-pje"
# Anotar valores estaticos vs dinamicos
```
Identificar os endpoints da API REST e paginas JSF.
**Endpoints REST (JSON):**
```
# Listagem de processos
GET /pje/seam/resource/rest/pje-legacy/painelUsuario/recuperarProcessosTarefaPendenteComCriterios/{tarefa}/false
# Gerar chave de acesso
GET /pje/seam/resource/rest/pje-legacy/painelUsuario/gerarChaveAcessoProcesso/{idProcesso}
# Buscar por numero CNJ
GET /pje/seam/resource/rest/pje-legacy/api/processoPublico/consultarProcessoPorNumero/{numeroCNJ}
```
**Endpoints JSF (HTML/PDF):**
```
# Lista de autos digitais (HTML com ViewState)
GET /pje/Processo/ConsultaProcesso/Detalhe/listAutosDigitais.seam?ca={chaveAcesso}
# Download de documento
GET /pje/Processo/ConsultaDocumento/listView.seam?idProcessoDocumento={id}
```
**O que procurar no HAR:**
```python
# Filtrar entries por:
# - URL contem "/pje/seam/resource/rest/" (API REST)
# - URL contem ".seam" (paginas JSF)
# - mimeType == "application/pdf" (downloads)
```
Consolidar descobertas em um arquivo de configuracao.
**Criar: config_tribunal.json**
```json
{
"tribunal": "TRF1",
"instancia": "1g",
"base_url": "https://pje1g.trf1.jus.br",
"frontend_url": "https://frontend-prd.trf1.jus.br",
"headers": {
"X-pje-legacy-app": "pje-trf1-1g",
"Origin": "https://pje1g.trf1.jus.br"
},
"cookies_obrigatorios": [
"JSESSIONID",
"KEYCLOAK_IDENTITY",
"trf1xxxxxxxx"
],
"endpoints": {
"listar_processos": "/pje/seam/resource/rest/pje-legacy/painelUsuario/recuperarProcessosTarefaPendenteComCriterios/{tarefa}/false",
"gerar_chave": "/pje/seam/resource/rest/pje-legacy/painelUsuario/gerarChaveAcessoProcesso/{id}",
"autos_digitais": "/pje/Processo/ConsultaProcesso/Detalhe/listAutosDigitais.seam"
},
"tarefas": {
"sentenca": "Elaboração de Sentença - Minutar",
"decisao": "Elaboração de decisão - Minutar"
}
}
```
Usar os scripts do TRF5 como base, substituindo valores hardcoded.
**Arquivo: criar script de listagem**
```python
# Substituir no template:
# - BASE_URL = config["base_url"]
# - X-pje-legacy-app = config["headers"]["X-pje-legacy-app"]
# - Referer/Origin = config["frontend_url"]
```
**Consultar referencias:**
- `references/template-listar.py` - Template do script de listagem
- `references/template-baixar.py` - Template do script de download
**Estrutura de saida:**
```
.claude/skills/pje-download-{tribunal}/
├── SKILL.md
├── config.json
└── scripts/
├── listar_processos.py
├── baixar_pdfs.py
└── extrair_cookies_har.py
```
Testar a skill criada com sessao ativa do usuario.
**Checklist de validacao:**
- [ ] Extrai cookies do HAR corretamente
- [ ] Lista processos da fila escolhida
- [ ] Obtem chave de acesso do processo
- [ ] Baixa PDF dos autos digitais
- [ ] Trata erro de sessao expirada
**Teste minimo:**
```bash
# 1. Extrair cookies
python scripts/extrair_cookies_har.py --har ~/Downloads/pje.har --output session.json
# 2. Listar 1 processo
python scripts/listar_processos.py --cookies session.json --limite 1
# 3. Baixar 1 processo
python scripts/baixar_pdfs.py --cookies session.json --processos processos.json --limite 1
```
O PJE usa duas camadas de autenticacao:
1. **API REST** - Para operacoes de listagem e metadados (JSON)
2. **Sessao JSF** - Para navegacao e download (HTML/PDF com ViewState)
Ambas compartilham cookies, mas a sessao JSF expira mais rapido (~30min).
Todos os tribunais que usam PJE 2.x seguem o mesmo padrao de endpoints.
A diferenca esta em: dominio, cookies de load balancer, e headers X-pje-*.
NUNCA enviar header `Authorization: Bearer` para endpoints de download.
A API REST aceita Bearer, mas as paginas JSF retornam 401 se receber Auth.
Criar scripts com credenciais hardcoded
Tentar adivinhar cookies ou tokens
Ignorar erros de sessao expirada
Documentar o tribunal e versao do PJE
Incluir tratamento de erro 401/403
Validar HAR antes de extrair dados
**Entrada:** HAR com 847 requisicoes do PJE TRF1
**Descobertas:**
- BASE_URL: https://pje1g.trf1.jus.br
- Cookie especifico: trf1a7b8c9d0
- Header: X-pje-legacy-app: pje-trf1-1g
**Saida:** Skill pje-download-trf1 funcional
**Entrada:** HAR de TJ estadual sem KEYCLOAK_IDENTITY
**Descobertas:**
- Autenticacao via JSESSIONID apenas
- Cookie de sessao: TJSPJSESSIONID
- Sem headers X-pje (versao mais antiga)
**Adaptacao:** Script simplificado sem validacao Keycloak
- `references/analise-har.md` - Guia detalhado de analise de HAR
- `references/template-listar.py` - Template do script de listagem
- `references/template-baixar.py` - Template do script de download
- `references/cookies-por-tribunal.md` - Mapeamento de cookies conhecidos
Sistema Marmelstein | George Marmelstein | Todos os direitos reservados | 2026