SiYuan: software de gestão de conhecimento pessoal self-hosted e com privacidade em primeiro lugar
(github.com/siyuan-note)- SiYuan é um sistema de gestão de conhecimento pessoal com privacidade em primeiro lugar que oferece referências granulares em nível de bloco e edição Markdown WYSIWYG
- Os principais recursos incluem referências em nível de bloco e links bidirecionais, incorporação de consultas SQL, edição de documentos grandes, fórmulas e gráficos, web clipping, links para anotações em PDF, visualização de tabelas de banco de dados e estudo por repetição espaçada com flashcards
- Oferece apps para desktop e mobile, implantação via Docker, API, CLI e marketplace da comunidade, além de suporte a escrita com IA e chat de Q/A baseados na API da OpenAI e OCR com Tesseract
- A maioria dos recursos é gratuita até para uso comercial, mas alguns são exclusivos para membros pagos; a sincronização de dados por discos de sincronização de terceiros não é suportada devido ao risco de corrupção de dados
- A implantação via Docker suporta apenas uso pelo navegador e não oferece conexão com apps desktop/mobile, exportação para PDF/HTML/Word nem importação de arquivos Markdown
O modelo de gestão de conhecimento oferecido pelo SiYuan
- SiYuan é um sistema de gestão de conhecimento pessoal que adota o lema “Refactor your thinking”
- Sua orientação básica é privacidade em primeiro lugar, com suporte a referências granulares em nível de bloco e edição Markdown WYSIWYG
- O guia do usuário online está disponível em English
- O fórum de discussões em inglês é mantido em SiYuan English Discussion Forum
Principais recursos
- O recurso de blocos de conteúdo inclui referências em nível de bloco e links bidirecionais, atributos personalizados, incorporação de consultas SQL e o protocolo
siyuan:// - O editor oferece edição em estilo de blocos, Markdown WYSIWYG, outline de listas, ampliação de blocos e edição de documentos grandes na escala de milhões de palavras
- É possível inserir nos documentos diversas formas de representação, como fórmulas, gráficos, fluxogramas, gráficos de Gantt, diagramas de tempo e partituras
- Suporta web clipping e links para anotações em PDF
- A exportação suporta referências e embeds de blocos, Markdown padrão com assets incluídos, PDF, Word e HTML
- Também inclui recursos para copiar para WeChat MP, Zhihu e Yuque
- O banco de dados oferece Table view
- Suporta estudo por repetição espaçada com flashcards, escrita com IA e chat de Q/A baseados na API da OpenAI e OCR com Tesseract
- Oferece múltiplas abas, tela dividida por arrastar e soltar, snippets de template e snippets de JavaScript/CSS
- Suporta apps para Android, iOS e HarmonyOS, além de implantação via Docker
- Oferece API e marketplace da comunidade
- A maioria dos recursos é gratuita até para uso comercial, e alguns recursos são exclusivos para membros pagos conforme a página de Pricing
Arquitetura e ecossistema
- O ecossistema do SiYuan é composto por motor de edição, extensões, marketplace, repositório de dados, API de plugins, apps móveis e projeto de repetição espaçada
- lute: motor do editor
- chrome: extensão para Chrome/Edge
- bazaar: marketplace da comunidade
- dejavu: repositório de dados
- petal: API de plugins
- android: app Android
- ios: app iOS
- harmony: app HarmonyOS
- riff: estudo por repetição espaçada
Instalação e implantação
- Em desktop e mobile, recomenda-se priorizar a instalação pela loja de apps para futuros upgrades com um clique
- O app móvel está disponível na App Store, Google Play e F-Droid
- O app desktop está disponível na Microsoft Store
- Os pacotes de instalação podem ser obtidos em B3log e GitHub Releases
- As entradas nos gerenciadores de pacotes são oferecidas como
siyuanesiyuan-note
Hospedagem com Docker
- A forma mais fácil de disponibilizar o SiYuan em um servidor é a implantação via Docker
- O nome da imagem Docker é
b3log/siyuan, e a página da imagem está no Docker Hub - A partir da v3.7.0, é necessário passar explicitamente o subcomando
serve- Exemplo:
docker run b3log/siyuan serve --workspace=...
- Exemplo:
- As principais opções de execução são as seguintes
--workspace: especifica o caminho da pasta de workspace que será montada no host com-v--accessAuthCode: especifica a senha da tela de bloqueio
- É possível definir as variáveis de ambiente PUID e PGID para ajustar o usuário e o grupo de execução dentro do contêiner
- Se os valores não forem fornecidos, o padrão será
1000 - É uma configuração para reduzir problemas de permissão no diretório montado no host
- Se os valores não forem fornecidos, o padrão será
- O caminho do workspace também pode ser configurado pela variável de ambiente
SIYUAN_WORKSPACE_PATH, mas, se houver argumento de linha de comando, a linha de comando tem prioridade - A senha da tela de bloqueio também pode ser configurada pela variável de ambiente
SIYUAN_ACCESS_AUTH_CODE, mas, se houver argumento de linha de comando, a linha de comando tem prioridade - Definir
SIYUAN_ACCESS_AUTH_CODE_BYPASS=truepermite desativar a senha da tela de bloqueio SIYUAN_LANGdefine o idioma da interface no Docker; se não for configurado, o padrão éen- Para ocultar a porta 6806, é possível usar um proxy reverso NGINX, sendo necessária uma configuração de proxy reverso WebSocket para
/ws - Pontos de atenção na implantação via Docker
- Se o volume montado não estiver correto, os dados podem ser perdidos após a exclusão do contêiner
- Como podem ocorrer problemas de autenticação, recomenda-se configurar proxy reverso em vez de redirecionamento por reescrita de URL
- Se houver problemas de permissão, verifique se
PUIDePGIDcorrespondem ao proprietário do diretório montado no host
- Limitações da implantação via Docker
- Não suporta conexão com apps desktop e mobile; suporta apenas uso pelo navegador
- Não suporta exportação nos formatos PDF, HTML e Word
- Não suporta importação de arquivos Markdown
CLI
- A CLI integrada acessa diretamente os dados do workspace, sem um servidor em execução
- Exemplos de uso rápido:
siyuan notebook list -w ~/SiYuan: listar todos os notebookssiyuan search "keyword" -w ~/SiYuan -f json: busca de texto completo com saída em JSONsiyuan export md --id <block-id> -w ~/SiYuan: exportar um documento como Markdown
- As categorias de comandos incluem notebooks e documentos, conteúdo, metadados, consultas, referências, importação/exportação, gestão de dados, utilitários, banco de dados, servidor e workspace/sistema
-f jsonoferece saída amigável para scripts, enquanto a saída padrão é-f table- A maioria dos comandos de alteração oferece suporte a
--dry-runpara pré-visualização antes da aplicação - O binário da CLI é
SiYuan-Kernel, localizado em<install>/resources/kerneldentro do caminho de instalação- O instalador do Windows o adiciona automaticamente ao PATH
- No macOS/Linux, é possível criar um link simbólico manualmente
Armazenamento e sincronização de dados
- Os dados são armazenados na pasta data do workspace
- As principais funções das pastas são as seguintes
assets: armazena assets inseridosemojis: armazena imagens de emojisnippets: armazena snippets de códigostorage: armazena condições de consulta, layouts, flashcards etc.templates: armazena snippets de templateswidgets: armazena widgetsplugins: armazena pluginspublic: armazena dados públicos
- As demais pastas são pastas de notebooks criadas pelo usuário, e os arquivos
.sydentro das pastas de notebooks armazenam os dados dos documentos - O formato dos dados de documento
.syé JSON - A sincronização de dados por discos de sincronização de terceiros não é suportada; caso contrário, os dados podem ser corrompidos
- Embora discos de sincronização de terceiros não sejam suportados, a conexão com armazenamento em nuvem de terceiros é oferecida como privilégio de membro pago
- Como alternativa de sincronização manual, é possível usar exportação e importação de dados
- Desktop:
Settings→Export→Export Data/Import Data - Mobile:
Right column→About→Export Data/Import Data
- Desktop:
Código aberto e upgrades
- O SiYuan é totalmente open source e aceita contribuições
- Os repositórios relacionados são os seguintes
- Consulte o Development Guide para instruções de desenvolvimento
- Se instalado pela loja de apps, atualize pela própria loja de apps
- Se instalado por pacote de desktop, a opção
Settings→About→Automatically download update installation packagepermite baixar automaticamente o pacote de instalação mais recente e receber instruções de instalação - Se instalado por pacote manual, baixe novamente o pacote de instalação e instale-o
- Novas versões podem ser verificadas em
Settings→About→Current Version→Check update, em Official Download e em GitHub Releases
Outras perguntas frequentes
- Se não for possível encontrar o ícone de bloco em alguns blocos, como um bloco de parágrafo dentro de um item de lista, isso significa que o ícone de bloco do primeiro sub-bloco sob o item de lista foi omitido
- Coloque o cursor nesse bloco e use
Ctrl+/para abrir o menu de bloco
- Coloque o cursor nesse bloco e use
- Se você perder a chave do repositório de dados, e ela tiver sido inicializada corretamente em vários dispositivos antes, a chave será a mesma em todos os dispositivos e poderá ser obtida em
Settings→About→Data repo key→Copy key string - Se a chave não estiver configurada corretamente ou se nenhum dos dispositivos estiver disponível, será necessário fazer backup manual e redefinir a chave do repositório de dados
- Faça backup usando
Export Dataou copiando diretamente a pastaworkspace/data/pelo sistema de arquivos - Execute
Settings→About→Data repo key→Reset data repo - Inicialize a chave em um dispositivo e depois importe a chave nos outros dispositivos
- A nuvem usará um novo diretório de sincronização, e o diretório de sincronização antigo e os snapshots de nuvem antigos não poderão mais ser usados
- Faça backup usando
- A maioria dos recursos é gratuita até para uso comercial
- Privilégios de membro pago só podem ser usados após pagamento; para detalhes, consulte Pricing
1 comentários
Opiniões no Hacker News
Parece interessante, mas depois de passar pela jornada de gestão do conhecimento/produtividade, acho que, se você tem alguma familiaridade com computadores ou Unix, é melhor primeiro se apoiar em estrutura de diretórios, nomes de arquivos, texto simples, listas e Markdown
Uma abordagem Unix, que prioriza arquivos em vez de aplicativos, é melhor, e faz mais sentido organizar tudo por conceitos universais como lugares, coisas, pessoas, eventos, métricas e modos de uso. Use ferramentas como comandos Unix, make/justfile, (rip)grep, git e fzf; se tentar resolver esse problema pela web, vai acabar resolvendo problemas da web, não de gestão básica do conhecimento. Smartphones/telas sensíveis ao toque também são um grande problema, mas, da mesma forma, em vez de tentar resolvê-lo diretamente, é mais realista ajustar um gerenciador de arquivos ou o fzf no Termux para que sejam usáveis no toque. Ainda assim, continuo pensando na função de backlinks, e seria bom ter uma ferramenta Unix que escaneasse referências a outros arquivos em arquivos de texto dentro de uma hierarquia
Ele oferece apenas um único diretório com arquivos Markdown, sem notebooks nem pastas, além de uma busca/tags decentes. É parecido com a mudança de abandonar e-mails previamente estruturados em hierarquias profundas para “se estiver indexado, dá para encontrar quando precisar”. Para o necessário, é suficiente; mesmo que haja pequenos bugs ou lacunas, dá para contornar ou viver sem. Restrições se tornam um forte incentivo à criatividade e à execução
Com regras razoáveis, dá para criar uma versão web com algo como Ghost ou Zola e fazer deploy automático via CI. Há backup e sincronização, apps para desktop/mobile, além de key bindings do Vim e plugin de git. Ele combina bem com Unix e se adapta a vários paradigmas de navegação e organização; já testei várias ferramentas, mas nada chegou perto do Obsidian
No último ano, mais ou menos, simplesmente me acomodei em Markdown comum e uma hierarquia de diretórios. Edito os arquivos no meu editor preferido, o Emacs, e uso os mesmos key bindings, busca e controle de versão. Subo as notas para uma instância auto-hospedada do Forgejo; poderia ser GitHub também. O Forgejo já tem uma interface web, então notas e links funcionam bem. No notebook, deixei o mdbook monitorando o diretório e gerando um site estático; uso isso quando quero folhear ou ler as notas. Também procurei uma solução para escrever notas no celular, mas, se for mais do que algumas linhas, acabo usando o notebook de qualquer forma, e no celular quase só leio. Deixo o mesmo mdbook atrás de uma VPN para acessar pelo celular e, se precisar editar em movimento, uso a interface web do Forgejo
Para mim, funciona muito bem. Ainda assim, sincronização e uso móvel deixam a desejar. No Termux ele funciona lindamente, mas seria bom ter uma forma de colocar uma UI nativa para mobile por cima de um app de linha de comando. Tk/Tcl é o que chega mais perto, mas só há opções do lado do Android, e eu sou principalmente usuário de iOS, então não é ideal. Para sincronização, há planos plausíveis baseados em IMAP4 ou em git. O roadmap e as tarefas desse projeto também são acompanhados por ele mesmo dentro do repositório, então, na prática, ele funciona
Antigamente tive uma ideia de app de notas bem ao estilo Unix, e ainda acho que poderia funcionar bem. Se as notas ficarem em um banco de dados SQLite, você ganha compressão, desempenho e backup fácil; se ficarem como arquivos de texto no sistema de arquivos, ganha busca fácil e baixa dependência. O “editor” só teria o papel de criar um novo arquivo temporário e abri-lo com
$EDITOR. Depois, daria para nomeá-lo, ou então usar a data atual como nome. Se precisar de links, use um editor que entenda o sistema de arquivos; se precisar de destaque de sintaxe, use um editor que tenha isso; para sincronização, combine com Syncthing; para busca, use fzfUso isso há alguns anos no meu servidor doméstico
É uma ferramenta parecida com o Obsidian, bem menos polida e com documentação insuficiente. É bom que seja open source, mas não sei muito sobre a empresa por trás. Não encontrei muita coisa além de ser uma empresa chinesa. Uso porque dá para auto-hospedar, tem a maioria dos recursos do Obsidian e pode ser usado de qualquer lugar pelo navegador web. Esse é o principal recurso que o Obsidian não tem
Quando vi pela primeira vez, o app não pareceu tosco; ele é claramente mais responsivo que o Notion e menos escorregadio que o RemNote. No entanto, muitos tooltips aparecem imediatamente, o que distrai bastante. Parece que quiseram incluir flashcards com repetição espaçada no estilo RemNote, bancos de dados no estilo Notion e até AI, e aparentemente fizeram isso razoavelmente bem. Também gosto das várias opções de exportação, inclusive para Org-Mode, preservando links internos, imagens e blocos de código. Gosto do fato de ser uma alternativa sólida e cheia de recursos aos apps cloud-first e de código fechado, mas, por causa dos recursos avançados de layout e da grande quantidade de funcionalidades, pode ser dispersivo e pesado demais para meu uso. O Tana também é uma solução all-in-one parecida e mais inovadora, mas no fim acabo sendo atraído por apps mais focados
Mesmo o app Electron tendo uma API HTTP, a demo web só consegue abrir arquivos locais do lado do cliente via API do sistema de arquivos. Um dia pretendo fazer um fork e adaptar para mim. E também tenho um desejo meio perverso de mudar o formato de serialização de Markdown para XML, para manipular o grafo com outras ferramentas usando xpath, xquery e basex
Vejo com frequência esse tipo de ferramenta de notas continuar surgindo. Já investi bastante no Logseq, e a nova versão com banco de dados também deve sair em breve
Se não oferecerem ferramentas de importação/exportação para mover notas entre apps importantes como Logseq ou Obsidian, essas ferramentas acabam sendo usadas só por novos usuários ou por quem tem pouquíssimas notas e consegue arrumar tempo para migrar
Pode haver benefícios de desempenho ou compressão, mas, pensando na quantidade de texto que uma pessoa escreveria ao longo da vida, isso não me convence de imediato
A licença é meio estranha. A sincronização auto-hospedada aparece como um recurso pago e, de fato, há verificação de licença no código, mas não existe um diretório
ee/com licença separada como em produtos open core comuns; até o código de verificação de licença está todo sob AGPLO FAQ também enfatiza que “SiYuan is completely open source”. Então, se eu remover a verificação de licença com um patch, a meu ver seria uma alteração de uma linha e ainda assim estaria cumprindo totalmente a licença. Eu poderia até distribuir binários da versão com patch. Claro, seria uma atitude bem sacana. Isso é intencional? Eles estão vendendo só a conveniência das imagens pré-compiladas?
Isso realmente permite vender software livre e, se for bem administrado, funciona direito
No entanto, por causa das restrições da conta de desenvolvedor da Apple, se você não quiser gastar US$ 100 para compilar a versão para iOS, na prática é melhor usar a versão oficial. Também existem dois patches não oficiais relativamente conhecidos que removem as restrições pagas. Um é uma versão experimental de desenvolvedores terceiros, cujos recursos são testados e depois enviados upstream, github.com/siyuan-community/siyuan; o outro simplesmente remove os recursos pagos, github.com/EightDoor/siyuan. Houve também um PR de um desenvolvedor da comunidade propondo adicionar certificados digitais para impedir que binários de pacotes não oficiais usassem os serviços oficiais de nuvem. Como o marketplace de plugins usa o CDN oficial, o custo de tráfego não é pequeno, mas esse PR foi rejeitado
Também posso recomendar o Trilium Notes. Uso há anos e estou satisfeito
Agora ele está em “modo de manutenção”, o que, pessoalmente, vejo como uma vantagem por não haver risco de inchaço de funcionalidades. Dá para auto-hospedar, é um ótimo web app, tem cliente nativo opcional e funciona offline. https://github.com/zadam/trilium
https://github.com/TriliumNext/Notes
Estou auto-hospedando há 3 meses e estou satisfeito. Migrei do Joplin e perdi o acesso offline, mas ele é muito mais expressivo e agradável de usar
Também não sinto falta de outros recursos da versão Pro. Ele não depende de outros contêineres Docker, e usei apenas Authelia para autenticação. Usa um formato de arquivo próprio, mas faço backup do volume de dados e consigo exportar manualmente para Markdown simples. A UI web é responsiva o suficiente para uso no celular e, no meu caso, se encaixa melhor do que outras ferramentas
E uso uma instância S3 auto-hospedada para sincronizar todas as instalações, incluindo OSX e Android/iPhone. A sincronização funcionou muito bem. Considerando a quantidade de recursos, acho que este programa tira totalmente o Obsidian da comparação. Eu diria que é uma alternativa mais próxima do Notion. No momento estou criando uma pequena ferramenta auxiliar auto-hospedada para o Siyuan, que permite aos usuários compartilhar notas publicamente
Também concordo com as recomendações que vi aqui
Meu modo de gestão de conhecimento é bem simples. Tudo fica no git, dentro de uma grande estrutura de diretórios que cresceu naturalmente com o tempo. Tenho muitas notas, algo como 7 mil a 8 mil. Mantê-las no git me deu flexibilidade para usar como eu quiser. Às vezes uso Emacs/Neovim e, na maior parte do tempo, uso Sublime Text, porque tenho espaços de trabalho por projeto ou conceito. No celular, envio tudo para minha instância do Gitea. Não preciso acessar notas no celular com muita frequência, mas tenho pensado mais nisso recentemente. Gostaria de recomendações de formas de ler um diretório de arquivos de texto no Android
No iOS, agora uso Working Copy para commits/push/pull do git, e Obsidian para edição de texto. Gosto bastante da interface do Obsidian para edições rápidas em Markdown. Sei que o Obsidian também tem versão para Android, mas não testei. Não sei se existe uma versão do Working Copy para Android, e talvez haja algum app GUI de git parecido
O que sinto falta nesses apps, incluindo o Notion, é a capacidade de herdar propriedades de bancos de dados
Por exemplo, eu gostaria de criar um banco de dados pai com propriedades básicas de tarefas, como título e prazo, e bancos de dados filhos que adicionem propriedades específicas de cada projeto. Assim, eu poderia ter uma visualização única para ver todas as tarefas de hoje em um só lugar, ao mesmo tempo em que adicionaria todas as informações necessárias para cada tarefa individual. Estranhamente, até onde sei, ninguém colocou algo assim em um app
https://tana.inc/docs/supertags
Não posso falar pela versão tradicional baseada em Markdown, mas, no geral, concordo que seria bom ver esse tipo de recurso mais difundido
A maioria das ferramentas complexas tem tipos de tarefas, alguns personalizáveis e outros não. Por exemplo, o Jira parece conseguir fazer o que você descreveu
No entanto, a implementação padrão de tarefas usa templates em vez de herança, então você teria que escrever seus próprios scripts
Parece bom, mas parece praticamente igual ao Obsidian. Em que ele difere dos recursos do Obsidian?
Eu esperava outra coisa ao ver “Personal Knowledge Management”
Por exemplo, se eu estiver pesquisando agora como começar a fazer streaming IRL, gostaria de criar um tópico chamado “IRL Streaming” e, dentro dele, colocar links de vídeos, links de documentos/documentação/tutoriais/guias/how-tos e também escrever notas. No fim, eu aprenderia aquele tópico e, se necessário, poderia criar subtópicos como “SRT and SLS vs RTMP” para pesquisar também. Há comentários dizendo que parece um clone do Obsidian, mas, olhando o site do Obsidian, ele é apresentado como uma ferramenta para ajudar a escrever livros. Como este é chamado de PKM, parece relacionado, mas talvez não seja exatamente o que procuro. Não quero a abordagem de pastas com arquivos sugerida no comentário acima. Quero uma web app acessível de qualquer lugar, onde eu possa jogar links de materiais classificados por tópico e notas sobre eles. Lendo o README do siyuan-note, parece que isso é possível. Uma pergunta: ele oferece suporte a vários usuários? Eu gostaria de hospedá-lo para a comunidade do meu bairro