Skip to main content

개요

search_notes는 키워드와 일치하는 노트를 주요 문서(one-pager, custom)와 함께 반환해요. 결정 사항이나 할 일처럼 노트의 내용까지 확인할 때 사용하세요. 가벼운 메타데이터만 필요한 목록 조회(예: “폴더 X에 어떤 노트가 있지”)는 대신 list_notes를 사용하세요. 사용할 때
  • “OKR Q2에서 팀이 무엇을 결정했지?”
  • “이 결정의 출처 노트가 어디 있지?”
  • “네이버를 언급한 노트를 보여줘.”
동작 방식
  • keyword 필수. 결과는 전문 검색 관련도(동점 시 createdAt 내림차순)로 정렬돼요.
  • 매칭된 각 노트는 주요 문서(one-pager, custom)를 inline으로 담아요.
  • 문서 내용에서 HTML이 제거돼요. 5,000자보다 큰 문서는 잘리고 표시돼요.
  • 검색 인덱스를 사용할 수 없으면 정상 응답에 degraded: true, 빈 notes, degradedReason을 포함해요.
워크스페이스 범위 API 키로 호출하면 결과가 좁아져요. 워크스페이스 범위 키는 전체 구성원에게 공유된 폴더의 노트만 검색하므로, 개인 폴더의 노트는 keyword가 매칭되더라도 결과에서 빠져요. 개인 폴더의 노트까지 검색해야 하면 사용자 범위 키를 쓰세요(시스템 키가 조회하는 노트 범위).
list_notes보다 무거워요. 각 결과에 문서 내용이 포함돼요(노트당 ~1,500 토큰). 기본 페이지 크기는 50, 최대 200이에요. 메타데이터만 필요하면 list_notes를 사용하세요.

파라미터

keyword (필수)

검색어예요. 서버 측에서 토큰화돼요. 한국어 텍스트는 형태소 분석돼요(예: 네이버[네, 버]). 비었거나 공백만 있는 keyword는 400을 반환해요. 키워드 검색은 사용자 범위와 워크스페이스 범위 API 키를 모두 받아요. workspaceGuid를 생략하면 접근 가능한 모든 워크스페이스를 검색해요. 워크스페이스 범위 API 키는 연결된 워크스페이스만 검색해요. 특정 워크스페이스로 한정하려면 workspaceGuid를 전달하세요.

filter.folderId (선택)

list_notes와 의미가 같아요. 재귀적 폴더 범위이며 서버 측에서 인가돼요.

pagination (선택)

{ cursor, size }. 기본값 size: 50, 최대 200. 이 상한은 결과당 더 높은 비용(각 노트가 문서를 담음)을 반영해요.

응답 형식

성공 응답

필드 설명:
templateTitle로 구분하지 마세요. 이건 enum이 아니라 표시 라벨이에요. boolean 확인(“이게 one-pager인가?”)에는 알려진 관리형 템플릿 id에 대해 templateId를 사용하거나, 두 필드를 모두 노출하고 UI가 라벨로 고르게 하세요.

성능 저하 응답

검색 인덱스를 사용할 수 없으면 응답은 degraded=true로 설정되고 빈 notes 배열을 반환해요:
degradedReason은 다음 중 하나예요:
  • search_index_unavailable — 이 환경에서 검색 인덱스가 비활성화됨.
  • search_index_degraded — 쿼리 도중 검색 인덱스가 오류를 던짐.
재시도를 미루거나 결과를 적절히 해석할 수 있도록 이를 LLM/사용자에게 노출하세요.

사용 예시

예시 1: 주제 검색

요청:
OKR을 언급하는 가장 관련도 높은 노트 10개를 각각의 주요 문서와 함께 inline으로 반환해요.

예시 2: 폴더 범위 한국어 keyword

요청:
폴더 455765(및 하위)에서만 네이버를 검색해요. 한국어 형태소 분석이 서버 측에서 실행돼요.

예시 3: 날짜 범위 심층 검색

요청:

권장 사례

먼저 list_notes로 어떤 노트가 매칭되는지 찾으세요. LLM이 답하기 위해 여전히 문서 내용이 필요하면 같은 keyword로 search_notes로 전환하세요. 가장 저렴한 점진적 공개 경로예요.
폴더 범위 검색은 관련도 공간이 더 작아서 더 빠르고 순위가 더 좋은 결과를 반환해요. 폴더 후보를 먼저 찾으려면 list_notes(filter.folderId)와 함께 쓰세요.
심층 검색 endpoint는 현재 nextCursor: null을 방출해요. 결과 30개로 부족하면 페이지네이션 대신 keyword를 더 구체적으로 다듬거나 folderId/dateRange로 범위를 좁히세요.
degraded=true 응답은 솔직한 신호예요. 검색 인덱스가 실행되지 못했어요. 빈 notes 배열을 “매칭 없음”으로 취급하지 말고, 재시도 타이밍을 적절히 잡을 수 있도록 성능 저하를 사용자/LLM에게 노출하세요.

자주 발생하는 오류

빈 keyword

토큰 사용량

노트당 (문서 포함): 평균 약 1,500 토큰. 잘린 문서는 원본 크기와 관계없이 약 1,500 토큰으로 제한돼요.
get_note_transcript와 비교하면(회의 시간당 ~3,000–5,000 토큰), search_notes는 보통 10배 더 압축적이면서 같은 핵심 결정을 다루는 정제된 문서를 반환해요. 정확한 발화가 필요할 때만 transcript를 사용하세요.