<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>Blogkit</id>
    <title>Blogkit</title>
    <updated>2026-05-04T14:44:32.743Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>2nthony</name>
    </author>
    <rights>Blogkit</rights>
    <entry>
        <title type="html"><![CDATA[Introducing Blogkit - A Unified Blog Engine]]></title>
        <id>https://blogkit.vercel.app/introducing-blogkit</id>
        <link href="https://blogkit.vercel.app/introducing-blogkit"/>
        <updated>2022-03-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A unified blog engine powered by Next.js ISR]]></summary>
        <content type="html"><![CDATA[<p><img src="https://evilaassets.oss-cn-shanghai.aliyuncs.com/uPic/2022/03/hehYDM.png!jpg" alt=""></p>
<p>Blogkit is a unified blog engine. You can reach out on <a href="https://github.com/2nthony/blogkit">GitHub</a>.</p>
<h2 id="motivation">Motivation</h2>
<p>Many people blogging on GitHub by using <a href="https://github.com/11ty/eleventy">11ty</a>, <a href="https://github.com/saberland/saber">Saber</a>, <a href="https://github.com/shuding/nextra">Nextra</a>, and etc. They are all great tools for blogging, with the power of Vercel so we can update our blog by just committing the new markdown file to GitHub.</p>
<p>Sounds nature! But all the tools rely on GitHub ecosystem which means is if we out of our git environment, we can not update our blog.</p>
<p>So I was thinking, “How to blogging on anywhere I want?”. Fortunately, since I notice <a href="https://github.com/djyde/sairin">Sairin - A Blog Engine Based on GitHub Issue</a> ,that is exactly what I want to have.</p>
<p>But I prefer Notion than GitHub Issue, so I made up a new idea based on Sairin, make it extensible.</p>
<p><b >And now,</b> <a href="https://github.com/2nthony/blogkit"><b >blogkit - A Unified Blog Engine</b></a> <b >is here!</b></p>
<h2 id="tech-specific">Tech Specific</h2>
<p>Blogkit has 3 parts: core, request, theme.</p>
<ul>
<li><p>core: the built-in logic</p>
</li>
<li><p>request: tell core how to fetch post list and post</p>
</li>
<li><p>theme: the blog looks</p>
</li>
</ul>
<p>With custom request, we can fetch the posts data from any service(Notion, etc.). For example:</p>
<pre><code class="language-javascript"><span class="token comment">// pesudo code</span>
<span class="token keyword">const</span> request <span class="token operator">=</span> <span class="token punctuation">{</span>
  <span class="token function">getPostList</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">const</span> posts <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/api/getPostList'</span><span class="token punctuation">)</span>

    <span class="token keyword">return</span> <span class="token punctuation">{</span>
      posts
    <span class="token punctuation">}</span>
  <span class="token punctuation">}</span><span class="token punctuation">,</span>
  <span class="token function">getPost</span><span class="token punctuation">(</span><span class="token parameter">slug</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    <span class="token keyword">const</span> markdown <span class="token operator">=</span> <span class="token keyword">await</span> <span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">'/api/getPost'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
      <span class="token literal-property property">query</span><span class="token operator">:</span> <span class="token punctuation">{</span>
        slug
      <span class="token punctuation">}</span>
    <span class="token punctuation">}</span><span class="token punctuation">)</span>

    <span class="token keyword">return</span> <span class="token punctuation">{</span>
      <span class="token comment">// ...</span>
      <span class="token literal-property property">id</span><span class="token operator">:</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token string">my-post</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span>
      markdown
    <span class="token punctuation">}</span>
  <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre>
<p>With Next.js <a href="https://nextjs.org/docs/basic-features/data-fetching/incremental-static-regeneration">Incremental Static Regeneration</a>, our blog will generate static pages once, and update them on demand.</p>
<h2 id="one-more">One More</h2>
<p>Blogkit is extensible, and we had built-in some useful presets:</p>
<ul>
<li><p>Notion request(RSS included)</p>
</li>
<li><p>Yuque request</p>
</li>
<li><p>A minimal theme</p>
</li>
<li><p><a href="https://github.com/2nthony/blogkit-notion-starter">Notion starter template</a> (One-click deploy)</p>
</li>
<li><p><a href="https://github.com/2nthony/blogkit-yuque-starter">Yuque starter template</a> (One-click deploy)</p>
</li>
</ul>
<h2 id="not-the-end">Not the end</h2>
<p>We will keep adding new features to <a href="https://github.com/2nthony/blogkit">Blogkit</a>! Let’s build the ecosystem!</p>
]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[RSS support]]></title>
        <id>https://blogkit.vercel.app/rss-support</id>
        <link href="https://blogkit.vercel.app/rss-support"/>
        <updated>2022-03-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Now blogkit has RSS support.]]></summary>
        <content type="html"><![CDATA[<p><span class="green">Content</span></p>
<p>via api: <code >api/rss</code> </p>
<p><a href="https://blogkit.vercel.app/api/rss">https://blogkit.vercel.app/api/rss</a></p>
]]></content>
    </entry>
    <entry>
        <title type="html"><![CDATA[Markdown features]]></title>
        <id>https://blogkit.vercel.app/markdown-features</id>
        <link href="https://blogkit.vercel.app/markdown-features"/>
        <updated>2022-02-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[a list of supported markdown features]]></summary>
        <content type="html"><![CDATA[<h1 id="heading-1">heading 1</h1>
<h2 id="heading-2"><span class="blue">heading</span> 2</h2>
<h3 id="heading-3">heading 3</h3>
<p>My github: <a href="https://github.com/2nthony">2nthony</a></p>
<blockquote>
<p>blockquote</p>
</blockquote>
<p><code >inlinecode</code> ← is inline code</p>
<p><i >italic</i></p>
<p><b >bold</b></p>
<p><u >underline</u></p>
<p><s >strike</s></p>
<p><span class="pink">colored</span></p>
<p>@page will parse to in-site link <a href="/introducing-blogkit">Introducing Blogkit - A Unified Blog Engine</a> </p>
<hr>
<ul>
<li><p>List item</p>
<ul>
<li><p>sub level</p>
<ul>
<li>oooomygosh</li>
</ul>
</li>
<li><p><a href="https://www.notion.so/03ef998f8f9f4520be38d8397902714b">RSS support</a></p>
</li>
</ul>
</li>
<li><p><a href="/rss-support">RSS support</a>  <a href="/introducing-blogkit">Introducing Blogkit - A Unified Blog Engine</a>  <a href="https://www.notion.so/51d311b4dcd345ceade9df3669d7a680">hidden post</a> </p>
</li>
<li><p>ordered list</p>
</li>
<li><p>Ordered 2</p>
</li>
<li><p>Ordered 3</p>
</li>
</ul>
<pre><code class="language-typescript">interface Post {
    id: string
    html: string
    markdown: string
    attributes: Attributes
}
</code></pre>
<p>how about this</p>
]]></content>
    </entry>
</feed>