Publishing an OKF bundle with 11ty

What is OKF
Google Cloud's Open Knowledge Format (OKF v0.1) was released on 12 June 2026 by Google Cloud and is essentially a formalisation of something developers and SEOs have been doing informally for a while — maintaining markdown knowledge bases. If you've used llms.txt, agents.md, or Obsidian-style vaults, then the architecture should already be familiar. OKF just pins down the small set of conventions needed to make those patterns interoperable between different producers and consumers.
The format itself is minimal — a directory of markdown files with YAML frontmatter carrying six fields: type, title, description, resource, tags, and timestamp. Only type is mandatory but these six I would consider as required. No SDK, no runtime, no proprietary lock-in. If you can serve static files you can publish OKF, which is why 11ty is such a natural fit for this.
The problem it's solving is the fragmentation of organisational knowledge across wikis, catalogs, code comments, and shared drives — every AI agent builder is currently solving the same context-assembly problem from scratch. OKF is Google's bid to standardise the format so knowledge produced by one team or tool can be consumed by any agent without translation.
From an SEO angle the resource field is the key hook — it links every concept file back to a canonical URL, which is how an AI citing your bundle traces back to your site. That's the citation and attribution mechanism baked into the spec.
My thoughts on crawlers
Google has been at the forefront of crawling for nearly 30 years. That's a lot of time and experience for the LLM's to catch up on. We have already seen that them making huge mistakes but that is reducing as they learn. HTML is actually reasonably easy to parse and extract the content so why even bother with a standard for this?
At the end of the day my site is small, its not costing me anything to build this other than my time, so I have. It might be useless but its my useless and I will know a lot more about how all this, waves vaguely over the Ai minefields, is evolving.
But creating a load of markdown files to be consumed by agents means they are not reading my text - well they are agents, they don't care. However they may surface my content in front of people when using AI tools to research or answer questions.
What I am doing is Brand building by being everywhere all at once, which is of course impossible, and for my next trick I will turn this wine into a sort of water.
The Google search team, who I respect a lot, are saying that Markdown files are a waste of time, and thats fair, for search results they may be. But its not a waste of my time to experiment with these things so there they are. I might be wasting your time reading this, and I can only apologise
What is needed in your 11ty site
You can build 11ty sites in a multitude of ways. With my setup I create the original content in Markdown files which 11ty uses, with templates, to create fully static html files. If you have ever considered using a Static Site Generator then please do consider 11ty - which is planning to change it's name to Build Awesome at some point in the near future but I understand this should all still work just fine.
Site structure
My 11ty development structure for the OKF files is this:
/src/
└── okf/
├── okf-articles.njk
├── okf-index.njk
└── okf-log.njk
and the output: (I output to a directory named public for neatness but that is essentially the root.)
/okf/
├── index.md
├── log.md
└── articles/
├── [slug].md
└── ...
Slug being the file name. All my articles are created as individual .md files under /okf/articles/ And that is what is deployed.
OKF file structure
There are three files needed:
- okf-index.njk
- okf-articles.njk
- okf-log.njk
okf-index.njk template
This file holds all the information about the other files - it is a list of the markdown files available for the agents.
okf-index.njk template code
---json
{
"permalink": "okf/index.md",
"eleventyExcludeFromCollections": true
}
---
---
type: Index
title: Simon Cox — Technical SEO Knowledge Bundle
description: Technical SEO articles and resources from Simon Cox, freelance Technical SEO consultant with 30+ years experience. Covers technical SEO, schema markup, GEO, 11ty and web standards.
resource: {{ site.url }}
tags: [technical-seo, schema, geo, 11ty, web-standards]
timestamp: {{ page.date.toISOString().split('T')[0] }}
okf_version: "0.1"
---
# Simon Cox — Technical SEO Knowledge Bundle
Articles and resources from Simon Cox, UK-based freelance Technical SEO consultant.
## Articles
{% for post in collections.feed | reverse -%}
- [{{ post.data.title }}]({{ site.url }}/okf/articles/{{ post.fileSlug }}.md)
{% endfor %}
## About
Simon Cox is a UK-based freelance Technical SEO consultant with 30+ years of experience in website management, planning, building and SEO. Operating through Cox and Co Creative, based in Lingfield, Surrey.
[simoncox.com]({{ site.url }}) · [llms.txt]({{ site.url }}llms.txt)
Copy this and create a file /src/okf/okf-index.njk
The post in collections.feed loop populates the list.
The important things to remember are that 11ty will turn a .md file into a html file unless you tell it not to do that, and you do that by specifying a permalink and that will ensure the generated file stays as a .md file. I have also set "eleventyExcludeFromCollections": true to ensure the files are not listed in the sitemap or any of the lists on the site.
The okf_version: frontmatter is an option field for OKF - I have added it in more to remind me what version I am using later on when I have forgotten.
okf-articles.njk template
The articles need the OKF frontmatter and the content. My articles are written in Markdown but the frontmatter is written for 11ty to create the html files, so first I had to also strip out the original frontmatter when 11ty processed the files and that meant an 11ty filter.
11ty filter to strip the frontmatter
To strip the original frontmatter I created the 11ty filter stripFrontmatter and place it in my .eleventy.js file.
eleventyConfig.addFilter("stripFrontmatter", function(content) { return content.replace(/^---[\s\S]*?---\n/, ''); });
And in the okf-articles.njk template file I added the following to include the article content:
{{ post.rawInput | stripFrontmatter | safe }}
The safe ensures there are no html artefacts.
okf-articles.njk template code
---json
{
"pagination": {
"data": "collections.feed",
"size": 1,
"alias": "post"
},
"permalink": "okf/articles/{{ post.fileSlug }}.md",
"eleventyExcludeFromCollections": true
}
---
---
type: Article
title: {{ post.data.title | safe }}
description: {{ post.data.description | safe }}
resource: {{ site.url }}{{ post.url }}
tags: [{% for tag in post.data.tags %}{{ tag }}{% if not loop.last %}, {% endif %}{% endfor %}]
timestamp: {{ (post.data.dateUpdated or post.date).toISOString().split('T')[0] }}
---
{{ post.rawInput | stripFrontmatter | safe }}
[Read full article]({{ site.url }}{{ post.url }})
Copy this and create a file /src/okf/okf-articles.njk
okf-log.njk template
The log file is really just for my testing but here it is anyway:
okf-log.njk template code
---json
{
"permalink": "okf/log.md",
"eleventyExcludeFromCollections": true
}
---
---
type: Log
title: Simon Cox Knowledge Bundle — Update Log
description: Chronological history of updates to this OKF bundle. Auto-generated at build time.
timestamp: {{ page.date.toISOString().split('T')[0] }}
---
# Update Log
This log is auto-generated at build time. The bundle is rebuilt on every simoncox.com deployment.
## {{ page.date.toISOString().split('T')[0] }}
- Bundle regenerated — {{ collections.feed | length }} articles indexed
- Source: [simoncox.com]({{ site.url }})
Copy this and create a file /src/okf/okf-log.njk if you feel you need it.
Discovery for OKF
It is all very well deploying these files but if they cannot be found then they are not doing anything useful which is why they need to be discovered.
llms.txt reference
I have placed a reference to the OKF bundle in the llms.txt file:
## OKF Knowledge Bundle
- [Knowledge Bundle Index](https://www.simoncox.com/okf/index.md)
Robots.txt
To help things along I have added the following line in my robots.txt
User-agent: *
Allow: /okf/
Some crawlers might use the robots.txt file for discovery so this will help them on their way.
Meta Link
There is no documentation for this yet but I have created a couple of links in the head to aid discovery.
<link rel="okf" type="text/markdown" href="https://www.simoncox.com/okf/index.md">
<link rel="knowledge-bundle" type="text/markdown" href="https://www.simoncox.com/okf/index.md">
I had no idea if this would work but on the basis that if it doesn't it's not causing any harm I implemented it. Within a short period I got this in my spreadsheet tracking:
| Timestamp | Path | User Agent | Country | Referer | Bot Type |
|---|---|---|---|---|---|
| 2026-06-17T11:26:27.243Z | /okf/index.md | OAI-SearchBot/1.4 | US | /short-articles/2023-05-15-cloudflare-pages-error-with-11ty-build/ | OpenAI SearchBot |
Tracking
My site is hosted on Cloudflare Pages and I wanted to have some tracking on these files. I use Fathom Analytics for the site but cannot run the javascript on these plain.md files. There are Metrics, available in the AI Crawl control section of Cloudflare, but I wanted to extend that so have built a tracking solution using the Cloudflare Analytics Engine binding, a Pages Function that intercepts /okf/* requests and logs to Google Sheets via Apps Script.
I might find time to write that up at some point as it can be useful. The advantage this has over the Cloudflare analytics is that I have included a referring field and that has already revealed the meta link tag is being read - which was a bit of a surprise.
Is my site going to get more traffic or reach the number one slot in search using this?
Probably not. Highly unlikely to make any difference to ranking in Google search as has been alluded to in the Search Off the Record Podcast with Martin Splitt, John Mueller. But, the Google Cloud team have published this standard and my take is the Search Team are, rightly, playing it down else it's going to be the next gold rush – with most people not getting anything. The Cloud team have decided to publish this so lets see what happens.
What I am watching for
While I'm testing this to see what happens i am also checking regularly to see where the bots come from, who they are, what type of bots they are and what they read. I have no expectations at this point in time! Please do check back for updates.
Thanks
This article was prompted by a fabulous article that Suganthan Mohanadasan and the tool he built that allows you to put together your own OKF files very quickly.
I'm going to thank Chris Green too as he has been posting his usual insightful thoughts on this subject.
The Google Cloud Github which has their working code base for OKF and may help you with your implementation.
Previous post: Measuring the effectiveness of your redirects

