{"id":13907794,"url":"https://github.com/zhuochun/notion-toolset","last_synced_at":"2026-04-11T06:09:31.211Z","repository":{"id":42111177,"uuid":"489564794","full_name":"zhuochun/notion-toolset","owner":"zhuochun","description":"🔩 A set of Notion automation tools using the Notion API","archived":false,"fork":false,"pushed_at":"2025-04-13T17:16:24.000Z","size":99,"stargazers_count":34,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T18:31:12.843Z","etag":null,"topics":["notion","notion-ai","notion-api","notion-automation","notion-integrations"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhuochun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"zhuochun","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-05-07T04:11:22.000Z","updated_at":"2025-04-13T17:16:27.000Z","dependencies_parsed_at":"2024-04-11T17:56:09.623Z","dependency_job_id":"7ee0d06a-b1c5-4c3d-85f6-7743865b6856","html_url":"https://github.com/zhuochun/notion-toolset","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuochun%2Fnotion-toolset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuochun%2Fnotion-toolset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuochun%2Fnotion-toolset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhuochun%2Fnotion-toolset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhuochun","download_url":"https://codeload.github.com/zhuochun/notion-toolset/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248783149,"owners_count":21160874,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["notion","notion-ai","notion-api","notion-automation","notion-integrations"],"created_at":"2024-08-06T23:02:10.812Z","updated_at":"2026-04-11T06:09:31.204Z","avatar_url":"https://github.com/zhuochun.png","language":"Go","funding_links":["https://github.com/sponsors/zhuochun"],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# Notion Toolset\n\nAutomate recurring Notion workflows with a small command-line tool.\n\n`notion-toolset` connects to the Notion API, reads a YAML config, and runs one focused workflow at a time. Most users should start with a released binary and either run it locally or from GitLab CI.\n\n## Features\n\n- Daily journal creation\n- Weekly journal creation\n- Duplicate page detection\n- Flashback resurfacing for older pages\n- Page collection into a destination block\n- Markdown export and backup of database pages\n- LLM-driven summarization or prompt execution on page content\n\n## Setup Flow\n\nChoose one of these:\n\n1. Local run first\n2. GitLab CI first\n\nIn both cases you need the same Notion setup:\n\n1. Create a Notion integration by following the [official guide](https://developers.notion.com/docs/getting-started).\n2. Copy the integration token.\n3. Share the target Notion databases and pages with that integration.\n\nIf the integration cannot see a database or page, the command will fail.\n\n## Local Run\n\nThis is the fastest way to get a workspace running.\n\n1. Create an empty folder for your automation files.\n2. Download the correct binary for your machine from the GitHub Releases page.\n3. Create a `configs/` folder.\n4. Copy one of the example configs from `example/configs/` into your own `configs/` folder.\n5. Edit the config with your real Notion IDs.\n6. Set `NOTION_TOKEN` in your shell.\n7. Run the binary with `--cmd` and `--config`.\n\nPowerShell example:\n\n```powershell\n$env:NOTION_TOKEN=\"your-secret-token\"\n.\\notion-toolset.exe --cmd=daily-journal --config=.\\configs\\journal-daily.yaml\n```\n\nmacOS/Linux example:\n\n```bash\nexport NOTION_TOKEN=\"your-secret-token\"\n./notion-toolset --cmd=daily-journal --config=./configs/journal-daily.yaml\n```\n\n## GitLab CI Run\n\nIf you want the job to run on a schedule, start with a small GitLab repository that contains only your config files and CI definition.\n\nRecommended folder structure:\n\n```text\nyour-notion-automation/\n  .gitlab-ci.yml\n  configs/\n    journal-daily.yaml\n```\n\nSetup steps:\n\n1. Create an empty GitLab repository.\n2. Copy a config example from `example/configs/` into `configs/`.\n3. Copy [`example/gitlab-ci.yml`](example/gitlab-ci.yml) into your repo as `.gitlab-ci.yml`.\n4. Update the config path, command, and release version in `.gitlab-ci.yml`.\n5. Add `NOTION_TOKEN` in GitLab under `Settings` \u003e `CI/CD` \u003e `Variables`.\n6. Run the pipeline manually once, then add a schedule if needed.\n\nThe GitLab example downloads a released Linux binary, so the CI job does not need Go installed.\n\n## Config Examples\n\nUse the example that matches the feature you want:\n\n- `example/configs/journal-daily.yaml`\n- `example/configs/journal-weekly.yaml`\n- `example/configs/duplicate.yaml`\n- `example/configs/flashback.yaml`\n- `example/configs/collector.yaml`\n- `example/configs/export.yaml`\n- `example/configs/llm-summary.yml`\n- `example/configs/llm-summary-json.yml`\n- `example/configs/llm-flashback.yaml`\n\nCommon values you will need to replace:\n\n- `databaseID`\n- destination page or block IDs such as `duplicateDumpID` or `collectDumpID`\n- query JSON blocks\n- output directory for exports\n- prompt text for `llm`\n\nIf you need a Notion ID, copy it from the page or database URL. The tool expects the 32-character Notion ID.\n\n## Commands\n\nEach run uses one command plus one config file.\n\n- `daily-journal`\n- `weekly-journal`\n- `duplicate`\n- `flashback`\n- `collector`\n- `export`\n- `llm`\n\nExample:\n\n```bash\n./notion-toolset --cmd=export --config=./configs/export.yaml\n```\n\n## Troubleshooting\n\n- Empty or unauthorized results usually mean the integration was not shared to the target database or page.\n- Startup failures usually mean `NOTION_TOKEN` is missing.\n- Export failures can happen when the output directory in the config does not exist yet.\n- YAML errors usually mean indentation or quoting is wrong in the config file.\n\n## Development\n\nContributor setup, source builds, and release workflow details are documented in [`DEVELOPMENT.md`](DEVELOPMENT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhuochun%2Fnotion-toolset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhuochun%2Fnotion-toolset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhuochun%2Fnotion-toolset/lists"}