{"id":19494747,"url":"https://github.com/ceejbot/nuc2not","last_synced_at":"2026-04-19T01:03:21.618Z","repository":{"id":246987857,"uuid":"817077058","full_name":"ceejbot/nuc2not","owner":"ceejbot","description":"Migrate a Nuclino workspace to a Notion page.","archived":false,"fork":false,"pushed_at":"2025-01-08T19:29:12.000Z","size":307,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"latest","last_synced_at":"2025-02-24T03:56:39.549Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceejbot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2024-06-19T01:21:59.000Z","updated_at":"2025-01-08T19:29:14.000Z","dependencies_parsed_at":"2024-07-06T03:15:24.488Z","dependency_job_id":"285784d7-2ae9-4bb8-916f-a97e77735f98","html_url":"https://github.com/ceejbot/nuc2not","commit_stats":null,"previous_names":["ceejbot/nuc2not"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Fnuc2not","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Fnuc2not/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Fnuc2not/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Fnuc2not/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceejbot","download_url":"https://codeload.github.com/ceejbot/nuc2not/tar.gz/refs/heads/latest","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240740207,"owners_count":19849908,"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":[],"created_at":"2024-11-10T21:32:49.329Z","updated_at":"2026-04-19T01:03:21.553Z","avatar_url":"https://github.com/ceejbot.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nuc2Not\n\n[![Tests](https://github.com/ceejbot/nuc2not/actions/workflows/test.yaml/badge.svg)](https://github.com/ceejbot/nuc2not/actions/workflows/test.yaml)\n\nThis is a command-line tool that migrates Nuclino wiki pages to Notion pages.\n\nThe tool does not fully migrate content to Notion because of missing functionality in the Notion API. Specifically, you can't upload images or file downloads via its public API. This tool definitely succeeds in making a local backup of Nuclino wiki pages with metadata and media, but it's reduced to prompting you to upload media by hand.\n\n## Migrating a workspace\n\nYou'll need to do some steps in both Nuclino and Notion to set yourself up to use their APIs.\n\n1. Install the [fzf](https://github.com/junegunn/fzf) fuzzy finder. On MacOS, I do this with homebrew.\n2. Make a Nuclino API key. Provide this key to your environment any way you like as `NUCLINO_API_KEY`. `nuc2not` reads a `.env` file if one is in the directory it's run in.\n3. Create a Notion integration. Provide its secret to your environment any way you like as `NOTION_API_KEY`.\n4. In Notion, choose a root page where you want your imported pages to start out. (You can move them later.) In the top right of the Notion window, choose the three-dots menu and connect the root page to your new integration.\n5. Use the `share` button to get the link of your chosen root page. The hexadecimal string at the end of the URL is the page id. Make a note of this; you'll need to provide it to the tool for all migration actions.\n6. Run this tool to create a cache of the workspace or workspaces you want to migrate.\n7. Now migrate some or all of the pages in that cache to Notion.\n\nYou must cache pages before trying to migrate them. This is a design choice. My goal was to back up our Nuclino wiki and all its meta data just to have it around, then decide what to do with it.\n\n```text\nnuc2not cache # fill the cache for a workspace\nnuc2not migrate-workspace \u003cnotion-parent-id\u003e # migrate a entire cached workspace\nnuc2not migrate-page -p \u003cparent-id\u003e \u003cpage-id\u003e \u003cpage-id\u003e # migrate a few pages\n```\n\n## Usage\n\nEach subcommand has more detailed help.\n\n```text\nUsage: nuc2not [OPTIONS] \u003cCOMMAND\u003e\n\nCommands:\n  cache              Cache a Nuclino workspace locally. You'll be prompted to select the workspace\n  inspect-cache      Inspect your local cache, listing pages by id\n  migrate-page       Migrate a single page by id. If the page has media, you'll be prompted to\n                     upload the media by hand: the Notion API does not have endpoints for doing\n                     this automatically\n  migrate-workspace  Migrate a previously-cached Nuclino workspace to Notion. Unreliable!!\n  help               Print this message or the help of the given subcommand(s)\n\nOptions:\n  -w, --wait \u003cWAIT\u003e  How many milliseconds to wait between Nuclino requests [default: 750]\n  -h, --help         Print help\n  -V, --version      Print version\n  ```\n\n## TODO list\n\nHere are some features I'm contemplating implementing.\n\n- [ ] Updating migrated Nuclino pages with links to their Notion versions. Should be easy.\n- [ ] Doing something to connect migrated pages with author information, even if I can't set a page's author directly when creating a page. Less easy than the link-back, because it involves constructing Notion block content, but still not hard.\n- [ ] Doing something smarter than just blanket waits between requests to avoid hitting rate limits. In particular, a page with lots of deep nested lists that force lots of repeated append calls can take a long time to create, even when it's not a lot of content in word count.\n\n## LICENSE\n\nThis code is licensed via [the Parity Public License.](https://paritylicense.com) This license requires people who build on top of this source code to share their work with the community, too. See the license text for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceejbot%2Fnuc2not","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceejbot%2Fnuc2not","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceejbot%2Fnuc2not/lists"}