O que cli-anything-joplin faz?
Use esta habilidade para automatizar fluxos de trabalho de cadernos, notas, tarefas, etiquetas, anexos,
busca, sincronização e importação/exportação do Joplin por meio de um invólucro com estado que utiliza
o binário real do terminal joplin.
Requisitos
- Python 3.10+
- Binário do terminal Joplin disponível como
joplin - Opcional: use
--profilepara direcionar um perfil específico do Joplin
Instalação
cd joplin/agent-harness
pip install -e .
Uso
# Modo REPL (padrão)
cli-anything-joplin
# Comando único legível por máquina
cli-anything-joplin --json notebooks list
# Projeto com estado
cli-anything-joplin project new --name demo -o ./demo.joplin-harness.json
cli-anything-joplin --project ./demo.joplin-harness.json notes create "Nota de reunião"
# Simulação (sem salvamento automático)
cli-anything-joplin --json --dry-run --project ./demo.joplin-harness.json notes create temp
Contrato de saída JSON
Quando --json está ativado, os comandos retornam:
ok: booleanocommand: identificador de comando estável, comonotes.list,todos.toggledata: payload do comandoerror: null em caso de sucesso, ou{ type, message }em caso de falha
Grupos de comandos
project:new,open,save,info,json,statusnotebooks:list,create,use,removenotes:list,create,set,get,remove,copy,move,renametodos:list,create,toggle,clear,done,undonetags:list,add,remove,notetags,tagnotessearch:runsync:run(--target,--upgrade,--use-lock)interop:import,exportconfig:get,set,list,export,import-fileattach:addstatus:show,restorebackend:version,dump,keymap,geoloc,export-sync-statusserver:status,start,stope2ee:status,target-status,decrypt,decrypt-filesession:status,undo,redo,history
Orientações para o agente
- Prefira
--jsonpara saída parseável. - Use
--projectao executar fluxos de múltiplas etapas para que o histórico seja persistido. - Comandos de mutação únicos salvam automaticamente o projeto, a menos que
--dry-runesteja definido. - O modo REPL não salva automaticamente; execute
project saveexplicitamente. - Algumas compilações do CLI do Joplin bloqueiam a
searchatrás do modo GUI; se você vir"only available in GUI mode", trate a busca como melhor esforço. - O Joplin 3.6.x pode ter um comando
versionquebrado em layouts globais do npm; o invólucro recorre aos metadados do pacote instalado parabackend version, sondando o diretório do binário resolvido por symlink, onode_modules/joplinirmão no estilo Windows, olib/node_modules/joplinpai no estilo Unix e, por fim,npm root -g. - O
stdout/stderrdo backend nos resultados dos comandos são literais; não presuma que avisos foram removidos dos corpos das notas ou exportações. - Em caso de falha, analise
errorusando o mesmo campocommandque no sucesso (config.import_file,e2ee.decrypt_file). Subcomandos com várias palavras usam um único ponto entre o grupo e o subcomando.
Fluxo de teste
# Ciclo de feedback rápido
python -m pytest -q cli_anything/joplin/tests/test_core.py
python -m pytest -q cli_anything/joplin/tests/test_full_e2e.py::TestCLISubprocess
# Backend real (joplin deve estar no PATH)
python -m pytest -v cli_anything/joplin/tests/test_full_e2e.py::TestBackendCommands
python -m pytest -v cli_anything/joplin/tests/test_full_e2e.py::TestBackendWorkflows
python -m pytest -v cli_anything/joplin/tests/test_full_e2e.py::TestBackendIntegration
# Suíte completa
python -m pytest -v --tb=no cli_anything/joplin/tests
# Verificar o ponto de entrada do script de console instalado
CLI_ANYTHING_FORCE_INSTALLED=1 python -m pytest -v -s cli_anything/joplin/tests/test_full_e2e.py
Linha de base de validação atual (Windows + Joplin CLI 3.6.2):
python -m pytest -q cli_anything/joplin/tests/test_core.py->107 passedpython -m pytest -q cli_anything/joplin/tests->134 passed, 1 skipped