<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Frankie</title>
    <description>The latest articles on DEV Community by Frankie (@frankie).</description>
    <link>https://dev.to/frankie</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F701238%2F964328dc-578b-48a0-aaf2-ea9551f491c1.png</url>
      <title>DEV Community: Frankie</title>
      <link>https://dev.to/frankie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frankie"/>
    <language>en</language>
    <item>
      <title>Search Confluence or Jira with Raycast</title>
      <dc:creator>Frankie</dc:creator>
      <pubDate>Thu, 15 Jan 2026 07:07:05 +0000</pubDate>
      <link>https://dev.to/frankie/search-confluence-or-jira-with-raycast-3eep</link>
      <guid>https://dev.to/frankie/search-confluence-or-jira-with-raycast-3eep</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F23t180orev5ly2bejpvi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F23t180orev5ly2bejpvi.jpg" alt="Image from Freepik" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;If you’ve used Alfred but haven’t tried &lt;a href="https://raycast.com/?via=73820f" rel="noopener noreferrer"&gt;Raycast&lt;/a&gt; yet, it’s worth a shot. The free plan is more than enough for day-to-day use (see &lt;a href="https://www.raycast.com/raycast-vs-alfred?via=73820f" rel="noopener noreferrer"&gt;Raycast vs Alfred&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Free users can’t use Raycast’s built-in data sync, but you can still sync via Raycast’s Export/Import Settings &amp;amp; Data plus iCloud Drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;At our company, we use Atlassian’s Confluence and Jira for our knowledge base and project management.&lt;/p&gt;

&lt;p&gt;We frequently open Wiki and Jira pages to look things up. To find a specific article or issue, it often takes several steps: open the website, focus the search box, search, filter, and so on. A slightly faster way is to bookmark commonly used links, or create Raycast Quicklinks plus Aliases for quick access.&lt;/p&gt;

&lt;p&gt;Quicklinks are great in some scenarios—for example, searching documentation with &lt;code&gt;https://developer.mozilla.org/en-US/search?q={Query}&lt;/code&gt;, where &lt;code&gt;{Query}&lt;/code&gt; is a dynamic parameter (i.e., what you want to search for). Any site that supports URL-based search parameters can use this approach—for instance, Google’s &lt;code&gt;https://www.google.com/search?q={Query}&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;However, this kind of search doesn’t work for internal company Wiki/Jira sites. Also, using Quicklinks for internal doc searching isn’t really ideal. Over time, the links you need to visit or save only keep growing—whether they’re browser bookmarks or Quicklinks.&lt;/p&gt;

&lt;p&gt;That led to the idea of building a Raycast extension to support fast search (and a few simple actions) for Confluence and Jira. Conveniently, our self-hosted (Data Center) deployment also supports authentication via Personal Access Tokens, which is a secure way to integrate with external programs. &lt;a href="https://confluence.atlassian.com/enterprise/using-personal-access-tokens-1026032365.html" rel="noopener noreferrer"&gt;Learn more&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Before You Start
&lt;/h2&gt;

&lt;p&gt;After installing Raycast, go to the Raycast Store and install the &lt;a href="https://raycast.com/tofrankie/atlassian-data-center?via=73820f" rel="noopener noreferrer"&gt;&lt;strong&gt;Atlassian Data Center (Self-Hosted)&lt;/strong&gt;&lt;/a&gt; extension.&lt;/p&gt;

&lt;p&gt;When you run commands from this extension, it will guide you through some initial setup. Prepare the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confluence Base URL: e.g. &lt;a href="https://confluence.example.com" rel="noopener noreferrer"&gt;https://confluence.example.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Confluence PAT: go to your company’s Confluence site, then Profile (avatar) → Personal Access Tokens → Create token (&lt;strong&gt;keep the token safe; if it leaks, revoke it immediately&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Jira Base URL: &lt;a href="https://jira.example.com" rel="noopener noreferrer"&gt;https://jira.example.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Jira PAT: create it the same way as Confluence&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;TIP: Since the fields above are required, if you only use one of them, you can just fill the other with any non-empty value.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Usage Guide
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;TIP: You can also set an Alias for each command based on your own habits for quicker access.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Currently, Atlassian Data Center provides the following commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confluence

