{"id":15017156,"url":"https://github.com/jaypyles/obsidian-to-bookstack","last_synced_at":"2025-07-30T02:05:45.463Z","repository":{"id":213738411,"uuid":"733736058","full_name":"jaypyles/obsidian-to-bookstack","owner":"jaypyles","description":"Download and upload changes between an Obsidian Vault and a Bookstack instance.","archived":false,"fork":false,"pushed_at":"2024-01-24T01:24:40.000Z","size":79,"stargazers_count":77,"open_issues_count":4,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-19T16:16:13.920Z","etag":null,"topics":["bookstack","obsidian","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/jaypyles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2023-12-20T02:22:33.000Z","updated_at":"2025-07-10T11:55:57.000Z","dependencies_parsed_at":"2025-04-12T11:52:15.934Z","dependency_job_id":null,"html_url":"https://github.com/jaypyles/obsidian-to-bookstack","commit_stats":null,"previous_names":["jaypyles/obsidian-to-bookstack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jaypyles/obsidian-to-bookstack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaypyles%2Fobsidian-to-bookstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaypyles%2Fobsidian-to-bookstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaypyles%2Fobsidian-to-bookstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaypyles%2Fobsidian-to-bookstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaypyles","download_url":"https://codeload.github.com/jaypyles/obsidian-to-bookstack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaypyles%2Fobsidian-to-bookstack/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267797332,"owners_count":24145703,"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","status":"online","status_checked_at":"2025-07-30T02:00:09.044Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bookstack","obsidian","python"],"created_at":"2024-09-24T19:49:58.244Z","updated_at":"2025-07-30T02:05:45.428Z","avatar_url":"https://github.com/jaypyles.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Summary\n\nDownload remote files from Bookstack instance, that you may not have, along with sending any changes to the remote.\nAfter configuration, consider installing the companion plugin at https://github.com/jaypyles/ObsidianToBookstackPlugin.\n\n# 🆕 What's New\n\n- All commands will now also be available to use with chapters. This means that\n  a structure like this is now allowed:\n\n```\n- Shelf/\n-- Book/\n--- Chapter/\n---- Note.md\n--- Note.md\n```\n\n# Installing\n\nRun with `pipx install .` inside the project to install to your machine.\n\n# Config\n\nYou can use a `.env` file for the following secrets:\n\n`BOOKSTACK_BASE_URL=\"https://demo.bookstack.com\"`\n\n`BOOKSTACK_TOKEN_ID=\u003cyour_bookstack_api_token_id\u003e`\n\n`BOOKSTACK_TOKEN_SECRET=\u003cyour_bookstack_api_token_secret\u003e`\n\nor you may choose to use whatever secret manager you want, like Doppler, so long as it sets those environment variables.\nBy default, the tool will look for `.env` in the root of the project, but can be set anywhere using the `--env` flag.\n\nConfiguration by default is located at `~/.config/obsidian_to_bookstack/conf.toml` but can also be set anywhere using the `--config` flag.\n\nThe format of the configuration file is as follows:\n\n```toml\n[wiki]\npath = \"/home/user/notes/\"\n\n[wiki.excluded]\nshelves = [\"private\"]\n```\n\nAny shelves in `wiki.excluded.shelves` will not be uploaded to Bookstack.\n\n## Configuring CLI Options\n\n- **Verbose Mode**\n\n  - `-v`, `--verbose`: This optional flag enables verbose logs, providing more detailed information during command execution.\n\n- **Config File**\n\n  - `-c`, `--config`: Specify the path to a configuration file (`*.toml`). If provided, the CLI will load settings from this file. If not specified, default settings will be used.\n\n- **Environment File**\n  - `-e`, `--env`: Specify the path to an environment file (`.env`).\n\nRunning commands after specifying config paths will continue with the last used path.\n\n## Structure\n\nThe structure of the Obsidian Vault is pretty specific as it mirrors the Bookstack structure to be as in sync as possible.\n\n```\n- Shelves\n  - Books\n    - Chapter\n      - Pages.md\n    - Pages.md\n```\n\n## Commands\n\n### Sync\n\nCalls `local` and `remote`\n\n### Local\n\nPulls down any missing local files\n\n### Remote\n\nPushes up any missing files in the remote\n\n### Update\n\nRequires either the `--remote` or the `--local` flag.\nIf `--remote` is specified, any files which have been updated locally will be changed in the remote and vice-versa for `--local`.\n\n### Delete\n\nRequires one of `--shelf`, `--book`, `--page`. Will delete Obsidian files and Bookstack files at the same time. Anything nested under a shelf or book will also be deleted.\nMust be called in a path like structure. Ex:\n\n```bash\n- Shelf\n  - Book\n    - Chapter\n      - Page.md\n    - Page.md\n```\n\nThe command would be called as `obsidian_to_bookstack delete Shelf/Book/Page --page` to delete a page.\n\nOptional configuration commands must be ran as:\n\n`obsidian_to_bookstack --verbose --config ~/.config/.. --env ~/.config/... \u003ccommand\u003e`\n\n## In Progress\n\n- Statistical/table view of uploaded, downloaded, deleted, or updated objects\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaypyles%2Fobsidian-to-bookstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaypyles%2Fobsidian-to-bookstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaypyles%2Fobsidian-to-bookstack/lists"}