Migrando do Notion pro Obsidian: Bancos de Dados, Propriedades e Outros Pesadelos Resolvidos
Migrar do Notion pro Obsidian é diferente de migrar do Evernote. O Notion não é só um app de notas — é um banco de dados disfarçado de caderno. Cada página pode ter propriedades, relações, rollups, fórmulas. E quando você exporta, boa parte dessa estrutura vira… bem, texto. Sem banco de dados. Sem relações. Sem rollups.
Mas calma. Não é o fim do mundo. É o começo de um mundo melhor — onde seus dados são seus, vivem em arquivos de texto no seu disco, e não dependem de servidor nenhum pra existir.
Este é o quarto e último post da série Obsidian. Os anteriores:
- 📌 Post 1: Obsidian + Git — Setup Completo
- 📌 Post 2: Sincronização Android
- 📌 Post 3: Migração do Evernote
- 📌 Você está aqui: Post 4 — Migração do Notion

O Export do Notion: O Que Você Ganha
O Notion permite exportar em HTML, Markdown ou CSV. Parece bom na teoria. Na prática:
Markdown + CSV (Recomendado)
- No Notion: Settings → Settings & Members → Export all workspace content
- Formato: Markdown & CSV
- Crie seu email de confirmação
- Aguarde o email com o link de download (pode demorar horas pra workspaces grandes)
O que você recebe:
Export-1234567890/
├── My Workspace/
│ ├── Page Title abc123.md
│ ├── Database Title xyz789.csv
│ ├── Sub Page def456/
│ │ ├── Another Page ghi789.md
│ │ └── Another Page ghi789_abcdef123456.jpg
│ └── ...
O que funciona:
- Texto básico (headings, bold, italic, listas)
- Imagens inline (extraídas como arquivos separados)
- Código em blocos
- Checklists
- A hierarquia de pastas (cada sub-page vira uma subpasta)
O que NÃO funciona direito:
- Databases → viram CSV separados. As views (Kanban, Calendar, Gallery) desaparecem
- Relations → perdem a conexão. Ficam como texto solto
- Rollups e Fórmulas → evaporam
- Embeds (Google Docs, Figma, etc.) → viram links mortos
- Synced blocks → dessincronizam (viram cópias independentes)
O Script de Limpeza (Python)
O export do Notion tem um problema chato: os nomes de arquivo são horríveis. Cada arquivo vem com um UUID aleatório no nome:
My Page Title abc123def456789.md
Sub Page xyz987uvw654321.md
Esse script limpa os nomes e remove os UUIDs:
#!/usr/bin/env python3
"""Clean Notion export filenames by removing UUIDs."""
import os
import re
UUID_PATTERN = re.compile(r' [a-f0-9]{32}$')
def clean_filename(name):
base, ext = os.path.splitext(name)
clean_base = UUID_PATTERN.sub('', base)
return clean_base + ext if clean_base != base else name
def process_directory(path):
renamed = 0
for root, dirs, files in os.walk(path):
for f in files:
old_path = os.path.join(root, f)
new_name = clean_filename(f)
if new_name != f:
new_path = os.path.join(root, new_name)
if not os.path.exists(new_path):
os.rename(old_path, new_path)
renamed += 1
print(f"Renomeados: {renamed} arquivos")
if __name__ == "__main__":
import sys
target = sys.argv[1] if len(sys.argv) > 1 else "."
process_directory(target)