&lt;ul&gt;
&lt;li&gt;Search Contents - Search pages (articles), blog posts, attachments, and comments; supports favoriting&lt;/li&gt;
&lt;li&gt;Search Spaces - Search spaces&lt;/li&gt;
&lt;li&gt;Search Users - Search users&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Jira

&lt;ul&gt;
&lt;li&gt;Search Issues - Search issues, and supports a few simple actions such as transitioning issue status and creating worklogs&lt;/li&gt;
&lt;li&gt;Board View - Boards, such as the current Active Sprint&lt;/li&gt;
&lt;li&gt;Worklog View - Your worklogs&lt;/li&gt;
&lt;li&gt;Notification View - Notifications (if there are “unread” messages, the Search Issues list will also show a hint)&lt;/li&gt;
&lt;li&gt;Manage Fields - Helps Search Issues display more information in search results&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Each search panel includes many commonly used filters (usually more than enough for everyday use):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search Contents

&lt;ul&gt;
&lt;li&gt;All Contents&lt;/li&gt;
&lt;li&gt;Full Text Search - Expand the search scope from title ~ "xxx" to text ~ "xxx", instead of only searching titles&lt;/li&gt;
&lt;li&gt;Viewed Recently&lt;/li&gt;
&lt;li&gt;Updated Recently&lt;/li&gt;
&lt;li&gt;Created by Me&lt;/li&gt;
&lt;li&gt;Contributed by Me&lt;/li&gt;
&lt;li&gt;Mention Me&lt;/li&gt;
&lt;li&gt;My Favourites&lt;/li&gt;
&lt;li&gt;Watched by Me&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Search Issues

&lt;ul&gt;
&lt;li&gt;All Issues&lt;/li&gt;
&lt;li&gt;Full Text Search - Expand the search scope from summary ~ "xxx" to text ~ "xxx"&lt;/li&gt;
&lt;li&gt;Open Issues&lt;/li&gt;
&lt;li&gt;My Open Issues&lt;/li&gt;
&lt;li&gt;Assigned to Me&lt;/li&gt;
&lt;li&gt;Reported by Me&lt;/li&gt;
&lt;li&gt;Created Recently&lt;/li&gt;
&lt;li&gt;Updated Recently&lt;/li&gt;
&lt;li&gt;Resolved Recently&lt;/li&gt;
&lt;li&gt;Viewed Recently&lt;/li&gt;
&lt;li&gt;Watched by Me&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;As mentioned earlier, Quicklinks tend to grow endlessly over time. I think favoriting articles is a good alternative (the Action Panel provides quick Favorite/Unfavorite actions). When searching, just switch to the My Favourites option.&lt;/p&gt;

&lt;p&gt;In addition, it also supports typing full CQL or JQL for customized advanced queries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.atlassian.com/server/confluence/rest/v1020/intro/#advanced-searching-using-cql" rel="noopener noreferrer"&gt;Confluence Query Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://confluence.atlassian.com/jiracoreserver/advanced-searching-939937709.html" rel="noopener noreferrer"&gt;Jira Query Language&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One more thing:&lt;/p&gt;

&lt;p&gt;Since Jira allows custom fields—and there are many field types, and each Jira instance can differ a lot—the extension includes the Manage Fields command to help Search Issues show more information.&lt;/p&gt;

&lt;p&gt;For example, search for Test Engineer on the Manage Fields screen and add it via “Add to Search”. Then the Search Issues list will display that field.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dwyd02v3pzuhx445pnv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1dwyd02v3pzuhx445pnv.png" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots
&lt;/h2&gt;

&lt;p&gt;Because Raycast List has limited space, lots of additional information can only be hidden in tooltips. You can reveal it by moving the cursor over icons, titles, subtitles, timestamps, avatars, and so on.&lt;/p&gt;

