원클릭으로
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 직업 분류 기준
| 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
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.