Sobre este acervo

Como está organizado

O item de mais alto nível é o livro. Cada livro é uma pasta em livros/ com exatamente três páginas:

Arquivo Papel
index.qmd Ficha do livro: autoria, edição, fonte, estado do trabalho
original.qmd Texto integral
resumo.qmd Versão comprimida

Importar um livro de qualquer formato

Peça ao Claude Code: “importe o livro X” — a skill importar-livro (.claude/skills/) conduz a cadeia inteira:

fonte (PDF, EPUB, MOBI, DOC, RTF, HTML, TXT)
   │  [OCR, se for digitalização]
   ▼
 .docx   ← formato-pivô: onde a revisão humana acontece
   │  pandoc
   ▼
  .md    ← correção de OCR, transcrição, tradução (em blocos)
   │  livro.dart
   ▼
 .qmd    ← única coisa que entra no site

A conversão até o .md é uma chamada:

dart .misc/tools/importar.dart "<fonte>" --saida-dir _fontes
dart .misc/tools/importar.dart "<fonte>" --so-docx   # para no pivô, para revisar no Word

Transcrição e tradução vão em blocos retomáveis (blocos.dart), processados pelo subagente transcritor — um bloco por vez, com glossário compartilhado para o vocabulário não derivar entre capítulos.

Adicionar um livro novo

dart .misc/tools/livro.dart novo "Título do Livro" \
  --autor "Fulano de Tal" \
  --ano 1867 \
  --categorias "filosofia,século XIX" \
  --fonte "arquivo-original.docx"

Cria a pasta, gera os três .qmd, registra o livro na barra lateral e — se a fonte for .docx, .epub, .odt, .rtf ou .html — já despeja o texto convertido dentro de original.qmd.

Outros comandos:

# repõe o corpo de um .qmd a partir de uma nova fonte
dart .misc/tools/livro.dart importar <slug> "fonte.docx" --como original
dart .misc/tools/livro.dart importar <slug> "resumo.md"  --como resumo

# regenera a seção "Acervo" da barra lateral em _quarto.yml
dart .misc/tools/livro.dart sidebar

PDF não é importável direto: precisa de OCR antes (o resultado costuma exigir revisão manual pesada).

O que a importação limpa automaticamente

  • CRLF do Windows;
  • divs e âncoras que o pandoc gera a partir de EPUB (::: {...}, []{#...});
  • cabeçalhos que vieram como texto literal do .docx (\## Título → ## Título);
  • títulos de capítulo em texto corrido — CAPÍTULO 3, Conferência 5, PARTE II — promovidos a #, o que dá sumário navegável a textos que chegaram sem hierarquia.

Corrigir OCR

.misc/tools/ocr.dart é um corretor assistido: ele não sabe português, ele aprende o léxico do próprio livro. Palavras que aparecem muitas vezes são quase sempre corretas; uma palavra rara a uma edição de distância de uma frequente é o padrão exato de um erro de OCR.

dart .misc/tools/ocr.dart analisar livros/<slug>/original.qmd
# revise .misc/ocr/<slug>-original.tsv (coluna `aplicar`)
dart .misc/tools/ocr.dart aplicar  livros/<slug>/original.qmd --dry-run
dart .misc/tools/ocr.dart aplicar  livros/<slug>/original.qmd
dart .misc/tools/ocr.dart hifens   livros/<slug>/original.qmd --dry-run

O analisar só marca aplicar=sim sozinho quando a evidência é conclusiva:

  • dígito no meio de palavra (1azão → razão, s9r → ser);
  • acento sobrando (sentído → sentido, náo → não).

Tudo o mais fica em ? para você decidir, porque o resto não é decidível por máquina:

Armadilha Exemplo
Plural e flexão parecem erro umas→uma, parar→para, américas→américa
Citação em espanhol perde acento como um erro imperio, violencia, resistencia
Clítico quebra no hífen escrevê-lo, torná-lo
Palavra real e rara vira “erro” hão, vêm, copta, while

Por isso a coluna pista ordena a fila: comece por impronunciavel — a forma errada contém uma sequência de letras que não ocorre em nenhuma palavra do livro, e ali a densidade de erro real é alta. dist1/dist2 são só semelhança, e a maioria é palavra legítima.

Aprovar em bloco depois de conferir uma faixa:

# marca 'sim' em todas as linhas cuja pista é impronunciavel
awk -F'\t' 'BEGIN{OFS="\t"} /^#|^errado/{print;next} $7=="impronunciavel"{$6="sim"} {print}' \
  .misc/ocr/<slug>-original.tsv > /tmp/t && mv /tmp/t .misc/ocr/<slug>-original.tsv

O hifens junta quebras do tipo explo- rada apenas quando a palavra inteira já ocorre em outro ponto do livro — nunca no escuro.

Aviso

analisar reescreve o TSV do zero. Faça as correções em rodadas: analisar → revisar → aplicar → analisar de novo.

O método de resumo

O resumo segue o prompt guardado em _recursos/prompt_para_resumir.md: compressão para ~50% do volume sem descartar conceito, dado ou conclusão. A redução vem de floreio, redundância, voz passiva e exemplos longos — nunca de conteúdo. Estilo: frases curtas, voz ativa, analogias, termos-chave em negrito e conclusões vitais em blockquote.

ImportanteEste método é para não-ficção

Em romance, a prosa é a obra: não comprili-la.

Publicar

dart .misc/tools/livro.dart render   # use este
quarto preview                       # servidor local com recarga automática

Use o comando do script, não quarto render direto. Nesta máquina o render de projeto aborta no meio: o Quarto termina cada página tentando apagar *_files/mediabag e falha com os error 32. O script mede o sucesso pelos .html realmente gerados, cai para render página a página quando o modo projeto trava e remove as pastas *_files órfãs — que, se ficarem, travam o render seguinte.