Jekyll로 개념 페이지 가져오기

5527 단어 jekyllnotion
최근에 저는 메모 작성, 할 일 목록, 그리고 지금은 블로그 게시물 작성에 Notion을 사용하기 시작했습니다. Notion을 사용하면 통합된 예쁜 인터페이스에서 모든 활동을 간단하게 결합할 수 있습니다. Jekyll, Github Pages 및 Github Actions를 사용하여 하루에 두 번 실행되는 Github 워크플로를 사용하여 Notion Blog 데이터베이스 게시물을 Jekyll로 가져올 수 있었습니다.

My Notion Blog database

노션 데이터베이스란?



Notion databases은 사용자 정의 가능한 속성과 여러 레이아웃이 있는 페이지 모음을 저장할 수 있는 스마트 테이블입니다. 강력한 스마트 스프레드시트라고 생각하세요.

배치



Jekyll은 게시물 제목, 날짜, 태그 및 기타 속성을 지정하기 위해 YAML 머리말을 사용합니다. Notion 데이터베이스 속성을 사용하여 Jekyll YAML 머리말을 간단한 Notion 데이터베이스로 매핑할 수 있습니다. 데이터베이스의 각 항목은 각각의 머리말 속성이 있는 Jekyll 게시물에 해당합니다. 스크립트는 게시물의 게시 날짜로 지정된 날짜를 사용하며, 항목 작성 날짜가 지정되지 않은 경우 기본적으로 항목 생성 날짜가 됩니다. 페이지를 게시하려면 "게시"확인란을 선택하기만 하면 됩니다.

스크립트



importer 스크립트를 작성하는 것은 Notion JavaScript SDKsouvikinator/notion-to-md 을 사용하여 산들바람이었습니다. SDK는 데이터베이스의 항목을 가져온 다음 변환기는 각 Notion 페이지를 Jekyll에서 사용할 준비가 된 Markdown으로 변환합니다.

스크립트를 사용하려면 먼저 블로그 페이지 데이터베이스에 액세스할 수 있는 새로운 Notion 통합을 생성해야 합니다. 설정으로 이동하여 통합을 선택하고 "자체 통합 개발"을 클릭한 다음 적절한 범위로 새 통합을 생성하십시오.



생성한 후에는 스크립트가 작동하도록 나중에 사용할 통합 키를 얻게 됩니다. 하지만 그 전에 새로 만든 통합 봇을 사용하려는 데이터베이스가 있는 Notion 페이지에 초대해야 합니다. 데이터베이스 페이지에서 "공유"버튼을 클릭하고 방금 생성한 통합을 초대하기만 하면 됩니다. 통합을 생성할 때 지정한 것과 동일한 이름을 갖게 됩니다.

스크립트가 작동하는 방식은 다음과 같습니다.

// Create a Notion client from an environment variable
const notion = new Client({
    auth: process.env.NOTION_TOKEN,
});

// Query the database and filter out unpublished entries
const response = await notion.databases.query({
        database_id: process.env.DATABASE_ID,
        filter: {
            property: "Publish",
            checkbox: {
                equals: true
            }
        }
    })

// Iterate over the results
for (const r of response.results) {
  // build the post front matter
  // convert the page to markdown
  // write it to disk
}



여기에서는 2개의 환경 변수를 사용하여 Notion 통합 토큰과 데이터베이스 ID를 저장합니다. Notion 페이지 URL에서 데이터베이스 ID를 찾을 수 있습니다. https://www.notion.so/<database_id>?v=<long_hash>
임포터 스크립트here를 찾을 수 있습니다.

주기적으로 콘텐츠 가져오기



Github Actions를 사용하여 매시간 주기적으로 스크립트를 실행한 다음 Github Pages를 사용하여 콘텐츠를 게시하는 워크플로를 만들 수 있습니다. 이것은 귀하의 설정에 따라 다릅니다. 저에게는 편리함 때문에 Github Pages에서 내 웹 사이트를 호스팅하고 있습니다.

워크플로는 스크립트를 실행한 다음 모든 변경 사항을 리포지토리에 다시 커밋합니다. 그러면 Github Pages가 트리거되어 웹 사이트 배포를 생성하고 변경 사항을 게시합니다. 현재 사용 중인 workflow은 다음과 같습니다.

name: Jekyll importer

on:
  push:
  schedule:
    - cron: "0 */1 * * *"

jobs:
  importer:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@master

      - uses: actions/setup-node@v2
        with:
          node-version: "17"

      - run: npm install

      - run: node _scripts/notion-import.js
        env:
          NOTION_TOKEN: $
          DATABASE_ID: $

      - uses: stefanzweifel/git-auto-commit-action@v4
        env:
          GITHUB_TOKEN: $
        with:
          commit_message: Update Importer posts
          branch: master
          commit_user_name: importer-bot 🤖
          commit_user_email: [email protected]
          commit_author: importer-bot 🤖 <[email protected]>



여기에서는 매시간 워크플로를 실행하고 Github Secrets를 사용하여 Notion 토큰과 데이터베이스 ID를 저장한 다음 스크립트를 실행할 때 환경 변수로 사용합니다.

지금은 그게 다야! 계속해서 다음 게시물을 작성하십시오!

좋은 웹페이지 즐겨찾기