Convertendo Databases: A Grande Dor
Se você usava databases do Notion (e quem não usava?), esta é a parte que mais dói. Cada database vira um CSV. Mas no Obsidian, você tem alternativas melhores:
Database → Pasta com YAML Frontmatter
Cada “linha” do database vira uma nota individual com propriedades no frontmatter:
---
type: book
status: reading
tags: [non-fiction, tech]
author: "Cal Newport"
rating: 4
date_started: 2026-03-15
date_finished:
---
# Deep Work
Minhas notas sobre o livro...
Para buscar e filtrar, use o plugin Dataview:
```dataview
TABLE status, author, rating
FROM "03-recursos/livros"
WHERE type = "book"
SORT rating DESC
```
Isso substitui 90% dos databases do Notion. E é mais flexível — porque cada nota é um arquivo independente, não uma célula trancada num database.
Script: CSV → Markdown com Frontmatter
#!/usr/bin/env python3
"""Convert Notion CSV export to individual Markdown files."""
import csv
import os
import re
import sys
def sanitize(name):
return re.sub(r'[^\w\s-]', '', name).strip()[:100]
def csv_to_notes(csv_path, output_dir):
os.makedirs(output_dir, exist_ok=True)
with open(csv_path, encoding='utf-8') as f:
reader = csv.DictReader(f)
fields = reader.fieldnames or []
# Identify title column
title_col = next((c for c in fields if c.lower() in ['name', 'title', 'nome']), fields[0])
for row in reader:
title = sanitize(row.get(title_col, 'Untitled'))
filepath = os.path.join(output_dir, f"{title}.md")
# Build frontmatter
fm_lines = ['---']
for col in fields:
if col == title_col:
continue
val = row.get(col, '').strip()
if val:
fm_lines.append(f'{col}: "{val}"')
fm_lines.extend(['---', '', f'# {row.get(title_col, title)}', '', ''])
with open(filepath, 'w', encoding='utf-8') as out:
out.write('\n'.join(fm_lines))
print(f"Convertido: {output_dir}")
if __name__ == "__main__":
csv_to_notes(sys.argv[1], sys.argv[2])
# Uso:
python3 csv_to_notes.py "Minha Biblioteca xyz123.csv" "./meu-cerebro/03-recursos/livros/"
🧨 O Perrengue do Olivetto
Eu tinha um database no Notion com 180 filmes assistidos. Colunas: título, gênero, nota, data, review. Na migração, virou um CSV com 180 linhas. Rodei o script e gerei 180 notas Markdown com YAML frontmatter. Configurei o Dataview e… boom: tinha a mesma view tabular que tinha no Notion, só que agora cada filme era um arquivo que eu podia linkar, adicionar notas soltas, e conectar com outros conteúdos. O Notion te dá um database. O Obsidian te dá um grafo.
Reconstruindo os Kanban Boards
Se usava Kanban no Notion, o Obsidian tem o plugin Tasks + Projects (ou o Kanban plugin):
- Instale o plugin Kanban (Community plugins → Browse → “Kanban”)
- Crie um novo board:
01-projetos/kanban.md - Adicione colunas: Backlog, To Do, Doing, Done
- Cada card pode linkar pra uma nota:
[[Nome da Tarefa]]
O Kanban do Obsidian é mais simples que o do Notion? Sim. Mas é um arquivo Markdown que você pode versionar, buscar com grep, e sincronizar com Git. Try doing that with a Notion database.
Embeds e Arquivos Externos
O Notion ama embeds. Google Docs, Figma, Miro, PDFs, vídeos — tudo vive dentro da página. No Obsidian:
- PDFs: Copie pra pasta
anexos/e use![[arquivo.pdf]] - Imagens: Mesma coisa —
![[imagem.png]] - Vídeos: Use
![[video.mp4]]ou link externo - Google Docs/Figma: Viram links —
[Nome](https://docs.google.com/...)`. Não é embed, mas funciona
A filosofia do Obsidian é diferente: arquivos locais primeiro, links segundo. Se você quer offline-first, seus arquivos precisam morar no vault.
O Checklist Final da Migração
- ✅ Exportou tudo do Notion (Markdown + CSV)
- ✅ Limpou os nomes de arquivo (removeu UUIDs)
- ✅ Converteu CSVs → notas Markdown com frontmatter
- ✅ Moveu pra estrutura PARA
- ✅ Instalou o Dataview (substitui databases)
- ✅ Reconstruiu Kanban boards com o plugin
- ✅ Recriou links entre notas com [[backlinks]]
- ✅ Copiou PDFs e anexos pra pasta
anexos/ - ✅ Reviseu 20 notas aleatórias
- ✅
git add . && git commit -m "cerebro: migração notion completa" - ✅ Cancelou a assinatura do Notion (opicional, mas satisfatório)
Notion vs Obsidian: A Tabela Honesta
- Colaboração em tempo real: Notion ganha. Se sua equipe precisa editar juntos, fica no Notion.
- Bancos de dados complexos: Notion ganha. Fórmulas, rollups, relations — o Notion é um Airtable disfarçado.
- Pertencer aos seus dados: Obsidian ganha por nocaute. Seus arquivos, seu disco, suas regras.
- Offline: Obsidian ganha. Notion sem internet é um peso de papel digital.
- Velocidade: Obsidian ganha. Abrir um arquivo local é instantâneo. Carregar uma página do Notion… nem tanto.
- Preço: Obsidian é grátis. Notion Teams é US$ 10/user/mês.
- Longevidade: Obsidian usa Markdown — formato que vai sobreviver a qualquer app. Notion é proprietário. Se a empresa fechar, seus dados vão junto.
A Série Completa
Se chegou até aqui, você tem tudo que precisa pra construir um segundo cérebro que:
- Funciona offline
- Sincroniza entre desktop e Android
- Nunca perde uma nota (Git versionamento)
- Aceita migração do Evernote e Notion
- Custa R$ 0,00
A série completa:
- 📌 Post 1: Obsidian + Git — Setup Completo
- 📌 Post 2: Sincronização Android
- 📌 Post 3: Migração do Evernote
- 📌 Post 4: Migração do Notion — este post
E aí, fez a migração? Conta nos comentários — qual foi a maior dor? O que você perdeu? O que ganhou? A comunidade quer saber (e eu também).
