σχόλιον — gloss marginal em manuscrito antigo
Site estático de marginalia, glosas e fragmentos do que leio, escuto e assisto. Cada nota é um cartão num mosaico, com fontes estruturadas e (opcionalmente) o meu comentário em cima.
🌐 scholion.thluiz.com (em breve)
As notas curtas viviam em thluiz/silva (Astro). Quando passaram de 150, três problemas começaram a aparecer:
- Build lento. Cada nota era processada como componente Astro. A 165 notas o
astro buildjá estava na casa dos segundos, e a perspectiva de chegar a 1.000 era desencorajadora — eu me peguei evitando capturar notas para não pagar o custo de publicação. - Fontes em texto livre. As referências viviam no rodapé do markdown, sem estrutura. Reagrupar por autor, fonte ou tipo era impraticável.
- UI feita para textos longos. O silvae é um blog. Mosaico de cartões, filtros por tipo, busca rápida — nada disso fazia sentido lá.
Scholion nasceu como um spin-off otimizado para o caso "marginalia ao estilo cartões": escala, busca, publicação rápida.
Hugo compila os mesmos 165 markdowns em ~80 ms. A 1.000 notas continua sub-segundo. Para um site que é 95% renderização de markdown estático, é a ferramenta certa — o JS-runtime do Astro não traz benefício neste caso.
Blowfish é um tema Hugo ativo (release a cada ~2 semanas, mantenedor responde rápido a deprecations do Hugo). Usado como submodule fixado em v2.101.0, com zero edição dos arquivos do tema:
assets/css/custom.css— overrides de estilo (carregado depois dos estilos do tema)assets/css/schemes/scholion.css— color scheme próprio (paleta âmbar/sépia/stone)layouts/notes/list.html,single.html,index.html,_default/terms.html— templates próprios via Hugo lookup orderlayouts/partials/favicons.html— partial sobrescrito
Updates do Blowfish: git submodule update --remote themes/blowfish + bump pra próxima tag testada. Os overrides são poucos e auditáveis, então o risco de quebra em update é baixo.
Cards quadrados (1:1, grid-template-columns: repeat(auto-fill, minmax(220px, 1fr))) optimizados para scanning rápido. Cada card mostra título, summary curto, tags e data. Notas com comentário do autor recebem uma borda lateral âmbar e um indicador no canto — diferenciação visual sem ocupar espaço extra.
A página da nota individual abre com tipografia legível (max-width 42rem, line-height 1.75), e as fontes são renderizadas a partir do array estruturado em frontmatter — não do corpo do markdown.
---
title: "Título"
date: 2026-04-09T17:30:00+01:00
summary: "Frase curta usada nos cards."
tags: [tag-1, tag-2]
has_commentary: true # true se contém análise do autor; false para citação/glosa pura
sources:
- title: "Título da fonte"
author: "Autor" # opcional
year: 2024 # opcional
publisher: "Editora" # opcional
url: "https://..." # opcional
kind: book | article | wiki | podcast | video | paper | poem | repo | film | other
---
Corpo em markdown.has_commentary é a separação que importa: notas que são apenas excerto/citação de uma fonte (glosa) versus notas onde adicionei análise, conexão ou síntese própria (commentary). Os filtros em /notes/ permitem ver só um ou só outro.
sources como array estruturado destrava agrupamento por autor, por tipo de fonte, por publisher — coisas impossíveis no formato antigo de "fonte como texto livre no rodapé".
- Hugo v0.148+ extended — gerador estático
- Blowfish v2.101.0 — tema base (Tailwind, dark/light, busca client-side)
- CSS Grid puro para o mosaico (sem framework JS)
- Git submodule para o tema (não Hugo Modules — evita dependência de Go)
scholion/
├── archetypes/ # template para nota nova (hugo new notes/foo.md)
├── assets/
│ ├── css/
│ │ ├── custom.css # overrides + layout do mosaico/single
│ │ └── schemes/scholion.css # color scheme âmbar
│ └── img/seal.png
├── config/_default/ # hugo.toml, params.toml, languages, menus
├── content/notes/ # 165+ notas em markdown
├── data/git_history/ # JSONs com histórico por nota (gerados)
├── layouts/ # templates próprios (override do Blowfish)
│ ├── _default/terms.html
│ ├── index.html
│ ├── notes/list.html
│ ├── notes/single.html
│ └── partials/favicons.html
├── scripts/ # gen_git_history.py, pre-commit hook
├── static/ # favicon.png
└── themes/blowfish/ # submodule, fixado em v2.101.0
# clone com submodule
git clone --recurse-submodules https://github.com/thluiz/scholion.git
cd scholion
# servidor com hot reload
hugo server
# → http://localhost:1313Idealmente via skill add-scholion-note (Claude Code), que cuida do schema, slug, hora real do sistema, inferência de tags e detecção de kind da fonte por domínio.
Manualmente:
hugo new notes/<slug>.md
# editar o frontmatter e o corpo
hugo server # ver no browser
git add content/notes/<slug>.md
git commit -m "feat: <título>"
git pushCada nota exibe as 3 últimas alterações (data + mensagem de commit) e um link para o histórico completo no GitHub.
Os dados vêm de arquivos JSON em data/git_history/, gerados por scripts/gen_git_history.py.
python scripts/gen_git_history.py --allCopie o hook pre-commit para que os JSONs sejam atualizados a cada commit:
cp scripts/pre-commit .git/hooks/pre-commitO hook detecta notas staged, atualiza só os JSONs correspondentes e faz git add deles automaticamente.
Em planejamento: S3 + CloudFront, com push para main disparando build via GitHub Actions.
Ver CHANGELOG.md.
MIT — código e estrutura. O conteúdo das notas é direito autoral do autor (Thiago Luiz Silva).