joplin2n8n - 조플린(Joplin) 노트를 N8N으로 전송하는 플러그인을 만들었습니다.

joplin2n8n 플러그인 과정 한눈에 보기
조플린과 N8N
제가 요즘 가장 많이 사용하는 앱이 두 가지 있습니다. 바로 노트 작성 앱 조플린(Joplin)과 자동화 플랫폼 N8N입니다.
노트 앱 조플린

여러 노트 앱을 거쳐 최종적으로 정착한 곳이 바로 조플린입니다. 좋은 노트 앱은 많지만, 제가 원하는 기능을 모두 갖추고 있으면서도 빠른 앱은 조플린이 유일했습니다.
제가 정한 노트 앱의 조건은 다음과 같습니다.
- 마크다운(Markdown)으로 작성 가능
- 비종속적 데이터 주권(데이터를 온전히 직접 보유하고 관리)
- 특정 기업 서비스에 종속되지 않는 오픈소스
- 빠른 메모 가능
- 사용하는 모든 기기에 DB 방식 동기화 가능(파일 시스템 방식 제외)
- 플러그인을 통한 기능 확장 가능
옵시디언(Obsidian) 같은 앱도 훌륭하지만, 오픈소스가 아니기 때문에 언제든 수익화를 위해 서비스 방식이 변경될 수 있고 포크(Fork) 버전을 만들 수도 없습니다. 또한, 노트와 플러그인이 많아지면 앱을 실행할 때 모든 노트의 인덱싱과 캐시 초기화를 처리하느라 최초 구동이 느려져 빠른 메모가 어렵다는 단점이 있습니다.
그 밖의 수많은 노트 앱도 오픈소스가 아니거나, 빠른 메모가 불가능하거나, DB 방식 동기화를 지원하지 않거나, 안드로이드 앱이 없는 등의 이유로 사용을 중단했습니다.
물론 조플린에도 단점은 있습니다. 조플린 서버(PostgreSQL, SQLite)를 직접 구성해야 해서 서버와 정성이 필요합니다. 또한 DB에 담긴 노트 내용을 외부 도구와 연동하려면 PostgREST나 Joplin Data API를 다룰 줄 알아야 합니다. 게다가 옵시디언에 비하면 디자인도 아쉬운 편입니다. 동기화 기능은 강력하지만, 이를 온전히 활용하려면 셀프 호스팅(Self-hosted) 서버가 필요하다 보니 사용자가 적어 관련 정보를 얻기도 어렵습니다.
그럼에도 저에게는 단점보다 장점이 훨씬 크기 때문에 조플린에 정착하게 되었습니다.
자동화 플랫폼 N8N

