{"id":13910666,"url":"https://github.com/adriansteffan/obsidian-to-jekyll","last_synced_at":"2025-07-18T09:32:24.913Z","repository":{"id":37712374,"uuid":"444244056","full_name":"adriansteffan/obsidian-to-jekyll","owner":"adriansteffan","description":"This is a simple python script that converts Obsidian notes to a format that is compatible with Jekyll themes that support wikilinks and backlinking like Jekyll Garden or Digital Garden Jekyll Template. It adds the filename to the frontmatter as a title and lets you set the visibility of your notes on a folder or note-by-note basis.","archived":false,"fork":false,"pushed_at":"2024-01-03T12:41:14.000Z","size":7,"stargazers_count":36,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-08-08T00:43:53.428Z","etag":null,"topics":["jekyll","markdown","obsidian-md","python","zettelkasten"],"latest_commit_sha":null,"homepage":"https://notes.adriansteffan.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adriansteffan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-04T01:03:37.000Z","updated_at":"2024-05-11T06:41:57.000Z","dependencies_parsed_at":"2022-09-11T23:41:03.010Z","dependency_job_id":null,"html_url":"https://github.com/adriansteffan/obsidian-to-jekyll","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriansteffan%2Fobsidian-to-jekyll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriansteffan%2Fobsidian-to-jekyll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriansteffan%2Fobsidian-to-jekyll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adriansteffan%2Fobsidian-to-jekyll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adriansteffan","download_url":"https://codeload.github.com/adriansteffan/obsidian-to-jekyll/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226388695,"owners_count":17617318,"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":["jekyll","markdown","obsidian-md","python","zettelkasten"],"created_at":"2024-08-07T00:01:41.152Z","updated_at":"2024-11-25T19:31:36.471Z","avatar_url":"https://github.com/adriansteffan.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Obsidian 2 Jekyll\n\nThis is a simple python script that converts [Obsidian](https://obsidian.md/) notes to a format that is compatible with [Jekyll](https://jekyllrb.com/) themes that support wikilinks and backlinking like [Jekyll Garden](https://github.com/Jekyll-Garden/jekyll-garden.github.io) or [Digital Garden Jekyll Template](https://github.com/maximevaillancourt/digital-garden-jekyll-template). It adds the filename to the frontmatter as a title and lets you set the visibility of your notes on a folder or note-by-note basis.\n\n## Prerequisites\n\n* [Python3](https://www.python.org/downloads/) installation.\n\n## Usage Instructions\n\n### Converting\n\nTo convert your vault into theme-compatible markdown, run\n\n```\npython3 [OBSIDIAN_VAULT_DIR] [OUTPUT_DIR]\n```\n\n### Controlling the Visibility of your Notes\n\nNotes are either **public** or **private**, where the script does not copy over notes that are defined as **private**.\n\n* To explicitly set a note to **public** or **private**, include `public: yes` or `public: no` in the yaml frontmatter.\n* If a note does not define its own visibility, it inherits the visibility of the folder it resides in. Folders can be made public or private by placing a `.public` or a `.private` file in the directory.\n* If the directory does not define its own visibility, it inherits the visibility of its parent directory.\n* If the parent directory also does not do not define or inherit a visibility, the visbility defaults to **private**.\n\n\n## Limitations\n\n* (TODO) \u0026 in the filename breaks links\n* (TODO) obsidian aliases do not work atm\n* duplicate filenames - when there are two notes with the same name, only one will be copied to the destination directory\n* only works for jenkyll themes that support wikilinks - would need conversion to standard markdown links\n\n\n## Duct Tape Obsidian Publish\n\nThis script is part of my selfmade Obsidian publish setup, which is roughly outlined below. It uses the [Jekyll Garden](https://github.com/Jekyll-Garden/jekyll-garden.github.io) theme and Github Pages to publish the notes.\n\nThe setup consists of 3 separate repositories:\n\n* obsidian-to-jekyll (this one)\n* jekyll-theme (the repository of the Jekyll theme connected to Github Pages)\n* obsidian-vault (the Bbsidian vault connecten via [Obsidian Git](https://github.com/denolehov/obsidian-git) sync)\n\n\n```\nducttape-obsidian-publish\n├── obsidian-to-jekyll\n├── jekyll-directory\n└── obsidian-vault\n```\n\nThe following Github workflow is placed in the obsidian-vault repository and opdates the Jekyll page whenever there is a change to the vault.\nAdd ssh credentials and adjust the filepaths if you intend to use the workflow in your own setup.\n\n```\nname: Publish Notes to Jekyll\non: \n  push:\n      branches:\n        - master\n  workflow_dispatch:\n\njobs:\n  deploy-application:\n    runs-on: ubuntu-latest\n    steps:\n    - run: |\n        eval $(ssh-agent -s)\n        mkdir -p ~/.ssh\n        chmod 700 ~/.ssh\n        echo \"${{ secrets.DEPLOYMENT_SERVER_KEY }}\" | tr -d '\\r' | ssh-add -\n        echo -e \"Host *\\n\\tStrictHostKeyChecking no\\n\\n\" \u003e ~/.ssh/config\n        ssh ${{ secrets.DEPLOYMENT_SERVER_USER }}@${{ secrets.DEPLOYMENT_SERVER_IP }} \"cd /YOURPATH/ducttape-obsidian-publish/obsidian-vault \u0026\u0026 git pull\"\n        ssh ${{ secrets.DEPLOYMENT_SERVER_USER }}@${{ secrets.DEPLOYMENT_SERVER_IP }} \"cd /YOURPATH/ducttape-obsidian-publish/obsidian-to-jekyll \u0026\u0026 python3 ./convert.py ../obsidian-vault ../jekyll-directory/NOTE_DIRECTORY\"\n        ssh ${{ secrets.DEPLOYMENT_SERVER_USER }}@${{ secrets.DEPLOYMENT_SERVER_IP }} 'cd /YOURPATH/ducttape-obsidian-publish/jekyll-directory \u0026\u0026 git pull \u0026\u0026 git add . \u0026\u0026 git commit -m \"Update Digital Garden\" \u0026\u0026 git push'\n```\n\n## Authors\n\n- **Adrian Steffan** [adriansteffan](https://github.com/adriansteffan) [website](https://adriansteffan.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadriansteffan%2Fobsidian-to-jekyll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadriansteffan%2Fobsidian-to-jekyll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadriansteffan%2Fobsidian-to-jekyll/lists"}