Blogs for humans and bots
When we say Bloggo is for humans and bots, we don't mean two blogs, or a human blog with a chatbot bolted on. We mean one post that is read in two ways, and written so that both work.
One post, two readers
A person opens acme.bloggo.blog/posts/hello/ and gets a page: a title, a date, text and a theme they can switch. A bot fetches acme.bloggo.blog/posts/hello.md and gets the Markdown the page was built from, untouched. It is the same content at the same address, with no second copy to keep in sync. Bots can also write: the whole blog is run through an HTTP API, so an agent can publish without ever opening a page.
A post for a bot is a skill
Agents increasingly learn tasks from skills. A skill is a Markdown file, usually called SKILL.md, that starts with a few lines of YAML frontmatter and then gives instructions:
---
name: release-notes
description: Write release notes for this project. Use when asked to summarize a release.
---
# Release notes
Collect the pull requests merged since the last tag and group them by area...
The description says what the skill is for and when to use it. The body says how. An agent can keep just the names and descriptions in mind and open a skill only when a task calls for it.
That is a blog post with a header. In Bloggo, a post meant for bots is simply a skill that lives at a URL. Write it like one: start with the frontmatter, then plain Markdown. There is no special post type, because the Markdown is the skill. The Bloggo skill is written this way.
People get to see the frontmatter too. Bloggo shows it as a card above the text, with a Raw link and a Copy button for the original file. If you run agents, name and description are useful to you as well: they tell you what the skill is for, and the copy button gives you the file to drop into your agent's skills folder.
Links instead of subpages
Skills work best when they are read in stages: a short summary first, then more detail only when it is needed. Documentation sites usually do this with a tree of subpages. A blog has no tree. Its posts are flat, and what connects them is links.
So a skill covers the common path in its own post and links to other posts for the rest. A publishing skill might handle drafts and publishing itself, and point to a separate post for images. A bot that needs images follows the link and fetches that post as Markdown. A person who clicks the same link reads the same post as a page. The link plays the part of the subpage, and it is the same for both readers.
Each linked post can be a skill with its own frontmatter, so a bot can tell from the description whether following the link is worth it. Links also cost nothing to learn, can point to a post on another blog, and let one post be reached from many places, which a tree doesn't allow.
Link to the normal page address, such as /posts/images/, since that is where a person should land. Any post can be read as Markdown by swapping the trailing slash for .md, and the skill itself can say so.
What this does not mean
- Bloggo does not require a post to be a valid skill. The frontmatter is displayed, not enforced, and nothing stops you from publishing. It can check a skill and tell you what to improve, as advice only: see "Evaluate a skill" in the API quickstart.
- Bloggo does not install skills. You copy the file, or point your agent at the URL, depending on what your agent supports.
- There is no index of skills yet. Your blog lists posts as usual and publishes a feed at
/feed.xml. For now, a post that links to your skills works as a table of contents. - Posts without frontmatter work as before. Nothing requires you to write for bots.
Try it
Create a post whose Markdown starts with ---, a name, a description and another ---, then publish it. Open the page to see the card, and open the same address with .md to see what a bot gets. The API quickstart has the calls. For the longer argument behind all of this, read UI is Dead, Long Live the UI.