&lt;p&gt;▼ Confluence&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo231x75t0hff9bwk9plb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo231x75t0hff9bwk9plb.png" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;▼ Jira&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqre3kuo53hamcvh3h5z9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqre3kuo53hamcvh3h5z9.png" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.raycast.com/tofrankie/atlassian-data-center?via=73820f" rel="noopener noreferrer"&gt;More screenshots&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Others
&lt;/h2&gt;

&lt;p&gt;Some Raycast extensions I personally use. They may not be for everyone—pick what you need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.raycast.com/tmk/lark?via=73820f" rel="noopener noreferrer"&gt;Lark Documents&lt;/a&gt; - Search Lark docs&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.raycast.com/degouville/cursor-recent-projects?via=73820f" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt; - Commonly used: Search Recent Projects&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.raycast.com/vivek/deepwiki?via=73820f" rel="noopener noreferrer"&gt;DeepWiki&lt;/a&gt; - Great for Q&amp;amp;A to quickly understand internal implementations of some libraries&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>raycast</category>
      <category>confluence</category>
      <category>jira</category>
    </item>
    <item>
      <title>Build a Personal Blog with VS Code + GitHub</title>
      <dc:creator>Frankie</dc:creator>
      <pubDate>Sun, 22 Dec 2024 12:14:11 +0000</pubDate>
      <link>https://dev.to/frankie/build-a-personal-blog-with-vs-code-github-241k</link>
      <guid>https://dev.to/frankie/build-a-personal-blog-with-vs-code-github-241k</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jm97gymkrskm8a2qhzl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jm97gymkrskm8a2qhzl.jpg" alt="Image from Freepik" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related Topics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/624259381" rel="noopener noreferrer"&gt;为什么程序员必须坚持写技术博客？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/359954102" rel="noopener noreferrer"&gt;现在搭建个人博客还有意义吗？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/22795144" rel="noopener noreferrer"&gt;一般技术大牛都在哪里写博客？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/656111884" rel="noopener noreferrer"&gt;为什么现在很多个人博客网站没有更新了呢？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/652884046" rel="noopener noreferrer"&gt;作为一个程序员，发技术博客推荐什么平台？博客园值得写吗？&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zhihu.com/question/266571296" rel="noopener noreferrer"&gt;现在个人博客不能备案了吗？&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Candidate Options
&lt;/h2&gt;

&lt;p&gt;There are plenty of choices, and the barrier to entry is low.&lt;/p&gt;

&lt;p&gt;Existing platforms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Juejin&lt;/li&gt;
&lt;li&gt;Yuque&lt;/li&gt;
&lt;li&gt;Zhihu&lt;/li&gt;
&lt;li&gt;Jianshu&lt;/li&gt;
&lt;li&gt;Cnblogs&lt;/li&gt;
&lt;li&gt;WeChat Official Account&lt;/li&gt;
&lt;li&gt;SegmentFault&lt;/li&gt;
&lt;li&gt;Medium&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Self-hosting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WordPress&lt;/li&gt;
&lt;li&gt;Hexo&lt;/li&gt;
&lt;li&gt;GitBook&lt;/li&gt;
&lt;li&gt;VuePress&lt;/li&gt;
&lt;li&gt;dumi&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Choose?
&lt;/h2&gt;

