포트폴리오 사이트의 index 페이지인 AboutMe 페이지를 구현하는 프로세스는 다음과 같다.
노션 페이지에 내용을 작성하는 것을 완료한 후 해당 페이지에 노션 API를 연결하고, 페이지ID를 .env에 추가한다.
노션 페이지에 API를 연결하는 방법은 아래 포스팅에서 확인할 수 있다.
Notion API 연동 데모 서버 실행해보기 | Notion Integration 생성/등록/연동
Notion 공식문서에 있는 NotionAPI 연동 Demo 프로그램을 실행시켜보자. Notion API OverviewDiscover how to leverage Notion's Public API to build integrations.developers.notion.com 여러 데모가 있는데 그중 web-form-with-express 서
yooputer-devlog.tistory.com
노션 페이지 아이디는 .env에 추가한다. 노션 API 키도 추가되어 있어야 한다.
NOTION_TOKEN=<노션API 키>
NOTION_ABOUTME_PAGE_ID=<소개페이지 ID>
앞으로 노션 API를 호출하는 코드는 프로젝트/lib/notion.ts 파일에 작성할 예정이다.
해당 파일이 존재하지 않으면 새로 생성한다.
Notion API를 쉽게 사용할 수 있도록 도와주는 Client 객체를 생성한다.
import { Client } from '@notionhq/client';
export const notion = new Client({
auth: process.env.NOTION_TOKEN,
});
노션 페이지 내용을 마크다운으로 변환해주는 NotionToMarkdown 객체를 생성한다,
import { NotionToMarkdown } from 'notion-to-md';
const n2m = new NotionToMarkdown({ notionClient: notion });
getAboutMeContent 구현
소개 페이지의 내용을 마크다운으로 변환하여 반환하는 getAboutMeContent 함수를 구현한다.
export const getAboutMeContent = async (): Promise<{
markdown: string;
}> => {
const mdBlocks = await n2m.pageToMarkdown(process.env.NOTION_ABOUTME_PAGE_ID || '');
const { parent } = n2m.toMarkdownString(mdBlocks);
return {
markdown: parent,
};
};
이제 notion.ts의 getAboutMeContent을 import하여 소개페이지의 마크다운 문자열을 조회할 수 있다.
[Next.js] 동적 라우팅 페이지에 SSG 적용해서 페이지 로딩 속도 개선하기 (1) | 2025.07.16 |
---|---|
[개발자 포트폴리오 > Projects] 노션 데이터베이스 조회하기 | 화면 구현하기 (0) | 2025.06.11 |
[개발자 포트폴리오 > AboutMe] 목차 네비게이션 구현 | 마크다운 컴파일, withSlugs, withToc, withTocExport (0) | 2025.06.09 |
[개발자 포트폴리오 > AboutMe] 마크다운 화면에 뿌리기, word highlighting 적용 | MDXRemote, Tailwind (1) | 2025.06.05 |
[개발자 포트폴리오] 프로젝트 개요, 기술 스택 및 선정 이유, 핵심 기능 (2) | 2025.06.02 |