복사 작업은 어디로 갑니까?
이 페이지에는 다음과 같은 메서드가 표시됩니다 clipboard.write. 사전 로드에서의 구현은 래퍼입니다. 유용한 질문은 그 래퍼가 무엇을 보내고 어떤 코드가 그것을 받는지입니다.
사용 REA 추적 방법 Notion 시스템 클립보드에 텍스트를 복사합니다. 각 단계에서 코드를 표시합니다.
다음과 같은 예제 프롬프트 Notion코딩 에이전트가 사용할 수있는 로컬 응용 프로그램 패키지입니다.
REA 읽기 시작 위치 찾기
탭 사전 로드 분석 REA 페이지 및 요청을 보내는 호출을 찾습니다. 두 결과 모두 축소 된 번들의 소스 범위와 함께 제공됩니다:
REA 연구 결과→두 가지 장소를 오픈
api_key: "__electronApi"
api_status: "dynamic"
source: preload.js:1:22764–22828
operation: "invoke"
channel_expression: "e"
source: preload.js:1:6486–6522
analyze_javascript_application 에 결과 Notion의 탭 사전 로드, REA 4.1.0. 위치는 원래 번들의 선과 0 기반 열을 사용합니다.
에이전트는 이러한 위치를 열고 어셈블리에서 클립보드 멤버를 찾아 읽습니다 invokerInMain. 그것의 외침 위치 공급 notion:clipboard:write. 그 이름은 에이전트에게 주요 번들에서 찾을 수 있는 정확한 것을 제공합니다. 아래 네 부분 은 그 길 이 연결 되는 길 을 보여 준다.
네 개의 짧은 코드 조각
패키지에서 단순화 JavaScript,읽을 수 있는 변수 이름. 관련 없는 멤버는 생략됩니다.
-
페이지에 노출된
탭 _브라우저 _보기/preload.js ·회원const clipboardApi = { write: invokerInMain("notion:clipboard:write") }; // Included in the API exposed through contextBridge: // window.__electronApi.clipboard이 멤버는 채널 이름을 제공합니다. 의 구현
invokerInMain요청이 페이지의 프로세스를 종료하는 방법을 알려줍니다. -
사전 로드의 래퍼 해결
탭 _브라우저 _보기/preload.js ·아이피 도우미function invokerInMain(channel) { return (...args) => invokeInMainAndReturnResult(channel, ...args); } function invokeInMainAndReturnResult(channel, ...args) { return ipcRenderer.invoke(channel, ...args); }반환된 함수는 인수를 Electron요청 및 응답 우리는 지금 찾을 수 있습니다
notion:clipboard:write메인 프로세스 측면에서. -
수신기가 등록되는 방법 확인
주요/index.js *핸들러 도우미const handleRequestFromRenderer = { addListener(channel, handler) { ipcMain.handle(channel, handler); } };주요 프로세스는 다른 래퍼를 사용합니다. 그것의
addListener메소드는ipcMain.handle해당 채널의 수신기. -
쓰기 및 보낸 사람 확인 찾기
주요/index.js *클립 보드 수신기handleRequestFromRenderer.addListener( "notion:clipboard:write", (event, data) => isNotionWebContents(event.sender) ? clipboard.write(data) : undefined );이 목적지입니다. 보낸 사람을 확인한 후 처리기는 제공된 데이터를 Electron클립보드입니다. 채널과 두 개의 해결된 래퍼는 노출된 메서드를 이 호출에 연결합니다.
복사 된 블록은 어떻게 구조를 유지합니까?
Notion의 웹 편집기는 텍스트를 전송합니다. electronApi.clipboard.write. 그것은 로컬 블록 데이터를 유지하고 그들을 연결하기 위해 복사 한에 아이디를 넣습니다.
저장된 블록 데이터에 대한 링크
text: "Project notes"
html: "<p>Project notes</p>"
+ "<!-- notionvc: <copy-id> -->"
id: <copy-id>
mimeTypes:
text/_notion-blocks-v3-production
→ structured block data
- 읽기
- 동일한 로컬 아이디 찾기
- 복원Notion블록 데이터
붙여넣기, Notion 저장한 사본에 대하여 검사한다. 일치하는 신분증은 블록 데이터를 복원합니다.
2026 년 7 월 13 일에 캐시된 웹 자산에서 기록된 클립보드 형식.
더 많은 예와 출처
또 다른 예:마크 다운 테이블
Notion 마크다운을 블록 데이터로 구문 분석합니다. 이 예제에서는 테이블이 머리글 및 데이터 행이 되는 방법을 보여 줍니다.
테이블을 통해Notion's Markdown parser
| A | B |
| - | - |
| 1 | 2 |
table · headerRow: true
table_row
cells: ["A"], ["B"]
table_row
cells: ["1"], ["2"]
다른 경로:오프라인 스카이라이트 연결
Notion렌더러 요청 getSqliteMeta 2018 년 11 월 기본 프로세스는 메시지 채널을 생성하고 한 포트를 렌더러에 제공하고 다른 포트를 렌더러 유틸리티 프로세스에 제공합니다. 후속 문 배치 및 결과는 해당 포트를 통해 이동합니다.
이 핸드오프에 따라 데이터베이스 작업이 실행되는 위치와 초기 요청만 추적하면 나중에 대화가 누락되는 이유를 설명합니다.
출처 및 발췌문 읽기 방법
클립보드 브리지는 Notion 데스크톱 7.6.1 의 app.asar:탭 사전로드 및 main/index.js. 발췌는 축소 된 변수 이름을 확장하고 관련이없는 코드를 생략;발신자 검사 도우미는 기본과 함께 표시됩니다 isNotionWebContents 함수 호출.
가상 클립보드 및 마크다운 예는 모듈을 포함하여 2026 년 7 월 13 일에 캐시된 웹 자산에서 가져온 것입니다 747001, 58169, 736810 그리고 422457. 이러한 자산에는 자체 버전이 있습니다. 저장된 프로브는 추출된 모듈과 작은 하네스를 실행했습니다.
그 REA 여기에 표시된 결과는 저장된 탭 사전로드에 대한 집중 분석이며 게시된 탭과 함께 기록됩니다. REA 4.1.0 패키지. 이 작업을 수행하려면 다음을 수행하십시오. 클립보드 멤버와 일치하는 수신기는 패키지에서 래퍼 구현을 읽음으로써 연결됩니다.
마크다운 예제는 파서 모듈을 사용합니다 422457. 저장된 모듈 테스트는 페이지 필터와 채팅 필터 모두 이 테이블을 유지한다는 것을 보여줍니다. 붙여넣기/가져오기,구조화된 마크다운 및 인공지능/채팅 파서는 별도의 진입점과 중간 형식을 가지고 있습니다.
- JavaScript 신청 가이드작은 따라 Electron 응용 프로그램의 내보내기 기능.
- DX-Ball 재건기본 지침에 따라 체크 된 C 기능.