&lt;p&gt;The motivations for writing a personal blog are usually something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Document pitfalls you’ve run into, tough problems you’ve solved, life, etc.&lt;/li&gt;
&lt;li&gt;Build a knowledge base and influence&lt;/li&gt;
&lt;li&gt;Summarize and refine, improving your writing and communication&lt;/li&gt;
&lt;li&gt;Output content, share opinions, discuss, and iterate&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edit and publish anytime, anywhere&lt;/li&gt;
&lt;li&gt;Solid Markdown support, plus image hosting&lt;/li&gt;
&lt;li&gt;No content review/censorship (especially obvious in China—for example, mentioning competitors or including certain URLs can easily lead to throttling or bans)&lt;/li&gt;
&lt;li&gt;Good SEO (I still want what I write to be seen by more people)&lt;/li&gt;
&lt;li&gt;Stay focused on creating content&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re in China, platforms like Juejin, Yuque, and Cnblogs might be better overall. Their user base is mostly programmers, which can lead to more discussion. Zhihu’s Markdown support is terrible. Jianshu’s content moderation is pretty unfriendly—I wrote on &lt;a href="https://www.jianshu.com/u/f4dac74bd955" rel="noopener noreferrer"&gt;Jianshu&lt;/a&gt; for years, but later its moderation became so robotic that even tiny edits could get you banned. I eventually couldn’t take it anymore and left.&lt;/p&gt;

&lt;p&gt;If you self-host, you need to think about SEO, image hosting, domain registration/filing, ops costs, and so on. If you choose a domestic platform, moderation is basically unavoidable—change a word and you may still have to wait for approval. 🙄&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In short, every option has pros and cons—just pick what suits you.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Choice
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;My blog: &lt;a href="https://github.com/tofrankie/blog" rel="noopener noreferrer"&gt;种一棵树，最好的时间是十年前。其次，是现在。&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;a href="https://marketplace.visualstudio.com/items?itemName=frankie.github-blogger" rel="noopener noreferrer"&gt;GitHub Blogger&lt;/a&gt; as the editor for fast writing and publishing (a VS Code WebView extension)&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://www.jsdelivr.com/?docs=gh" rel="noopener noreferrer"&gt;GitHub + jsDelivr&lt;/a&gt; as the image host, with CDN acceleration&lt;/li&gt;
&lt;li&gt;Use a &lt;a href="https://github.com/tofrankie/blog" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt; to archive posts; every edit is recorded&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://github.com/tofrankie/blog/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt; as the post list&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://github.com/tofrankie/blog/labels" rel="noopener noreferrer"&gt;GitHub Labels&lt;/a&gt; to tag and categorize posts&lt;/li&gt;
&lt;li&gt;Use &lt;a href="https://www.raycast.com/core-features/quicklinks?via=73820f" rel="noopener noreferrer"&gt;Raycast Quicklinks&lt;/a&gt; to quickly search posts, e.g. search by title with &lt;code&gt;https://github.com/tofrankie/blog/issues?q=in%3Atitle+{Query}+&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GitHub Blogger
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Inspired by Aaronphy/Blogger.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After leaving Jianshu, I thought about continuing on Juejin. But Juejin isn’t as good as it used to be, and it’s now full of clickbait and a lot of “anxiety marketing”. Later I found &lt;a href="https://github.com/Aaronphy/Blogger" rel="noopener noreferrer"&gt;Aaronphy/Blogger&lt;/a&gt;, and finally had a place where I could just write in peace.&lt;/p&gt;

