GilLabs notes, talks, and experiments

Meu workflow com Obsidian and Jekyll

05 Feb 2025

Jekyll é um gerador de site estático que transforma arquivos Markdown em um site totalmente funcional. Tudo é convertido para HTML puro, o que facilita a implantação em plataformas como GitHub Pages.

Escrevendo no Obsidian

Eu uso Obsidian para escrever meu blog porque:

  • Ele suporta Markdown, facilitando a formatação dos posts.
  • Posso organizar os posts com tags e metadados.
  • Mantém meus textos centralizados antes da publicação.

Cada post do blog contém metadados que determinam se está pronto para publicação. E dessa forma rascunhos são excluídos do processamento.

Usando Templates no Obsidian

Para padronizar meus posts no blog, uso templates no Obsidian. Eles ajudam a manter a consistência entre os posts e aceleram o processo de escrita. Sempre que quero começar um novo post, primeiro crio uma nota de planejamento com ideias e referências. Depois, crio uma nota do post, que contém o texto completo e os metadados do post.

Usando o plugin Dataview, consigo consultar e exibir conteúdo dinamicamente com base nos metadados, rastrear posts em diferentes estágios de conclusão, identificar traduções ausentes e visualizar notas relacionadas.

Jekyll-Multiple-Languages-Plugin

O plugin jekyll-multiple-languages-plugin me ajuda a estruturar o conteúdo em vários idiomas, criando versões diferentes para cada post. Aqui está como funciona:

  • Meu blog suporta inglês, português e francês, configurados no _config.yml:

    yaml languages: - en - pt - fr default_lang: en

  • Cada idioma tem seu próprio diretório dentro de _i18n/, por exemplo:

    _i18n/en/_posts/2025-02-01-my-post.md _i18n/pt/_posts/2025-02-01-meu-post.md

  • O plugin gera automaticamente URLs específicas para cada idioma:

    https://adrianogil.github.io/blog/en/2025/02/my-post/ https://adrianogil.github.io/blog/pt/2025/02/meu-post/

  • Os usuários podem alternar entre idiomas usando um seletor de idioma na interface do blog.

Automatizando o Processamento dos Posts com Python

Copiar arquivos Markdown, gerenciar imagens e lidar com metadados manualmente pode ser trabalhoso. Para facilitar meu fluxo de trabalho, uso um script Python que automatiza as seguintes tarefas:

  • Extrai os posts do meu vault do Obsidian.
  • Copia e processa imagens.
  • Formata metadados para o Jekyll.
  • Move o post final para o repositório do meu blog no GitHub Pages.

Extraindo Notas

O script primeiro busca notas marcadas com uma tag específica (GilLabs/posts/text).

python
notes = get_notes_from_index(target_tags=["GilLabs/posts/text"], as_obsidian_notes=True)
notes = [note for note in notes if not note.metadata.get("draft", True)]

Isso garante que apenas os posts prontos para serem publicados sejam processados.

Gerando o Arquivo do Blog no Jekyll

Cada post é formatado na estrutura _posts do Jekyll com a data, idioma e categorias corretas. Metadados como título, layout e categorias são preservados.

Markdown
---
categories: git
date: '2025-02-01 16:41:00 '
lang: en
lang-ref: intro-git
layout: post
title: Primeiros Passos com Git
updated: 2025-02-01T16:41
---
## Introdução
Olá! Muitas vezes me vejo explicando Git do zero,...

4. Publicando o Blog

Depois que o script atualiza os arquivos HTML no meu projeto Jekyll, eu simplesmente:

  1. Compilo o site com:
bash
jekyll build
  1. Envio as mudanças para o GitHub Pages com:
bash
git add .
git commit -m "New blog post"
git push origin main

Em poucos minutos, meu blog está no ar!