GilLabs { GilLabs }

Meu workflow com Obsidian and Jekyll

05 Feb 2025
EN FR

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:

      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).

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.

---
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:
    jekyll build
    
  2. Envio as mudanças para o GitHub Pages com:
    git add .
    git commit -m "New blog post"
    git push origin main
    

    Em poucos minutos, meu blog está no ar!