A4P Sermon Desk
unlistedby csh
설교 작성 중인 문단을 기준으로 내 과거 설교·묵상·설교조각과 외부 자료를 자동으로 찾아주는 설교 준비 보조 도구.
A4P Sermon Desk
설교를 작성하는 중에, 선택한 문장·문단을 기준으로 내 과거 설교·묵상·설교조각과 수집해 둔 외부 자료를 찾아 주는 옵시디언 플러그인입니다. 강단에 서기 전까지의 준비 과정에서, 관련된 내 글을 다시 떠올리고 인용·연결하는 일을 돕습니다.
"외부 자료"의 의미 — 이 플러그인에서 "외부"는 웹 검색이 아니라 볼트 안의 외부 출처 노트(스크랩·클리핑·자료 폴더 등, 설정의
external그룹)를 가리킵니다. 모든 검색은 로컬 볼트 안에서만 이루어집니다.
주요 기능
- 선택·문단 기반 추천 — 텍스트를 선택하고 우클릭 →
선택 텍스트로 참고자료 검색, 선택이 없으면 우클릭 →현재 문단으로 참고자료 검색. 명령 팔레트의선택 텍스트 또는 현재 문단으로 참고자료 검색에 단축키를 붙이면 손을 떼지 않고 검색할 수 있습니다. 설정에서 실시간 자동 검색(편집·선택 반응형)으로 전환할 수도 있습니다. - 두 가지 검색 모드 (토글)
- 의미 검색 — OpenAI 임베딩 + BM25를 RRF로 융합한 하이브리드 검색. 표현이 달라도 뜻이 통하면 찾아 줍니다.
- 태그 검색 — 어휘 사전(렉시콘) 키워드와 그 동의어·태그로 매칭. 테마마다 쓰는 어휘 사전을 고를 수 있습니다(예: 설교 = 교리, 연구 = 개념).
- 폴더 가중치 — 폴더를 내부/외부 그룹으로 묶고 가중치(0~10)를 주어, 더 신뢰하는 출처가 위로 오게 합니다. heading 매칭 boost 포함. 가중치는 관련도보다 우선하는 설계입니다 — 가중치 10 폴더의 약한 매칭이 가중치 1 폴더의 강한 매칭보다 위에 올 수 있습니다.
- 테마 프로파일 — 상황(설교 준비/연구 등)마다 폴더 가중치 세트를 따로 저장해 두고, 패널의 '테마' 칩이나 설정 탭에서 전환합니다. 전환·점수 조정은 재색인 없이 즉시 검색(의미·태그·채팅)에 반영됩니다. 단, 모든 테마에서 0점이던 폴더를 다시 살리거나 폴더를 새로 추가했을 때만 재색인이 필요합니다.
- 증분 재색인 — 재색인 버튼은 바뀐 노트만 다시 읽고, 임베딩도 새 청크만 생성합니다(API 비용 절감). 처음이거나 업그레이드 직후엔 자동으로 전체를 다시 만듭니다.
- 어휘 사전(렉시콘) + 동의어 자동 생성 — 분야별 키워드 사전(예: 교리, 개념)을 등록하면 LLM이 그 분야에 맞는 동의어를 자동 제안·임베딩해 태그 매칭 품질을 높입니다. 테마 프로파일마다 쓰는 사전과 채팅 역할을 따로 둘 수 있습니다.
- 채팅 탭 (노트에게 질문) — 질문하면 관련 문단을 찾아 근거로 답하고, 문장마다
[1]출처 번호를 붙입니다. 출처 카드에는 매칭 문단 스니펫이 보이고, 📎 버튼으로 그 문단을 현재 노트에 링크/콜아웃으로 넣을 수 있습니다. 활성 테마 가중치가 검색에 함께 적용됩니다. (OpenAI API 키 필요, 질문당 약 3~10원) - 결과 카드 인터랙션 — 펼쳐 보기, 카드 핀 고정(상단 고정), 노트 바로 열기, 팝업 보기. 같은 노트에서 여러 문단이 매칭되면 가장 높은 문단만 보이고
+N 문단표시가 붙습니다. - 두 가지 삽입 방식 (드래그·삽입 버튼 공통) — 링크(기본)는 위키링크만, 콜아웃은 매칭된 문단을 접기 가능한 인용 콜아웃(
> [!quote]+)으로 통째로 넣습니다. 콜아웃도 제목 줄에[[노트#소제목|노트 › 소제목]]링크가 있어 백링크·그래프가 그대로 유지됩니다. 패널 테마 오른쪽의 '삽입' 세그먼트(링크 | 콜아웃)나 설정 탭에서 바꾸고, Option(Alt)을 누른 채 드래그·클릭하면 그 한 번만 반대 방식으로 들어갑니다. - 💡 아이디어 메모로 생성하기 — 어떤 노트에서든 문장·문단을 선택하고 우클릭 →
아이디어 메모로 생성하기. 지정한 폴더에 선택 내용을> [!quote]+ [[원본 노트]]인용 콜아웃으로 담고 그 아래 비어 있는## 내 생각섹션을 붙인 새 노트(frontmattercreated·modified·source)를 만들어 새 탭에 엽니다. 원본 노트는 바뀌지 않습니다. 설정에서 Templater 템플릿을 지정하면 생성 직후 그 템플릿을 자동 실행해(템플릿 삽입 단축키와 동일) WORD 분류 같은 후처리까지 한 번에 끝냅니다. 파일명은 선택 첫 줄 40자 이내, 겹치면2,3이 붙습니다. 명령선택 텍스트로 아이디어 메모 생성에 단축키를 붙일 수 있습니다. - 🔬 분석 (검색 근거 시각화) — 관련도 카드 오른쪽의 '분석' 토글(기본 꺼짐)을 켜면 각 결과 카드에 1위 대비 관련도 막대(어휘 BM25 ⇄ 의미 벡터 비율, ×가중치·×제목·×포함률 배율 칩)와 "왜 이 결과?" 상세(일치 단어, 순위·유사도, RRF 합산, 잡음 필터 통과 사유)가 붙습니다. 태그 검색은 키별 종류·가중치로 분해합니다. 시연·점검용.
- 한국어 형태소 분석 + 보호 단어 —
garu-ko기반 토크나이저로 한국어 본문을 색인합니다. 분석기가 핵심 단어를 잘못 쪼개는 경우(예: "거룩해지는" → "해지")를 막기 위해 어휘 사전의 키워드·동의어는 자동으로, 그 외 단어는 설정에서 직접 보호 단어로 등록할 수 있습니다. 반영은 [형태소 색인 다시 계산](임베딩 유지, API 비용 0) 한 번. - 결과 개수 선택 (10 / 20 / 50) — 관련도 카드 안의 결과 개수(10개 | 20개 | 50개)나 설정 탭에서 바꾸면 같은 문단으로 즉시 재검색합니다(추가 API 비용 없음). 후보 목록도 같이 늘어나 50개를 골라도 후보가 모자라지 않습니다.
- 관련도 임계값 슬라이더 / 자동 갱신 일시정지(자동 모드).
요구 사항
- 옵시디언 데스크톱 (모바일 미지원,
isDesktopOnly) - 최소 앱 버전 1.5.0
- (선택) OpenAI API 키 — 의미 검색의 임베딩에 사용. 키가 없으면 BM25(키워드)만으로 동작합니다.
설치
BRAT으로 설치 (권장)
BRAT을 쓰면 이 저장소에서 자동으로 받아 설치하고, 새 버전이 나오면 업데이트 알림도 받습니다.
- 옵시디언 설정 → 커뮤니티 플러그인에서
BRAT검색 → 설치 → 활성화 - 명령 팔레트(
Cmd/Ctrl + P) →BRAT: Add a beta plugin for testing - 입력란에
ai4pastor/a4p-sermon-desk입력 → Add Plugin - 설정 → 커뮤니티 플러그인에서 A4P Sermon Desk가 켜져 있는지 확인
이후 새 버전이 릴리스되면 BRAT이 자동으로 업데이트합니다.
수동 설치
Releases에서 main.js, manifest.json을 내려받아 볼트의 <vault>/.obsidian/plugins/a4p-sermon-desk/ 에 넣은 뒤 옵시디언에서 플러그인을 활성화합니다.
사용 흐름
- (선택) 설정 → A4P Sermon Desk에서 OpenAI API 키를 입력하고, 검색 대상 폴더·가중치·제외 폴더·어휘 사전을 설정합니다.
- 설정의 [재색인 (변경분만)] 버튼 — 볼트를 색인합니다. (API 키가 있으면 임베딩도 이어서 자동 실행)
- 명령 팔레트에서
설교 준비 데스크 열기로 추천 패널을 엽니다. - 노트에서 텍스트를 선택하고 우클릭 →
선택 텍스트로 참고자료 검색을 누르면 관련 노트가 패널에 나타납니다. - (선택) 설정의 실시간 자동 검색을 켜면 편집·선택할 때마다 자동으로 검색됩니다.
- (선택) 설정의 💡 아이디어 메모에서 저장 폴더(필수)와 Templater 템플릿(선택)을 지정하면, 어떤 노트에서든 선택 → 우클릭 →
아이디어 메모로 생성하기로 아이디어 노트를 만들 수 있습니다.
명령·버튼
| 위치 | 항목 | 설명 |
|---|---|---|
| 명령 팔레트 · 리본 | 설교 준비 데스크 열기 | 추천 패널 열기 |
| 명령 팔레트 | 선택 텍스트 또는 현재 문단으로 참고자료 검색 | 선택(2자 이상)이 있으면 선택으로, 없으면 커서 문단(10자 이상)으로 검색. 단축키 지정 권장 |
| 에디터 우클릭 | 선택 텍스트로 참고자료 검색 / 현재 문단으로 참고자료 검색 | 선택 유무에 따라 하나만 표시 |
| 에디터 우클릭 | 💡 아이디어 메모로 생성하기 | 선택이 있을 때만 표시. 선택 내용을 인용 콜아웃 + 원본 링크로 담은 새 노트를 지정 폴더에 만들고 새 탭에 연 뒤, 지정한 Templater 템플릿이 있으면 실행 |
| 명령 팔레트 | 선택 텍스트로 아이디어 메모 생성 | 우클릭 항목과 동일. 단축키 지정용 |
| 설정 탭 | 💡 아이디어 메모 — 저장 폴더 · Templater 템플릿 · 콜아웃 종류 | 폴더·템플릿 입력란은 자동완성 + [검증](폴더 존재·노트 수 / 템플릿 존재·Templater 여부). 플러그인은 폴더를 만들지 않음 |
| 설정 탭 | 변경사항 적용 (재색인 없이) | 폴더 그룹·제외 변경을 인덱스에 반영 — 배너가 권하는 버튼만 강조색으로 표시 |
| 설정 탭 | 재색인 (변경분만) | 바뀐 노트만 재색인 · 볼트에서 사라진 노트의 색인 정리 포함 (첫 실행·업그레이드 직후엔 자동 전체) |
| 설정 탭 | 강제 전체 재색인 | 인덱스 전체 재구축 (임베딩 전량 재생성 — API 비용 발생) |
| 설정 탭 | 형태소 색인 다시 계산 | 보호 단어 변경 반영 — 임베딩 유지, API 비용 0 |
| 설정 탭 | 폴더 설정 초기화 | 폴더·테마 가중치·제외 폴더만 초기화(확인 후). API 키·어휘 사전은 유지 |
| 패널 | 의미 검색 · 태그 검색 · 채팅 세그먼트(맨 위, 전폭) · 관련도 슬라이더 · 일시정지(자동 모드, 상태줄 오른쪽) | |
| 패널 | 테마 칩 | 폴더 가중치 프로파일 전환 (즉시 재검색) |
| 패널 | 삽입 세그먼트 (링크 · 콜아웃) — 테마 오른쪽 | 드래그·삽입 버튼이 넣는 형식. Option(Alt)+드래그·클릭 = 이번만 반대 |
| 패널 | 분석 토글 — 관련도 카드 오른쪽 | 점수 구성 막대·"왜 이 결과?"·쿼리 요약 표시 (기본 꺼짐) |
| 패널 | 결과 세그먼트 (10개 · 20개 · 50개) — 관련도 카드 안 | 결과 카드 개수 (즉시 재검색) |
개발용 디버그 명령(하이브리드/BM25/형태소 벤치 등)은
npm run dev빌드에서만 노출되며, production 빌드(npm run build)에서는 제거됩니다.
데이터 저장
- 색인(노트·청크·형태소 토큰·임베딩)은 플러그인 폴더의
index.db(sql.js)에 저장됩니다. - 노트를 지우거나 이름·위치를 바꾸면 색인이 즉시 따라갑니다(임베딩 유지, API 비용 0). 내용 수정·새 노트는
재색인 (변경분만)으로 반영합니다. - 저장은 백업(
index.db.bak) 기반 원자 교체로 이루어져, 저장 도중 중단되어도 인덱스가 통째로 사라지지 않습니다. - 설정은 같은 폴더의
data.json에 저장되며 OpenAI API 키가 평문으로 들어갑니다 — 이 폴더를 다른 사람과 공유하거나 공개 저장소에 올리지 마세요. - 채팅 대화는 세션 전용이며 저장되지 않습니다.
개발
npm install
npm run dev # watch 빌드 (debug 명령 포함, sourcemap)
npm run build # production 빌드 (debug 명령 제거, minify)
npm run typecheck # tsc --noEmit
라이선스
개인 프로젝트.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.