Sync pages from Notion to GitHub to be used as a static website (JAM)
Sync pages from Notion to GitHub to be used as a static website (JAM)
Create a new Notion Integration
Add Notion secret to GitHub repository
Go to github.com/{user}/{repo}/settings/secrets/actions
Set NOTION_SECRET
of Notion to your repository secret.
Share the Database with the integration
Create a workflow in .github/workflows/**.yml
of your repository
# This is a basic workflow to help you get started with Actions
name: NotionJAM
# Controls when the workflow will run
on:
schedule:
- cron: "0 21 * * *" # daily
push:
branches: [master, main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: notion-jam
uses: victornpb/[email protected]
with:
NOTION_SECRET: ${{ secrets.NOTION_SECRET }}
NOTION_DATABASE: https://www.notion.so/9e34cee9f5bd4c4aaf0d2eaf73ead47b
FILTER_PROP: Status
FILTER_VALUES: Published
CONVERT_PROP_CASE: snake
ARTICLE_PATH: content/posts/{title}/README.md
ASSETS_PATH: ./
PARALLEL_PAGES: 25
PARALLEL_DOWNLOADS_PER_PAGE: 3
DOWNLOAD_IMAGE_TIMEOUT: 30
SKIP_DOWNLOADED_IMAGES: true
DOWNLOAD_FRONTMATTER_IMAGES: true
- name: Save changes
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Commit changes
Name | Description | Required | Default |
---|---|---|---|
NOTION_SECRET | Notion API Token secret | ||
NOTION_DATABASE | Notion Database URL or ID (example: https://notion.so/00112233445566778899aabbccddeeff) | ||
FILTER_PROP | Property on the database used to query pages | Status | |
FILTER_VALUES | Return pages with the FILTER_PROP is equal this list of values | Ready,Published | |
CONVERT_PROP_CASE | Convert the database property names before adding to the frontmatter (camel,pascal,kebab,snake,none) | snake | |
ARTICLE_PATH | Path template to where to save markdown files | posts/{title}/README.md | |
ASSETS_PATH | Path to save images, if started with . will be relative to ARTICLE_PATH, otherwise absolute | ./ | |
PARALLEL_PAGES | Fetch this amount of pages in parallel | 25 | |
PARALLEL_DOWNLOADS_PER_PAGE | Number of images to download in parallel for each page | 3 | |
DOWNLOAD_IMAGE_TIMEOUT | Timeout in seconds for each image download | 30 | |
SKIP_DOWNLOADED_IMAGES | Skip downloading images if they already exist in the path | true | |
DOWNLOAD_FRONTMATTER_IMAGES | Downloads image urls in the frontmatter | true |