← ブログへ戻る
Development

An update on my Blogging System

An update on my Blogging System

In January I wrote a post about why I was building my own blogging system instead of using one of the many that already exist. Ownership. Control. Multilingual linking. Allowing people to comment without registering. Then I posted nothing for months.

I thought the problem was the software or other commitments but the real blocker was the workflow. Writing a post meant opening the admin page or an app, finding or creating a header image before I could actually start writing.

So a few weeks ago I stopped adding features to the plugins and built an MCP server instead — a small process that lets Claude talk to the blog API directly and added image generation to it. Header and inline images are saved directly to the tenant's storage on Supabase.

Blogging_system

This is a massive time saver. It doesn't mean I'm going to post AI-generated content as-is. It's more like a sounding board.

The server itself is small — thirteen functions, fixed for each tenant (site) so the same server reaches every blog without repeating the setup for each:

  • list_tenants — which blogs it's configured for
  • list_posts / get_post — browse and read, draft or published
  • create_post / update_post — write and revise, markdown in, published or draft
  • delete_post — permanent, so it always asks first
  • list_categories — the categories a site actually has, so nothing gets invented
  • generate_image — a text prompt straight to Gemini and into storage, header or inline
  • upload_image — a local file, same destination
  • import_image_from_url — pull something already made elsewhere into the blog's own storage instead of hot-linking it
  • check_post_images — fetch every image a post references and report which ones are still there
  • open_post_editor / post_edit_url — open the draft in an external app when to be checked and polished

The MCP server talks to the same APIs (on my own server) that my own admin dashboard uses, so it's just another way to access the same functionality.

BlogPostCreator_Dashboard

In Claude I added a plugin comprised of 4 skills, or sets of instructions Claude follows. Claude lists them alphabetically; this is the order they actually get used in.

/draft-blog-post drafts a post: it reads my prompt, researches anything that needs current facts, and writes in the voice that specific blog has actually used, not a generic one. It always saves as a draft; nothing goes live at that step.

/review-and-publish checks a draft before it goes out — every image, every link, whether the markdown will render the way I think it will — and only flips it to published once I say so, explicitly, every time.

/learn-blog-voice rereads what's already published every so often and rewrites the voice profile the other two draft against, so new posts don't drift from how I actually write as the blog grows.

/blog-setup is for when something breaks — the server's unreachable, a tenant's missing, credentials get rejected — and repairs the connection instead of leaving me to debug it myself.

Blog assistant plugin panel, showing its four skills

The MCP server and the plugin help me to turn something I already have such as a note, an old article or a half-written idea — into a post, saved as a draft I can still have to read and edit before it's published.

シェア:

コメント

まだコメントはありません。最初のコメントを書いてみませんか。

ゲストとしてコメントします。サインイン