N8N을 사용하면 전체적인 흐름을 한눈에 파악할 수 있고, 어느 과정에서 오류가 발생했는지도 확인할 수 있습니다.
N8N은 자동화 작업을 위한 플랫폼입니다. 최근에는 AI로도 수많은 자동화가 가능하므로 N8N으로만 할 수 있는 전유물 같은 작업은 없지만, 워크플로우와 노드 시각화가 잘 되어 있어 쓸수록 매력적이라고 느낍니다.
AI로만 자동화를 구현할 경우, 실행 트리거(Trigger)들이 사방에 흩어져 있어 관리가 불편합니다. 대표적인 자동화 트리거 종류와 구동 방식은 다음과 같습니다.
- AI 채팅으로 시작 - AI 앱이나 웹 인터페이스에서 시작
- 수동 실행으로 시작 - CLI, GUI, 앱 등에서 직접 실행
- 정해진 시간에 자동 시작 - 작업 스케줄러, Cron, systemd timer 등으로 프로세스 실행
- 외부 요청으로 시작 - HTTP 서버를 실행하고 Webhook/API 요청 대기
- 이메일 수신으로 시작 - IMAP/POP3 감시 프로세스 실행
- 파일 변경으로 시작 - 파일 변경 감시 프로세스 실행
- 데이터베이스 변경으로 시작 - DB Trigger 또는 CDC 프로세스 실행
- 메시지 수신으로 시작 - 메시지 브로커 Consumer 프로세스 실행
- 외부 서비스 이벤트로 시작 - Webhook 서버 또는 Event API 구독
- 프로그램 이벤트로 시작 - Plugin, Hook, Event Listener 등록
- OS 이벤트로 시작 - OS 서비스 또는 이벤트 감시 프로세스 실행
- 하드웨어 이벤트로 시작 - 장치 이벤트 감시 프로세스 실행
위의 트리거들을 개별적으로 구동하려면 대부분 직접 코드를 작성해 이벤트를 감시하는 프로세스를 띄워야 합니다. 어떤 프로세스가 구동 중인지, 어떤 코드가 어떤 역할을 하는지 일일이 확인하고 관리해야 하는 번거로움이 있습니다. 물론 이 과정 역시 AI의 도움을 받을 수 있지만, 간단한 수정을 할 때도 토큰이 낭비됩니다.
N8N을 이용하면 이 모든 트리거를 한곳에서 통합 관리할 수 있으며, 어느 단계에서 어떤 오류가 발생했는지 쉽게 확인할 수 있습니다. 개발에 입문하신 분들이 IT 전반에 대한 흐름을 학습하는 용도로 활용하기에도 매우 훌륭합니다. 코드만 보면 복잡하고 눈이 아프지만, N8N의 시각적 노드로 이해하면 훨씬 명확해집니다.
조플린과 N8N의 시너지
저는 일상적인 메모는 물론 작업을 위한 정보도 모두 조플린에 저장합니다. N8N은 기본 기능도 훌륭하지만 수많은 외부 API, Node.js 패키지, Python 패키지, 리눅스 CLI 앱, AI 모델을 연동하여 데이터를 처리할 수 있습니다. (단, 패키지 추가는 셀프 호스팅 환경에서만 가능합니다.)
따라서 조플린과 N8N을 연동하여 사용하면 엄청난 시너지 효과가 발생합니다.
두 앱을 연동하는 방법은 N8N에서 조플린 데이터를 조회하는 방식과, 조플린에서 N8N으로 데이터를 보낸 뒤 결과를 전달받는 방식 두 가지가 있습니다. 전자는 조플린 서버(PostgreSQL DB)에 PostgREST를 연결하여 해결했고, 후자는 이번에 소개할 조플린 플러그인 joplin2n8n을 직접 개발하여 해결했습니다.
joplin2n8n 작동 과정
조플린의 노트를 N8N으로 보내고, N8N에서 원하는 작업을 처리한 후 그 결과를 다시 조플린으로 전달받아 표시하는 간단한 예시입니다.
선택한 텍스트를 N8N으로 전달하여 글자 수를 계산하고, 그 결과를 HTML 형태로 화면에 표시합니다. 어절 수나 원고지 매수 계산 등으로도 확장할 수 있습니다.
Step 1. 조플린 노트 전체 또는 일부(선택 영역)를 `N8N`으로 전송
Step 2. N8N에서 원하는 작업 실행 후 결과물 생성(TEXT, HTML, 파일 등)
Step 3. 결과물을 조플린 화면에 표시하거나 클립보드 복사, 노트에 삽입

조플린의 내용을 N8N으로 전송하고 N8N에서 노트 내용을 처리

N8N이 보낸 결과를 조플린의 다이얼로그 창으로 표시
joplin2n8n 안내
joplin2n8n이란?
조플린 노트를 N8N으로 보낸 후, N8N에서 노트 내용을 다양하게 가공·처리하여 그 결과(TEXT, HTML, 바이너리 파일)를 다시 조플린에 표시하거나 노트에 삽입할 수 있도록 돕는 플러그인입니다.
N8N과의 연동을 통해 무궁무진한 자동화 작업을 수행할 수 있습니다. 본 플러그인은 무료이며 MIT 라이선스를 따릅니다.
- GitHub 레포지토리: https://github.com/bonik21/joplin_plugin_joplin2n8n
joplin2n8n 주요 활용 예시
joplin2n8n을 활용한 대표적인 예시입니다.
- 📧 이메일 전송: 작성한 노트를 즉시 이메일로 발송
- 💬 메신저 알림: 노트 내용이나 가공된 데이터를 Slack, Telegram, Discord 등으로 전송
- 📝 블로그/문서 발행: 워드프레스(WordPress), 노션(Notion) 등으로 포스팅 자동 발행
- 🔄 파일 형식 변환: 마크다운(.md) 문서를 PDF, HTML, JSON, XLSX 등으로 변환 후 저장
- 🖼️ 이미지 처리: 이미지 메타데이터(Exif) 추출/수정, 포맷 변환, 편집, OCR 처리 등
- ☁️ 클라우드 백업: 특정 노트를 Google Drive 등 외부 저장소에 백업
- 🤖 AI 파이프라인 연동:
- 맞춤법 교정 및 요약문 작성
- 자동 번역본 생성
- 노트 내용 관련 외부 자료 조사 리포트 생성
- 텍스트 기반 이미지/음악 생성
- 📊 RAG (검색 증강 생성): 노트 데이터를 임베딩(Embedding)하여 벡터 DB에 자동 저장
joplin2n8n 설치 방법
자세한 기능 안내 및 사용법은 GitHub 레포지토리의 README.md를 참고해 주세요.
공식 마켓플레이스 설치

