{"id":18162279,"url":"https://github.com/artainmo/github_to_obsidian","last_synced_at":"2026-04-11T08:02:26.456Z","repository":{"id":260617371,"uuid":"859436599","full_name":"artainmo/github_to_obsidian","owner":"artainmo","description":"Personal project. Program to transfer and synchronize all my github repositories into my obsidian. ","archived":false,"fork":false,"pushed_at":"2025-05-01T12:59:50.000Z","size":69,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-01T13:50:49.419Z","etag":null,"topics":["github-actions","github-api","obsidian"],"latest_commit_sha":null,"homepage":"","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/artainmo.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-09-18T16:53:47.000Z","updated_at":"2025-05-01T12:59:53.000Z","dependencies_parsed_at":"2024-11-01T12:20:36.805Z","dependency_job_id":"ed1d5119-385f-4bf6-b29b-c25502f188b7","html_url":"https://github.com/artainmo/github_to_obsidian","commit_stats":null,"previous_names":["artainmo/github_to_obsidian"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/artainmo/github_to_obsidian","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artainmo%2Fgithub_to_obsidian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artainmo%2Fgithub_to_obsidian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artainmo%2Fgithub_to_obsidian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artainmo%2Fgithub_to_obsidian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artainmo","download_url":"https://codeload.github.com/artainmo/github_to_obsidian/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artainmo%2Fgithub_to_obsidian/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007602,"owners_count":26084334,"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-10-11T02:00:06.511Z","response_time":55,"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":["github-actions","github-api","obsidian"],"created_at":"2024-11-02T09:04:38.792Z","updated_at":"2026-04-11T08:02:26.450Z","avatar_url":"https://github.com/artainmo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# github_to_obsidian\nPersonal project. Program to transfer and synchronize all my public github repositories into my obsidian. \n\nThis is useful because specific information can be found way faster via obsidian.\n\nIf a new file has been created or an existing file updated, the program will synchronize this in Obsidian repo, but it won't delete files in Obsidian that have been deleted in github. This is why repositories should only be made public once the code inside is finished to avoid syncronization problems with files deleted on github.\n\n## Steps to create\n1. Be able to collect all repository links from a user. \\\n2. Iterate over all projects, to get all its files and then files inside their directory. \\\n3. Remove in github itself, files or directories that should not be there. \\\n4. Skip certain directories and files such as .git or submodules or ones related to external library or config files. \\\n5. Create the markdown and code files. \\\n6. For synchronization, verify if each file already exists, and if it exists see if its contents are similar and tags are similar. \\\n7. Use github actions to do the verification once a day. \\\n\n## File management\n##### Naming\nUse github repository path as file name in obsidian.\u003cbr\u003e\nTransform '/' into '~'.\u003cbr\u003e\nRemove '.' if file name starts with that.\u003cbr\u003e\nAdd '.md' extension in the end for obsidian.\n\n##### Tags\nGive tags of project to its root README.\u003cbr\u003e\nGive the 'from-github' tag to all files that come from github.\u003cbr\u003e\nIf on a page of code you can detect the programming language via its extension, add this programming language as a tag.\n\n##### Content\nAll files' content should be between backtilts as this is how code is displayed in obsidian markdown.\u003cbr\u003e\nOnly README.md files' content should not be between backtilts. And also README.md files, if at root of repository, should start with the tags.\u003cbr\u003e\nThe \\\u003cbr\\\u003e HTML tags can be removed from README.md files for obsidian's markdown.\u003cbr\u003e\nAll files should have the 'from-github' tag.\u003cbr\u003e\nAll files should after the tags and before the content have a line saying: 'View this page on [github](appropriate_link). Only edit this page on github.'.\n\n##### Files to skip\n```\nFiles with no extension besides if makefile/Makefile/dockerfile/Dockerfile\n.gitkeep\n*.swp\na.out\n.env\n*.txt \n*.zip\n*.csv \n*.svg \n*.png\n*.jpg\n*.ico\n*.json \n*.storyboard\n*.plist\ntelegraf.conf\ngrafana.db\nwordpress.sql\n.eslintrc.js\n.prettierrc\n*.lock\n*.options\n*.conf.in\n*.map\n*.pdf\n*.bmp\n*.rt\n*.names\n*.pkl\n*.log\nreportWebVitals.js\napp.e2e-spec.ts\n```\n\n##### Directories to skip\n```\n*/*.xcworkspace\n*/*.xcodeproj\n*/utils/ft_printf\n*/utils/get_next_line\n*/utils/libft\n*/libs/get_next_line\n*/libs/libft\n*/utils/minilibX\ninception-of-things/p1\ninception-of-things/p2\nmatcha/frontend\nminishell-unittest/test/test\n*/data\n*/node_modules\n*/js/vendor\nwebserv/conf\nwebserv/webserv/frontend\nft_printf/ft_printf\n```\n\n## Next things I could do\n1. Delete files in Obsidian that have been deleted in github. Maybe do that by removing and regenerating all the files each time. \n2. Generate the files in a folder named 'github' instead of in the root. This is useful to segregate generated github files from files you have written, lowering the risk of injecting faulty generated files at the root in the middle of normal files, but also this is useful to allow plugins to exclude the github files (for example obsidian copilot can benefit from not indexing all the github files).\n3. Transform this into an official obsidian plugin.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartainmo%2Fgithub_to_obsidian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartainmo%2Fgithub_to_obsidian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartainmo%2Fgithub_to_obsidian/lists"}