
노션에 AI를 붙여놓으면 어디까지 할까?
요약
본 영상은 Notion의 프로그래밍 가능성 향상과 AI 에이전트 활용에 대해 다룹니다. 과거에는 복잡한 서버 구축이 필요했지만, 이제 Notion이 'Worker'라는 기능을 도입하여 사용자가 코드를 작성하고 단일 명령으로 배포할 수 있게 되었습니다. 이를 통해 외부 인프라 없이도 데이터 동기화 및 AI 에이전트 로직 구현이 용이해졌습니다.
핵심 포인트
- Notion에 AI를 붙여 자동화된 에이전트를 구축하는 방법을 소개합니다.
- 새로운 'Worker' 기능은 코드를 작성하고 Notion 서버에서 배포/호스팅하게 합니다.
- 복잡한 서버, 크론 작업 없이도 데이터 동기화 및 로직 구현이 가능해졌습니다.
- Notion의 내장 커넥터 외에 직접 TypeScript로 도구를 만들어 에이전트에 연결할 수 있습니다.
Video: 노션에 AI를 붙여놓으면 어디까지 할까?
Channel: 노마드 코더 Nomad Coders
Duration: 10m 29s
Source: subtitle (auto, ko)
Transcript:
어젯밤에 제 유튜브 채널에 새 직원을 채용했습니다 . 사람이 아니라 인공지능 에이전트입니다. 이 앱은 제가 만든 모든 영상의 조회수, 좋아요, 댓글 수를 추적하며, 매시간 업데이트됩니다 . 내 숫자를 나보다 더 잘 알고 있어 . 심지어 다음에 어떤 영상을 만들어야 할지도 알려줍니다. 그것은 절대 잠들지 않으며, 당신이 전혀 예상하지 못할 곳, 바로 [음악] 노션 안에 살고 있습니다. 당신이 보고 있지 않는 사이에 Notion이 프로그래밍 가능해졌기 때문입니다. 다른 사람들이 모두 터미널에서 상담원 시연을 하는 동안 , 저는 사무실에서 일하고 있습니다. 제가 무슨 말인지 보여드리겠습니다. 지금 제 Notion 계정입니다. 제 채널의 모든 영상 , 조회수, [음악] 좋아요, 댓글 수는 매시간 자동으로 업데이트됩니다. CSV 파일을 불러오지 않았습니다. 저는 이 용도로 서버를 운영하고 있지 않습니다 . cron 작업도 없고, 제 컴퓨터에는 아무것도 설정되어 있지 않습니다. Notion에서 실행해주는 TypeScript 파일은 하나뿐입니다 .
그리고 여기 담당자가 있습니다. 저는 그 영상에 딱 한 가지 질문을 던졌습니다. " 다음 영상은 어떤 내용으로 하면 좋을까요?" 내 통계를 읽고, 내가 만든 도구를 호출하고, 여러분이 내 댓글에서 요청했던 내용을 읽어서 답을 알려줬어요. 오늘은 동기화, 도구, 에이전트 등 이 모든 것을 구축하는 방법을 보여드리겠습니다. 파일 하나, 타입스크립트, 그리고 인프라 구축은 필요 없습니다. 그리고 마지막에는 여러분이 중요하게 생각하는 모든 데이터에 대해 이 작업을 수행할 수 있게 될 것입니다 . 은행, 피트니스 트래커, 생산 데이터베이스. 갑시다 . 먼저 고백부터 하겠습니다. Notion은 수년 전부터 API를 제공해 왔습니다. 당신은 언제든 책을 읽을 수도 있고, 언제든 책을 쓸 수도 있습니다. 그러니까, 데이터를 노션에 동기화하는 것은 기술적으로 항상 가능했던 겁니다. 그리고 실제로 그렇게 한 사람은 거의 없었습니다 . 실제 동기화는 단순히 API 호출 한 번으로 이루어지는 것이 아니기 때문입니다. 진정한 동기화를 위해서는 서버, 크론 작업, 속도 제한 처리, 재시도, 동일한 항목을 두 번 가져오지 않도록 하는 상태 추적, 그리고 연결 코드가 필요합니다.
접착 코드가 너무 많네요. 그렇게 모든 준비를 마친 후에도 결국에는 행사를 주최해야 했습니다. 그리고 그것이 달라진 점입니다. Notion이 새로운 기본 요소를 만들었습니다. 그들은 그것을 노동자라고 부릅니다. 워커는 작은 TypeScript 프로그램입니다. 작성하고 단 하나의 명령으로 배포할 수 있습니다. Notion은 이를 호스팅하고, 실행하고, 예약하고, 모니터링합니다 . 속도 제한, 인증, 예약, 업데이트, 로그 등 동기화 과정에서 이전에는 사용자가 직접 처리해야 했던 번거로운 작업들이 이제는 플랫폼 기능으로 제공됩니다. 그리고 이야기의 후반부에는 세관 직원들에 관한 흥미로운 내용이 있습니다. 노션은 몇 달 전에 이 기능을 출시했고, 사람들이 백만 개 이상의 템플릿을 만들었습니다 . 코드는 필요 없지만 해당 에이전트에는 제한이 있습니다. 그들의 손발은 묶여 있었다. 요원은 이미 존재하는 도구만 사용할 수 있었습니다 . Notion에는 Slack, Figma, Linear와 같은 내장 커넥터가 있습니다.
하지만 문제는 여기에 있습니다. 에이전트가 로직을 실행하도록 하려면 직접 HTTP 서버를 호스팅해야 했습니다. 서버. [음악] 다시 말하지만, 내부 관리자 패널, 이상한 기존 시스템, 개인 프로젝트, 회사 백엔드는 접근 금지였습니다. 직원들이 그 문제를 해결합니다. 직접 TypeScript로 도구를 작성합니다 . Notion 서버에 배포한 다음 에이전트에 바로 전달하면 됩니다 . 이게 바로 제안 내용입니다. Notion에 데이터를 입력하거나 에이전트용 도구를 사용하세요. 오늘은 제 유튜브 채널을 위해 두 가지를 모두 만들어 볼 거예요 . 자, 여기 건축 구조가 있습니다. 먼저 데이터가 유입됩니다. 매시간 Notion 내에서 제 작업자가 깨어나 YouTube API를 호출하고 데이터베이스를 채웁니다. 그게 바로 동기화입니다. 둘째로, 제 에이전트가 연락을 해왔습니다 . 새로운 댓글이 필요할 때 , 내 코드를 호출하고 내 코드는 유튜브 라이브를 호출합니다. 그리고 그 코드는 제 노트북에 없습니다. Notion 내부에 제 에이전트 바로 옆에 배포되어 있습니다.
그것이 바로 도구입니다. 그리고 둘 다 같은 파일에 저장되어 있습니다. 제 노트북이 꺼져 있어도 대시 보드는 계속 업데이트됩니다. 설정해 봅시다 . Notion에 새로운 CLI가 출시되었습니다. NTN이라고 합니다. NTN 로그인을 하면 터미널이 내 작업 공간에 한 번 연결됩니다. 그런 다음 새로운 작업자 프로젝트를 위한 기반을 마련합니다. NTN workers에서 TypeScript 프로젝트를 새로 제공했습니다 . 그리고 이 프로젝트 전체에서 중요한 파일은 오직 index.ts 하나뿐입니다. 파일 하나당 담당자 한 명. 그리고 거기에 기능을 등록합니다. 동기화 도구, 원한다면 웹훅까지도 가능합니다. 이 프레임워크에는 AI 프롬프트와 스킬이 내장되어 있습니다 . 문서에서는 기본적으로 코딩 에이전트가 이 코드를 작성해 줄 것이라고 가정합니다. 우리는 그렇게 하지 않을 거예요 . 우리는 그렇게 하지 않을 거예요. 우리는 그것이 어떻게 작동하는지 이해하기 위해 모든 줄을 읽어볼 것입니다. 동기화를 구축해 봅시다. 첫 번째 단계는 코드에서 데이터베이스를 선언하는 것입니다.
이것을 자세히 살펴보세요. 이것은 TypeScript로 작성된 Notion 데이터베이스입니다. 저는 Notion을 전혀 열지 않아요. 저는 새 데이터베이스를 클릭하는 일이 절대 없습니다 . 제가 설명하면 Notion이 그것을 만들어 줍니다. 여기 있는 각 속성은 열이 됩니다. 그리고 이름과 영상 ID에 공백이 있고 대문자로 되어 있는 것을 확인하세요. 이것들은 문자열이지 변수 이름이 아니기 때문입니다. 이것들은 사람이 읽게 될 열 제목입니다. 이제 데이터베이스에서 가장 중요한 줄, 즉 키 속성에 대해 살펴보겠습니다. 이는 Notion에게 어떤 열이 행을 고유하게 만드는지 알려줍니다. 동기화 시 이미 존재하는 비디오 ID를 가진 비디오를 전송하면 Notion은 해당 행을 업데이트합니다. Notion은 존재하지 않는 비디오 ID를 전송하면 해당 ID를 생성합니다. 이 한 줄 때문에 매시간 동기화를 실행하면 수백 개의 중복 항목을 생성하는 대신 수백 개의 [음악] 행이 업데이트됩니다. 다음으로 넘어가기 전에 한 가지 말씀드리겠습니다.
이것들은 스키마 함수입니다. 각각은 실제 Notion 열 유형에 매핑됩니다. 스키마 제목은 제목 열입니다. 모든 데이터베이스에는 정확히 하나씩 있습니다. 스키마 번호는 숫자 열이 됩니다. 스키마 날짜, 날짜 열. 스키마 URL은 클릭 가능한 링크입니다. 그래서 이 객체는 그렇게 추상적인 설정은 아닙니다. 제 데이터베이스 유형의 열입니다 . 두 번째 단계는 동기화 자체입니다. 이게 전체 내용입니다. 당황하지 말 것. 각 부분을 하나씩 자세히 살펴보겠습니다. Worker.that.sync는 내 워커에 동기화를 등록 하고 이름을 지정합니다. 그다음, 1단계에서 사용한 변수와 동일한 변수를 사용하여 데이터베이스, 비디오에 연결합니다. 그리고 모드 교체는 이 동기화가 테이블을 소유한다는 것을 의미합니다. 그럼, 매시간 일정이 나옵니다. 이 문자열 하나로 전체 설정을 대체할 수 있습니다. crontab도 없고 예약 서비스도 없습니다. 이제 실행 함수를 살펴보겠습니다. 여기서 데이터를 가져옵니다. 여기서는 그냥 유튜브에 전화해서 내 영상들을 받고 통계를 확인하면 돼요.
일반적인 데이터 가져오기 코드이며, 아직 Notion 관련 코드는 없습니다. 단 한 가지 작은 문제, 바로 리미터를 제외하면 말이죠. 파일 맨 위를 보세요. 이것이 바로 그것의 기원입니다 . Worker.that.pacer는 Notion의 또 다른 기본 요소입니다. 데이터베이스와 마찬가지입니다. 이름과 사용률 제한을 설정하면 됩니다. 제 기기는 초당 최대 5개의 요청만 허용한다고 되어 있습니다. 자 , 그렇다면 이게 왜 필요할까요? [음악] 스케줄은 동기화가 시작되는 빈도를 제어합니다 . 하지만 일단 실행되면 제 함수는 유튜브가 화를 낼 정도로 빠른 속도로 많은 요청을 보낼 수 있습니다. 그래서 저는 매번 제한 장치가 작동하기를 기다립니다. 만약 실행 속도가 너무 빠르면, 해당 코드가 안전한 시점까지 코드 실행을 일시 중지합니다 . 저는 논리 부분을 작성하지 않습니다. 제한값을 설정하면 Notion이 이를 적용합니다 . 엄격한 API에서 많은 양의 데이터를 동기화할 때 매우 유용합니다 . 자, 이제 정말 놀라웠던 부분, 바로 귀환입니다.
내 함수는 Notion에 직접 쓰지 않습니다 . 삽입, 업데이트, 노션 API 호출 등 어떤 작업도 전혀 이루어지지 않고 있습니다. 변경 사항을 설명하고 변경 사항 목록을 반환합니다 . 각 변경 사항은 업서트이며 키는 비디오 ID, 즉 기본 키입니다. 그다음은 속성으로, 왼쪽에 열 이름이, 오른쪽에 값이 표시됩니다. 빌더 함수는 셀에 올바른 데이터 형식을 채워 넣습니다. 스키마는 열을 정의하고 , 빌더는 셀을 채웁니다. 이 객체를 반환하면 Notion이 데이터베이스를 업데이트합니다 . 그게 전부입니다. 그리고 바로 이 작은 게 제가 제일 좋아하는 거예요. Notion 데이터베이스의 모든 행은 페이지이기도 합니다. 그래서 각 페이지 표지를 해당 영상의 썸네일 이미지로 설정했습니다. 그리고 마지막으로 , 페이지 매김에 대해서 말씀드리겠습니다. 저는 수백 개의 동영상을 가지고 있습니다. 한 번 실행하면 50개가 가져와집니다. 따라서, 저는 더 많은 true 값과 다음 페이지 토큰이 포함된 다음 상태를 반환합니다. Notion은 이를 감지하고 즉시 해당 함수를 다시 호출하고, 또 다시 호출하고 , 필요한 만큼 여러 번 호출합니다.
이제 왜 리미터가 필요한지 아시겠죠? 1,000페이지는 Notion이 처리할 수 있는 최대 속도로 1,000건의 통화를 의미합니다 . 제한 기능 덕분에 유튜브가 저를 차단하지 못하는 겁니다. 다음 상태는 상태 매개변수인 [음악]에 다시 나타납니다 . 각 실행은 has more가 false가 될 때까지 다음 페이지 토큰을 다음 실행으로 전달합니다 . 자, 그럼 API 키에 대해 이야기해 볼까요? 제 YouTube API 키는 .env 파일에 있습니다. 로컬 환경에서 제 코드는 거기에서 파일을 읽어옵니다. 하지만 현장에 파견된 작업자에게도 그것이 필요합니다. n개의 TM 워커에 .env 파일을 푸시하면 로컬 .env 파일이 배포된 워커로 바로 전송됩니다. Notion에 저장되어 [음악] 실행 시점에 주입됩니다 . 자, 배포하기 전에 테스트부터 해봅시다. dash dash preview 플래그는 동기화를 실행하고 아무것도 쓰지 않고도 어떤 내용이 기록될지 보여줍니다. 자, 여기 제 영상과 제 번호들이 업서트 형태로 있습니다.
맞는 것 같네요. 음악을 보내세요. n TM 워커는 내 코드를 번들로 배포하고, 업로드하고 , 실행을 시작합니다. 자, 이제 Notion을 열어보세요 . 자, 여기 제가 지금까지 만든 모든 영상이 데이터베이스의 행으로 저장되어 있습니다. 자, 보세요. 제가 갤러리 보기로 전환했는데 , 표지에 나온 그 문구 기억하시죠? 각 카드에는 동영상의 썸네일이 표시됩니다. 제 채널 전체가 커버곡 영상으로 가득 차 있고, 그 아래에 라이브 영상이 깔려 있는 구조입니다. 서버도 없고, cron도 없고, 연결 코드도 필요 없습니다. 타입스크립트 파일 하나와 배포 명령어 하나. 그리고 1시간 후에 자동으로 새로 고쳐집니다. 네, 대시보드는 실시간으로 작동하지만, 대시보드는 현재 상황만 보여줄 수 있습니다 . 그 이유는 알 수 없습니다 . 이유는 댓글에 있습니다. 사람들이 좋아했던 음악, 이해하기 어려웠던 점, 그리고 계속해서 요구하는 음악까지 모두 댓글에 담겨 있습니다. 그리고 댓글은 동기화하기가 정말 어렵습니다. 그것들은 수천 개에 달합니다.
저는 그들이 제 데이터베이스에 있는 것을 원하지 않습니다. 저는 그것들을 월 단위로 받고 싶어요. 그건 도구를 써야 할 일이죠. 동일한 파일, 동일한 작업자, 동기화 바로 아래. worker.tool은 제 에이전트가 호출할 수 있는 함수입니다 . 설명은 AI가 내 도구를 호출할지 여부를 결정할 때 읽는 지침입니다. 모든 입력값에 대해 동일합니다. 각각의 항목은 에이전트에게 해당 필드에 무엇이 들어가야 하는지 알려줍니다 . 이 작은 힌트 도 중요합니다. 읽기 전용 힌트는 Notion에게 이 도구가 읽기만 한다는 것을 알려줍니다. 부작용 없음. 따라서 기본적으로 상담원은 매번 제 허락을 구할 필요 없이 자유롭게 전화를 걸 수 있습니다 . 실행 함수는 일반 코드와 같습니다. API를 사용하여 호출하고 댓글을 가져와서 반환합니다. 하지만 제가 반환하는 것은 텍스트 덩어리가 아니라 구조화된 JSON이라는 점에 주목해 주세요. 저자, 글, 그리고 좋아하는 것들. 상담원들은 단순히 결과를 읽는 데 그치지 않고 , 그 결과를 바탕으로 추론하기 때문입니다.
체계적인 환경을 제공하면 아이들은 더 똑똑해집니다. 자, 배포하기 전에 먼저 로컬에서 테스트해 봅시다 . 저는 클라우드플레어 동영상의 동영상 ID를 사용하여 해당 도구를 실행합니다. 저것 좀 보세요 . 터미널에 실제 댓글이 표시되었습니다 . 네, 잘 되네요. 다시 배포하세요. CLI는 심지어 무엇이 변경되었는지까지 알려줍니다. 동기화 한 번 과 새로운 도구 하나. 자, 이제 마지막으로 요원을 소개합니다. 사용자 지정 에이전트는 Notion 제품입니다. 누구나 만들 수 있습니다. 코딩이 아닌 클릭만으로 가능합니다. 새로운 상담원인 채널 분석가를 생성하고 지침을 입력합니다. 저는 이렇게 말합니다. "제 유튜브 채널을 분석해 보세요. 유튜브 대시보드 데이터베이스를 활용해서 성과 데이터를 확인하고, 시청자들이 무슨 말을 하는지 알고 싶을 땐 댓글 수집 도구를 사용하세요. 항상 결론을 수치로 뒷받침해야 합니다." 그런 다음 연결 메뉴에서 대시 보드 데이터베이스 와 제 작업자 [음악] 도구에 대한 수동 액세스 권한을 부여합니다 .
자, 이제 모든 것을 시험해 봅시다. "다음 영상은 어떤 내용으로 하면 좋을까요 ?" 그리고 그것이 어떻게 작용하는지 지켜보세요. 대시 보드를 조회하고, 조회수 순으로 정렬한 다음, 최근 동영상 중 실적이 좋은 동영상을 찾아 저희 도구를 호출합니다. 자, 바로 그거죠. Notion의 AI 내부에서 실행되는 TypeScript 코드입니다. 댓글을 가져와서 읽고 답글을 달아줍니다. 다음 영상에서는 [음악]에 대한 아이디어를 논리적 근거와 함께 제시하고, 수치와 실제 사용자들의 의견을 통해 뒷받침합니다 . 자, 그럼 정리해 봅시다. 제가 계속해서 되돌아보게 되는 것은 바로 이것입니다. Notion에서 이제 프로그래밍이 가능합니다. 수년 동안 Notion은 사람들이 여러 가지를 올려놓는 곳이었습니다. 이제 그곳은 건축물을 지을 수 있는 공간이 되었고, 그것이 그곳의 본질을 바꿔놓았습니다. 이것으로 무엇을 할 수 있을지 생각해 보세요. Stripe 결제를 동기화 하고 상담원에게 이탈 가능성이 높은 고객을 문의하세요 .
GitHub 이슈를 동기화 하고 담당자가 이슈를 닫을 수 있는 도구를 제공하세요 . 운동 기록, 은행 거래 내역, 독서 목록 등을 동기화하세요. API를 호출하면 정해진 일정에 따라 Notion으로 데이터를 가져올 수 있습니다. 그리고 여러분이 작성할 수 있는 모든 함수는 에이전트가 호출할 수 있습니다. 그리고 가장 좋은 점은 해답이 어디에 나타나는지입니다. 스크롤이 계속되는 터미널 화면도 아니고, 메모 옆 페이지도 아니고, 팀원들이 이미 작업하고 있는 곳도 아닙니다. Notion은 아직 끝나지 않았습니다. 그들에게 유리한 점이 하나 더 있습니다 . 현재 알파 버전이며, 대기자 명단에 등록해야 합니다. Notion 에이전트 SDK. [음악] 지금 제 에이전트는 Notion 안에 있어요. SDK는 그 순서를 뒤집습니다. API를 통해 자체 앱에서 Notion 에이전트를 호출할 수 있습니다 . 그러니까 우리가 방금 만든 유튜브 에이전트가 내 웹사이트 나 터미널에 나타날 수 있다는 거죠. 자, 댓글로 Notion의 프로그래밍 기능에 대해 어떻게 생각하시는지 알려주세요 !
설명란 의 링크를 클릭하여 지금 바로 개발자 플랫폼을 사용해 보세요 . 이 영상 제작을 후원해 주신 Notion에 감사드립니다. 다음 영상에서 뵙겠습니다. 다음 영상에서 만나요. 안녕.
AI 자동 생성 콘텐츠
본 콘텐츠는 YouTube 노마드 코더 (개발)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기