조플린 앱 내에서 joplin2n8n 설치
npm 레지스트리에도 등록해 두었으므로 조플린 앱 내에서 바로 설치할 수 있습니다. 조플린 앱의 도구 - 옵션 - 플러그인 - 플러그인 찾기 검색창에 joplin to n8n을 입력하여 설치합니다.
수동 설치 방법

jpl 파일로 joplin2n8n 수동 설치
- GitHub Releases에서
.jpl파일을 다운로드합니다. - 조플린 앱의
도구 - 옵션 - 플러그인 - ⚙️ 아이콘 - 플러그인 파일로 설치를 선택하여 다운로드한 파일을 지정합니다.
joplin2n8n 설정
플러그인 옵션

joplin2n8n 플러그인 옵션
조플린 앱의 도구 - 옵션 - 좌측 하단 joplin2n8n 메뉴를 선택하면 플러그인의 기본 UI 및 동작 옵션을 설정할 수 있습니다.
웹훅(Webhook) 설정

joplin2n8n 웹훅 설정
조플린 앱의 상단 메뉴 도구 - joplin2n8n - joplin2n8n 설정을 클릭하면 웹훅 URL을 등록할 수 있습니다. 필요한 만큼 여러 개의 기능을 개별 웹훅 URL로 구분하여 등록할 수 있으며, N8N에서는 해당 URL에 맞춰 필요한 작업을 처리하도록 구성합니다. 현재 저는 20여 개의 기능을 등록해 두고 사용 중이며, 계속해서 늘려가는 중입니다.
joplin2n8n 활용 시연 (GIF)
joplin2n8n을 통해 수행할 수 있는 다양한 작업 예시입니다. N8N을 활용하면 아이디어에 따라 무궁무진한 자동화를 구현할 수 있습니다.
AI를 이용한 글 자동 생성
joplin2n8n-AI를 이용해서 번역
joplin2n8n-js코드를 이용해 마크다운 테이블 코드를 JSON으로 변환
joplin2n8n-EXIFtool을 이용해 이미지의 메타데이터 읽기
joplin2n8n-AI를 이용해 이미지 내의 표를 마크다운 테이블 코드로 변환
joplin2n8n-js코드를 이용해 마크다운 이미지 코드를 HTML 이미지 코드로 변환(너비조절, 가운데 정렬)
joplin2n8n-Imagemagick을 이용해 이미지 크기 및 확장자 변환
도움이 될 만한 팁
N8N 대신 커스텀 백엔드 서버 활용
joplin2n8n의 핵심 동작 규칙은 단순합니다. 노트 데이터를 특정 URL로 전송하고, 전달받은 결과 데이터를 화면에 출력하거나 노트에 삽입하는 구조입니다.
처음에는 순수 N8N 연동 목적으로 만들었기에 이름이 joplin2n8n이지만, 이 요청/응답 규격만 맞춘다면 커스텀 서버와도 완벽히 호환됩니다. Python의 FastAPI나 Node.js의 Fastify 등을 활용해 가벼운 API 서버를 구축하여 사용할 수도 있습니다. 최근에는 AI를 통해 이러한 백엔드 서버도 손쉽게 작성할 수 있습니다.
URL 쿼리 파라미터 활용

URL 쿼리를 통해 하나의 워크플로우에서 여러 작업 분기 처리
아래와 같이 URL에 쿼리 파라미터를 포함시켜 요청을 보낸 뒤, N8N(또는 커스텀 서버) 내부에서 조건문으로 분기하면 하나의 워크플로우에서 여러 기능을 일괄 관리할 수 있습니다.
https://n8n.example.com/webhook/j2n_ai?act=generate
https://n8n.example.com/webhook/j2n_ai?act=search
https://n8n.example.com/webhook/j2n_ai?act=summary
https://n8n.example.com/webhook/j2n_ai?act=translate
구축 의뢰 및 문의
N8N 워크플로우 설계나 커스텀 백엔드 서버 구축 관련 의뢰는 mail@bonik.me로 문의해 주시기 바랍니다. (작업 난이도에 따라 비용 책정)
라이선스 및 후원
- 라이선스: joplin2n8n은 MIT License를 따릅니다.
- 후원하기: https://buymeacoffee.com/bonik