&lt;p&gt;After using it for a while, I noticed some rough edges and a few bugs, and the author hadn’t updated it for a long time. So I forked and built on top of it—fixed some bugs, added new features—and that’s how &lt;a href="https://github.com/tofrankie/github-blogger" rel="noopener noreferrer"&gt;GitHub Blogger&lt;/a&gt; was born.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For the original author’s design approach, see “&lt;a href="https://zhuanlan.zhihu.com/p/358347337" rel="noopener noreferrer"&gt;在 VSCODE 中写博客吧&lt;/a&gt;”.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On top of the original, I made a few tweaks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tweak the UI theme&lt;/li&gt;
&lt;li&gt;Adjust the Markdown theme to match GitHub&lt;/li&gt;
&lt;li&gt;Support more Markdown formats, such as math formulas and diagrams&lt;/li&gt;
&lt;li&gt;Support searching by title and multiple labels&lt;/li&gt;
&lt;li&gt;Provide a search panel&lt;/li&gt;
&lt;li&gt;Support opening posts on GitHub&lt;/li&gt;
&lt;li&gt;Support post backups—every save gets recorded in your blog repository&lt;/li&gt;
&lt;li&gt;Fix label-search pagination not working&lt;/li&gt;
&lt;li&gt;Fix not being able to create labels when creating a post&lt;/li&gt;
&lt;li&gt;Fix Labels only showing the first 20 items&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In mid 2025, it got a full rewrite, and the whole UX now feels basically the same as GitHub itself. It looks like this 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9q31r28j24om1gl9phld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9q31r28j24om1gl9phld.png" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnx3tj3dx4dg4z03y5kss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnx3tj3dx4dg4z03y5kss.png" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F732c4ubu3ywd081itnui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F732c4ubu3ywd081itnui.png" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you happen to like it too, feel free to &lt;a href="https://github.com/tofrankie/github-blogger" rel="noopener noreferrer"&gt;give it a try&lt;/a&gt;~ 👋&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use GitHub Blogger?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Since GitHub Blogger uses &lt;a href="https://www.jsdelivr.com/?docs=gh" rel="noopener noreferrer"&gt;jsDelivr&lt;/a&gt; for image hosting internally—and jsDelivr does not support private repositories (&lt;a href="https://github.com/jsdelivr/jsdelivr/issues/18243#issuecomment-857512289" rel="noopener noreferrer"&gt;more&lt;/a&gt;)—&lt;strong&gt;your blog repository must be public&lt;/strong&gt;, otherwise images won’t display.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a GitHub account (skip if you already have one)&lt;/li&gt;
&lt;li&gt;Install VS Code, Cursor, or another editor (in theory, editors based on VSCodium should work)&lt;/li&gt;
&lt;li&gt;Install the extension from &lt;a href="https://marketplace.visualstudio.com/items?itemName=Frankie.github-blogger" rel="noopener noreferrer"&gt;VS Code Marketplace&lt;/a&gt; or &lt;a href="https://open-vsx.org/extension/frankie/github-blogger" rel="noopener noreferrer"&gt;Open VSX&lt;/a&gt;. You can also search for the &lt;code&gt;GitHub Blogger&lt;/code&gt; extension inside the editor.&lt;/li&gt;
&lt;li&gt;Prepare your &lt;a href="https://github.com/settings/tokens" rel="noopener noreferrer"&gt;GitHub Personal Access Token (classic)&lt;/a&gt; (needed for calling the GitHub API)&lt;/li&gt;
&lt;li&gt;Open the command palette with Command + Shift + P or Ctrl + Shift + P:

&lt;ol&gt;
&lt;li&gt;Type &lt;code&gt;Configure GitHub Blogger&lt;/code&gt; to finish the initial setup (you can select an existing public repository)&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;Open GitHub Blogger&lt;/code&gt; to open the editor, and you’re ready to go.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;/ol&gt;

&lt;p&gt;Extension configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github-blogger.token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;xxx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Your GitHub Personal Access Token&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github-blogger.user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;xxx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Your GitHub Username&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github-blogger.repo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;xxx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Your GitHub Repository Name&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github-blogger.branch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;// Your GitHub Repository Branch Name&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;branch&lt;/code&gt; defaults to &lt;code&gt;main&lt;/code&gt;. It determines which branch your images and archived posts are committed to. A blog repository typically doesn’t have multiple branches like a real project, so you usually don’t need to change it—just keep it as the repo’s default branch.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can pair it with &lt;a href="https://github.com/tofrankie/github-issue-toc" rel="noopener noreferrer"&gt;github-issue-toc&lt;/a&gt;, which generates a table of contents on the right side of GitHub Issue pages.&lt;/p&gt;

&lt;p&gt;GitHub Flavored Markdown (GFM) not only supports standard CommonMarkdown syntax, but also includes additional GitHub-specific features. See &lt;a href="https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/about-writing-and-formatting-on-github" rel="noopener noreferrer"&gt;here&lt;/a&gt; for details.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>github</category>
      <category>blogger</category>
      <category>vscode</category>
      <category>cursor</category>
    </item>
  </channel>
</rss>
