Se você está migrando do Bear para o Notion, precisa de uma maneira confiável de transferir suas notas sem perder as tags que organizou cuidadosamente. O Bear armazena tags inline no corpo da nota usando o formato #tag, mas o Notion não reconhece esse formato nativamente. Este artigo explica como construir um pipeline de importação repetível que converte as tags inline do Bear em tags de banco de dados do Notion. Você aprenderá as etapas exatas para exportar do Bear, transformar a marcação e importar para um banco de dados estruturado do Notion.
Principais conclusões: Pipeline de conversão de tags do Bear para o Notion
- Bear > Preferências > Exportar > Bear Backup (.bearbackup): Exporta todas as notas com tags incorporadas no corpo do texto.
- Script Python com regex (re.sub e re.findall): Extrai padrões #tag e os reformata em tags separadas por vírgula compatíveis com o Notion.
- API do Notion ou importação CSV com coluna Tags: Insere os dados transformados em um banco de dados do Notion onde cada tag se torna uma propriedade Select.
O que torna as tags do Bear diferentes das tags do Notion
O Bear armazena tags como texto inline usando a sintaxe #hashtag. Por exemplo, uma nota pode conter “Anotações da reunião #trabalho #projeto-alfa”. O Notion, por outro lado, usa uma propriedade Select ou Multi-Select separada dentro de uma linha do banco de dados. O Notion não interpreta a sintaxe inline #tag. Se você colar uma nota do Bear diretamente no Notion, as #tags permanecem como texto simples e não são reconhecidas como dados estruturados. Para preservar as tags como metadados filtráveis, você deve extrair cada tag do corpo da nota e colocá-la em uma coluna Tags dedicada durante a importação.
Pré-requisitos para construir o pipeline de importação
Antes de começar, verifique se você possui as seguintes ferramentas e acessos:
- Bear app (macOS): Você precisa do Bear instalado para exportar suas notas no formato correto.
- Python 3.7 ou superior: O script deste guia usa Python com os módulos integrados
json,reecsv. Nenhuma biblioteca de terceiros é necessária. - Conta Notion com direitos de criação de banco de dados: Você precisa da capacidade de criar um novo banco de dados ou modificar um existente.
- Integração com a API do Notion (opcional, mas recomendado): Se você planeja automatizar a importação, crie uma integração Notion em https://www.notion.so/my-integrations e copie o token Internal Integration Secret.
Pipeline passo a passo: Exportar, transformar e importar
Etapa 1: Exportar notas do Bear com tags intactas
- Abra o Bear e selecione todas as notas
Clique em qualquer nota na barra lateral e pressione Cmd+A para selecionar todas as notas. Alternativamente, escolha uma tag ou pasta específica se quiser mover apenas um subconjunto. - Exportar como Bear Backup
Vá em Arquivo > Exportar Notas > Bear Backup (.bearbackup). Este formato preserva o corpo completo da nota, incluindo #tags inline, datas de criação e modificação. Salve o arquivo em sua área de trabalho comobear_export.bearbackup. - Extrair o JSON do backup
Os arquivos Bear Backup são na verdade arquivos ZIP. Renomeie a extensão do arquivo de.bearbackuppara.zipe clique duas vezes para extrair. Dentro você encontrará uma pasta contendo um arquivodatabase.sqlitee um arquivonotes.json. Copienotes.jsonpara um diretório de trabalho.
Etapa 2: Transformar tags do Bear em formato compatível com Notion
- Crie um script Python em seu diretório de trabalho
Abra um editor de texto e cole o código a seguir. Salve comobear_to_notion.py.import json import re import csv with open('notes.json', 'r', encoding='utf-8') as f: notes = json.load(f) output = [] for note in notes: title = note.get('title', '') body = note.get('text', '') # Extrai todas as #tags (apenas caracteres de palavra, sem espaços) tags = re.findall(r'#([a-zA-Z0-9_-]+)', body) # Remove duplicatas preservando a ordem seen = set() unique_tags = [] for t in tags: if t not in seen: seen.add(t) unique_tags.append(t) # Remove #tag do corpo para evitar duplicação no Notion cleaned_body = re.sub(r'#[a-zA-Z0-9_-]+', '', body) # Remove espaços extras cleaned_body = re.sub(r'\s+', ' ', cleaned_body).strip() output.append({ 'Title': title, 'Body': cleaned_body, 'Tags': ', '.join(unique_tags) }) # Escreve em CSV with open('notion_import.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.DictWriter(f, fieldnames=['Title', 'Body', 'Tags']) writer.writeheader() writer.writerows(output) print(f'Convertidas {len(output)} notas. Arquivo de saída: notion_import.csv') - Execute o script
Abra o Terminal, navegue até seu diretório de trabalho e executepython3 bear_to_notion.py. O script cria um arquivo chamadonotion_import.csvcom três colunas: Title, Body e Tags. Cada tag é separada por vírgula e espaço.
Etapa 3: Importar o CSV para um banco de dados do Notion
- Crie um novo banco de dados no Notion
No Notion, clique em + Nova Página na barra lateral. Digite/tablee selecione Tabela – Embutida. Isso cria um banco de dados com propriedades padrão. - Adicione uma coluna Tags do tipo Multi-Select
Clique no botão + no cabeçalho da tabela. Nomeie a coluna comoTagse escolha Multi-Select como tipo de propriedade. Você não precisa predefinir nenhuma opção; o Notion as criará automaticamente durante a importação. - Importe o CSV
Clique no menu de três pontos no canto superior direito do banco de dados e selecione Importar. Escolha CSV e selecione seu arquivonotion_import.csv. Na caixa de mapeamento, mapeie a coluna Title para a propriedade Nome, Body para uma propriedade Texto (crie uma se necessário) e Tags para a propriedade Tags (Multi-Select). Clique em Importar. - Verifique a preservação das tags
Após a importação, abra qualquer nota. A coluna Tags deve exibir cada tag como um rótulo colorido. Se uma tag não foi criada, verifique se o cabeçalho da coluna CSV corresponde exatamente ao nome da propriedade (diferença entre maiúsculas e minúsculas).
Se a importação não preservar as tags corretamente
Tags aparecem como texto simples no corpo em vez da coluna Tags
Isso acontece quando o mapeamento da importação CSV não atribui a coluna Tags à propriedade Multi-Select. Durante a caixa de diálogo de importação, verifique se a coluna Tags do CSV está mapeada para a propriedade Tags (Multi-Select) no Notion. Se você a mapeou para uma propriedade Texto, exclua as linhas importadas, ajuste o mapeamento e importe novamente.
Tags com caracteres especiais não são reconhecidas
O Bear permite tags contendo hífens e underscores, mas as opções Multi-Select do Notion não podem conter vírgulas. O script Python usa re.findall(r'#([a-zA-Z0-9_-]+)') para extrair tags. Se suas tags incluírem caracteres como . ou # dentro do nome da tag, modifique o padrão regex para incluir esses caracteres. Por exemplo, altere o padrão para r'#([a-zA-Z0-9_-.]+)'.
Tags duplicadas são criadas para capitalização diferente
O Notion trata Trabalho e trabalho como opções Multi-Select separadas. Para evitar duplicatas, modifique o script Python para converter todas as tags para minúsculas antes da deduplicação. Substitua a linha if t not in seen: por if t.lower() not in seen: e armazene a versão em minúsculas no CSV.
Exportação do Bear vs Importação do Notion: Principais diferenças
| Item | Bear | Notion |
|---|---|---|
| Armazenamento de tags | #tag inline no corpo da nota | Propriedade Multi-Select separada no banco de dados |
| Formato de exportação | Bear Backup (.bearbackup) contendo notes.json | Importação CSV com colunas Title, Body, Tags |
| Delimitador de tag | Espaço antes de # e espaço após a tag | Valores separados por vírgula em uma única célula |
| Sensibilidade a maiúsculas/minúsculas | Exibição insensível a maiúsculas/minúsculas | Opções sensíveis a maiúsculas/minúsculas (duplicatas possíveis) |
O pipeline acima converte as tags inline do Bear em um formato amigável para banco de dados do Notion. Após a importação, use os filtros e visualizações do banco de dados do Notion para classificar notas por tag. Para importações futuras, considere automatizar o processo com a API do Notion: crie uma nova página para cada nota usando o endpoint POST /pages e defina a propriedade Tags como um array de nomes de opções Multi-Select. Essa abordagem evita completamente problemas de mapeamento CSV.