{"id":32122659,"url":"https://github.com/tofrankie/github-blogger","last_synced_at":"2026-06-01T16:00:35.937Z","repository":{"id":202788370,"uuid":"708009838","full_name":"tofrankie/github-blogger","owner":"tofrankie","description":"VS Code extension for writing and managing blog posts via GitHub issue.","archived":false,"fork":false,"pushed_at":"2026-05-20T19:38:04.000Z","size":24767,"stargazers_count":8,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-21T01:07:56.406Z","etag":null,"topics":["blog","blogger","github","github-blogger","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=Frankie.github-blogger","language":"TypeScript","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/tofrankie.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-10-21T08:44:48.000Z","updated_at":"2026-05-20T19:38:09.000Z","dependencies_parsed_at":"2023-12-17T09:24:19.019Z","dependency_job_id":"cf97f24e-20b4-4fae-a5d5-a0fe14d5a653","html_url":"https://github.com/tofrankie/github-blogger","commit_stats":null,"previous_names":["tofrankie/vscode-blog","tofrankie/github-blogger"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/tofrankie/github-blogger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tofrankie%2Fgithub-blogger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tofrankie%2Fgithub-blogger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tofrankie%2Fgithub-blogger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tofrankie%2Fgithub-blogger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tofrankie","download_url":"https://codeload.github.com/tofrankie/github-blogger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tofrankie%2Fgithub-blogger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33782317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"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":["blog","blogger","github","github-blogger","vscode-extension"],"created_at":"2025-10-20T20:59:50.771Z","updated_at":"2026-06-01T16:00:35.931Z","avatar_url":"https://github.com/tofrankie.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Blogger\n\n[![Visual Studio Marketplace Version](https://vsmarketplacebadges.dev/version/frankie.github-blogger.svg?color=4d9375)](https://marketplace.visualstudio.com/items?itemName=frankie.github-blogger) [![Open VSX Version](https://img.shields.io/open-vsx/v/frankie/github-blogger.svg?label=Open%20VSX\u0026color=a60ee5)\n](https://open-vsx.org/extension/frankie/github-blogger)\n\nEnglish | [中文](README.zh_CN.md)\n\n**GitHub Blogger** is a VS Code extension for writing and managing blog posts via GitHub issues. It supports Markdown editing, live preview, and seamless publishing — all powered by GitHub.\n\nIn principle, it works with all VSCodium-based editors, such as Cursor, TRAE, Kiro and Google Antigravity.\n\n## ✨ Features\n\n- Manage and publish blog posts via GitHub issues\n- GitHub-native interaction experience\n- Markdown editing with live preview and plugin support (Math, Mermaid, etc.)\n- Free image hosting support: images are stored in your blog repository and served via jsDelivr CDN\n- All posts and edit history (as Git commits) are stored in your blog repository\n\n\u003e [!IMPORTANT]\n\u003e **Your blog repository must be public** for jsDelivr CDN to work ([why](https://github.com/jsdelivr/jsdelivr/issues/18243#issuecomment-857512289), [set visibility](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility))\n\n## 🚀 Quick Start\n\n1. Create a [GitHub](https://docs.github.com/en/get-started/start-your-journey/creating-an-account-on-github#signing-up-for-a-new-personal-account) account (skip if you already have one)\n2. Create a [public repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-new-repository#creating-a-new-repository-from-the-web-ui) (skip if you want to use an existing one)\n3. Generate a [GitHub Personal Access Token (classic)](https://github.com/settings/tokens) and select at least the `public_repo` scope\n4. Install the GitHub Blogger extension from the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=frankie.github-blogger) or [Open VSX](https://open-vsx.org/extension/frankie/github-blogger)\n5. Open the command palette (Cmd + Shift + P / Ctrl + Shift + P), search for `Configure GitHub Blogger` to set up\n6. Then run `Open GitHub Blogger` and start writing!\n\n## ⚙️ Update Configuration\n\nTo update extension settings, run `Configure GitHub Blogger` or edit VS Code `settings.json` directly. Example:\n\n```json\n{\n  \"github-blogger.token\": \"your-github-token\",\n  \"github-blogger.user\": \"your-github-username\",\n  \"github-blogger.repo\": \"your-github-repo\",\n  \"github-blogger.branch\": \"main\"\n}\n```\n\n## 🔐 GitHub PAT\n\nThis extension requires a [GitHub Personal Access Token (classic)](https://github.com/settings/tokens) with at least one of the following scopes:\n\n- `public_repo` - minimum required scope when using a public repository (issues, labels, contents/git, etc.)\n- `repo` - only needed if you plan to access or create a private repository\n\n## ⚠️ Notes\n\n- Posts and images are stored under `archives` and `images` in your blog repository\n- The working branch is configured via `github-blogger.branch`, with `main` as the default. In most cases, you do not need to change it. If the branch does not exist, post/image storage may fail, and images in posts may not display correctly.\n\n## 📷 Screenshots\n\n![](./images/screenshot-1.png) ![](./images/screenshot-2.png) ![](./images/screenshot-3.png)\n\n## 🙏 Acknowledgements\n\nThis project is built upon and inspired by the open-source community, including:\n\n- [Aaronphy/Blogger](https://github.com/Aaronphy/Blogger) – Project inspiration\n- [@octokit/core](https://github.com/octokit/core.js) – GitHub's official SDKs\n- [@primer/react](https://primer.style/react) – GitHub's official UI components\n- [@tomjs/vite-plugin-vscode](https://github.com/tomjs/vite-plugin-vscode) – VS Code extension tooling\n- [bytemd](https://github.com/bytedance/bytemd) – Markdown editor\n- [jsDelivr](https://www.jsdelivr.com/?docs=gh) – Free CDN service\n\n## 📚 Related Projects\n\n- [github-issue-toc](https://github.com/tofrankie/github-issue-toc) – Generate a table of contents for GitHub issue\n\n## 📝 License\n\n[MIT](./LICENSE) License © [Frankie](https://github.com/tofrankie)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftofrankie%2Fgithub-blogger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftofrankie%2Fgithub-blogger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftofrankie%2Fgithub-blogger/lists"}