Skip to main content
이 노트북은 OneNote에서 문서를 로드하는 방법을 다룹니다.

사전 요구사항

  1. Microsoft identity platform 지침에 따라 애플리케이션을 등록합니다.
  2. 등록이 완료되면 Azure Portal에 앱 등록의 개요 페이지가 표시됩니다. 여기서 애플리케이션(클라이언트) ID를 확인할 수 있습니다. client ID라고도 하는 이 값은 Microsoft identity platform에서 애플리케이션을 고유하게 식별합니다.
  3. 항목 1의 단계를 따르는 동안 리디렉션 URI를 http://localhost:8000/callback으로 설정할 수 있습니다.
  4. 항목 1의 단계를 따르는 동안 Application Secrets 섹션에서 새 비밀번호(client_secret)를 생성합니다.
  5. 문서의 지침에 따라 애플리케이션에 다음 SCOPES(Notes.Read)를 추가합니다.
  6. pip install msalpip install beautifulsoup4 명령을 사용하여 msal 및 bs4 패키지를 설치해야 합니다.
  7. 단계를 완료하면 다음 값을 확보해야 합니다:
  • CLIENT_ID
  • CLIENT_SECRET

🧑 OneNote에서 문서 수집 지침

🔑 인증

기본적으로 OneNoteLoaderCLIENT_IDCLIENT_SECRET 값이 각각 MS_GRAPH_CLIENT_IDMS_GRAPH_CLIENT_SECRET이라는 환경 변수로 저장되어야 합니다. 애플리케이션 루트에 .env 파일을 통해 또는 스크립트에서 다음 명령을 사용하여 이러한 환경 변수를 전달할 수 있습니다.
os.environ['MS_GRAPH_CLIENT_ID'] = "YOUR CLIENT ID"
os.environ['MS_GRAPH_CLIENT_SECRET'] = "YOUR CLIENT SECRET"
이 로더는 on behalf of a user라는 인증 방식을 사용합니다. 이는 사용자 동의가 필요한 2단계 인증입니다. 로더를 인스턴스화하면 사용자가 방문하여 필요한 권한에 대한 동의를 제공해야 하는 URL이 출력됩니다. 그런 다음 사용자는 이 URL을 방문하여 애플리케이션에 동의해야 합니다. 그 후 사용자는 결과 페이지 URL을 복사하여 콘솔에 다시 붙여넣어야 합니다. 로그인 시도가 성공하면 메서드는 True를 반환합니다.
from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(notebook_name="NOTEBOOK NAME", section_name="SECTION NAME", page_title="PAGE TITLE")
인증이 완료되면 로더는 ~/.credentials/ 폴더에 토큰(onenote_graph_token.txt)을 저장합니다. 이 토큰은 나중에 앞서 설명한 복사/붙여넣기 단계 없이 인증하는 데 사용할 수 있습니다. 인증에 이 토큰을 사용하려면 로더를 인스턴스화할 때 auth_with_token 매개변수를 True로 변경해야 합니다.
from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(notebook_name="NOTEBOOK NAME", section_name="SECTION NAME", page_title="PAGE TITLE", auth_with_token=True)
또는 토큰을 로더에 직접 전달할 수도 있습니다. 이는 다른 애플리케이션에서 생성된 토큰으로 인증하려는 경우에 유용합니다. 예를 들어 Microsoft Graph Explorer를 사용하여 토큰을 생성한 다음 로더에 전달할 수 있습니다.
from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(notebook_name="NOTEBOOK NAME", section_name="SECTION NAME", page_title="PAGE TITLE", access_token="TOKEN")

🗂️ 문서 로더

📑 OneNote 노트북에서 페이지 로드

OneNoteLoader는 OneDrive에 저장된 OneNote 노트북에서 페이지를 로드할 수 있습니다. notebook_name, section_name, page_title의 조합을 지정하여 특정 노트북, 특정 섹션 또는 특정 제목의 페이지를 필터링할 수 있습니다. 예를 들어 OneDrive의 노트북 중 Recipes라는 섹션에 저장된 모든 페이지를 로드하려는 경우입니다.
from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(section_name="Recipes", auth_with_token=True)
documents = loader.load()

📑 페이지 ID 목록에서 페이지 로드

또 다른 방법은 로드하려는 각 페이지에 대한 object_ids 목록을 제공하는 것입니다. 이를 위해서는 Microsoft Graph API를 쿼리하여 관심 있는 모든 문서 ID를 찾아야 합니다. 이 링크는 문서 ID를 검색하는 데 유용한 엔드포인트 목록을 제공합니다. 예를 들어 노트북에 저장된 모든 페이지에 대한 정보를 검색하려면 https://graph.microsoft.com/v1.0/me/onenote/pages에 요청해야 합니다. 관심 있는 ID 목록을 확보하면 다음 매개변수로 로더를 인스턴스화할 수 있습니다.
from langchain_community.document_loaders.onenote import OneNoteLoader

loader = OneNoteLoader(object_ids=["ID_1", "ID_2"], auth_with_token=True)
documents = loader.load()

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I