Skip to content

Basic agent-readiness changes#1228

Merged
sbddesign merged 10 commits intomasterfrom
feature/robots-txt
Apr 21, 2026
Merged

Basic agent-readiness changes#1228
sbddesign merged 10 commits intomasterfrom
feature/robots-txt

Conversation

@GBKS
Copy link
Copy Markdown
Contributor

@GBKS GBKS commented Apr 20, 2026

Cloudflare posted a tool to evaluate if your site is set up so AI agents can interact with it smoothly. This requires various instruction files/tags/header/settings that agents look for. I can bitcoin.design and it performs pretty poorly with a 17/100.

image

Good thing Cloudflare also created a bunch of skills to fix things, along with prompts to use them. So I just went into Visual Studio Code and had Copilot work on those. For example:

image

I ran five of these, each in a separate commit:

  • Add a robots.txt (very basic instruction file for agents for files to check and stay away from)
  • Add link headers (points agents to search/API endpoints)
  • Add markdown output (agent can request markdown instead of HTML - definitely need to verify this works well)
  • Add AI-specific (Gemini, Claude...) indicators to robots.txt
  • Add content signals (tells AI that it can use the content for search, training and input)

Those are the ones the test pointed out that should be done. I am sure this is just a first step and that there will be more detailed feedback once the changes are live. We should test these changes both in the Cloudflare tool again, but also reference the guide in our own project-related prompts to see if the agents can access and use the content with ease.

I am not a pro on these agent settings, so I'd appreciate reviews. Let's start with having Copilot evaluate this PR and see what it comes up with.

GBKS added 6 commits April 20, 2026 08:52
This was created with the Cloudflare AI skill for robots.txt files. See this AI readiness evaluation of the guide for more: https://isitagentready.com/bitcoin.design?profile=content
Per the Cloudflare AI readiness evaluation: https://isitagentready.com/bitcoin.design?profile=content

It took the search.json file that indexes the site content as an API catalog to serve to robots. Let's try this out. My suspicions is that the file may be too big to be ingested easily.
Allows agents to request markdown instead of HTML.
All set to yes, so AI can freely use the content for training, search, and input.
Added content signal to netlify.
@GBKS GBKS self-assigned this Apr 20, 2026
@GBKS GBKS added the Enhancement New feature or request label Apr 20, 2026
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 20, 2026

Deploy Preview for bitcoin-design-site ready!

Name Link
🔨 Latest commit 7aeedd6
🔍 Latest deploy log https://app.netlify.com/projects/bitcoin-design-site/deploys/69e5db7c54fbc3000847d002
😎 Deploy Preview https://deploy-preview-1228--bitcoin-design-site.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to improve “agent readiness” for bitcoin.design by adding standard discovery/config signals for crawlers/agents and enabling Markdown content negotiation.

Changes:

  • Adds a robots.txt with allow/deny rules, sitemap pointer, and an AI-related content signal.
  • Adds Netlify response headers (Content-Signal, discovery Link headers) and registers an Edge Function.
  • Introduces .well-known discovery resources (service-desc.json and an api-catalog linkset), plus an Edge Function that converts HTML to Markdown when requested.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
robots.txt Adds crawler rules, sitemap reference, and a content-signal directive.
netlify/edge-functions/markdown-negotiation.ts Adds an Edge Function to return Markdown when Accept: text/markdown is present.
netlify.toml Configures headers (Content-Signal, Link discovery, api-catalog Content-Type) and enables the Edge Function for all paths.
.well-known/service-desc.json Adds a service descriptor for machine clients.
.well-known/api-catalog Adds an API catalog linkset document for discovery.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread robots.txt Outdated
GBKS and others added 4 commits April 20, 2026 09:31
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
When run on Netlify preview, the function to serve the markdown content threw an error because it couldn't find a DOM parsing library it expected to exist.
The deployed Edge function still crashes. Probably related to this dependency.
@GBKS
Copy link
Copy Markdown
Contributor Author

GBKS commented Apr 20, 2026

That looks better:

image

@Aditya-Sarna
Copy link
Copy Markdown

@GBKS

I’m not entirely sure about this, but I am just thinking out loud about whether an MCP server could make sense for us in the long run.Right now, it feels like overkill since we don’t have enough dynamic data or actionable workflows, most of what we have is still static content.However, with the recent SOB project, if we start structuring things as skill files and design code samples, this could evolve into something more interesting. In that setup, an LLM could take a task along with a reference link to the website , retrieve the relevant design knowledge, and reason over it,which is fairly standard (and something that already happens ).Where this could become more powerful is if we also expose functions that generate components (like buttons, headers, layouts) in a consistent way.
Instead of the model abstractly inferring that “there should be an icon and some defined structure...” it could call specific functions that produce those components with predefined behavior and styling. This would ensure that outputs are not just conceptually correct, but also consistent and aligned with a design system.Combined with skill files,which users can modify based on their preferences, this could create multiple pathways for users to arrive at the same outcome: one through flexible reasoning with just skill files and another through more precise, tool-driven generation via MCP.
So while MCP may not make sense right now, it feels like something worth exploring if we move towards a more system driven setup . Let me know what you make of it !

@GBKS
Copy link
Copy Markdown
Contributor Author

GBKS commented Apr 20, 2026

@Aditya-Sarna that seems like a better discussion for the Discord channel than this PR. This PR only focuses on some basic instructions for web-scraping by agents. MCP, skills, etc are a totally different story. If you look at the options the Cloudflare tester provides, you can see how they split that up.

image

@Aditya-Sarna
Copy link
Copy Markdown

@GBKS Sure ! I will move the conversation to discord .

@matbalez
Copy link
Copy Markdown
Contributor

nice one christoph! thanks for doing that.

Copy link
Copy Markdown
Collaborator

@sbddesign sbddesign left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tl;dr - Approved because it's an improvement over what was there before. It satisfies the original problem of "make this Cloudflare dial become green instead of red", and my OpenClaw says it's better.

Future improvements

  • Update the markdown-negotiation.ts file to deliver cleaner output. Run curl -H 'Accept: text/markdown' https://deploy-preview-1228--bitcoin-design-site.netlify.app and you will see exactly what an agent sees when it visits now. Has a bunch of messy stuff like header nav stuff that's irrelevant for the agent. Could also provide better overall description of "this is what you are looking at and why it might be useful for you or the user".
  • llms.txt is a nice convention to have, but not strictly required

How I tested

I went back and forth with BOLTy, my OpenClaw at ATL BitLab. I ask for his blunt assessment of his experience using the live site vs. the deploy preview.

BOLTy's Review

Blunt truth: the updated site is noticeably better for me as an agent.

The biggest improvement is that the updated version exposes a much richer, more machine-readable content map. I can immediately see site hierarchy, guide sections, deep links, and content organization without guessing.

Why the updated version feels better

1. Much better navigational clarity

The updated version exposes a large portion of the site's structure directly in the extracted output.

That makes it easier for an agent to understand:

  • what content exists
  • how it is organized
  • where to go next

2. Better deep-link discoverability

The preview exposes many specific links into the guide, including detailed topics like:

  • privacy
  • coin selection
  • silent payments
  • sign in with bitcoin
  • custom spending conditions
  • wallet selector
  • accessibility

That is much better than just seeing a short homepage summary.

3. Absolute links are helpful

The preview returns many fully-qualified URLs, which is useful for tooling and agent navigation.

4. More content, less guessing

The original homepage mostly came through as concise human-facing marketing copy.

The updated preview came through as something closer to a combined homepage + sitemap + guide index. For an agent, that is usually more useful.

Important caveat

Part of the improvement may be due to how the preview is rendered to fetch tools, not only because the site itself is inherently better.

The original page was extracted more like a traditional readability view.
The preview came back as markdown with much more visible structure.

So the real conclusion is:

  • Yes, the updated version is more agent-friendly
  • but some of that may come from how the content pipeline exposes structure to extraction tools

What looked noisy or weak in the updated extraction

These items stood out in the extracted representation:

  • Link
  • Search
  • Menu
  • Expand
  • Document
  • Video
  • large blank spacing / repeated UI artifacts
  • Header design by Author

This feedback is specifically about the processed output from the fetch/extraction tool, not a claim about what a human sees visually in the browser.

Clarification on that point

I was not judging those items from a raw HTML source dump.

I was judging them from the processed output of OpenClaw's web_fetch tool, which returns a readable markdown/text extraction of the page.

So when I say those labels looked noisy, I mean:

  • they appeared prominently in the extracted representation an agent would consume
  • they may be UI chrome leaking into the content layer
  • they can dilute the signal for agent-style reading

Honest overall assessment

The updated version is a real improvement for agents, mainly because it gives me:

  • better structure
  • better discoverability
  • better direct access to deep content

But it is not perfectly clean yet.

The main remaining issue is that the extracted output still mixes valuable content with interface scaffolding and repeated navigation noise.

Recommendations

If the goal is to make the site genuinely more agent-friendly, these would help:

  1. Add a dedicated /llms.txt
  2. Provide an explicit agent-oriented site index or content map
  3. Keep core content prioritized above nav/UI chrome in extracted output
  4. Reduce repeated interface labels that appear in text extraction
  5. Replace weak placeholders like Author with meaningful metadata
  6. Consider whether the full nav tree needs to appear so prominently in page extraction

@sbddesign sbddesign merged commit 9c55bae into master Apr 21, 2026
4 checks passed
@GBKS
Copy link
Copy Markdown
Contributor Author

GBKS commented Apr 21, 2026

Thanks for the thorough review, Stephen and BOLTy.

Seems like we could do with a small follow-up PR to tweak the HTML-to-markdown parsing. Basically, agents can request a markdown version of each page. In that case, a small script runs to take the HTML and convert it to markdown. And it creates slightly messy output still. Easiest is probably to take some of that output and ask AI to improve it.

@GBKS GBKS deleted the feature/robots-txt branch April 21, 2026 12:53
@sbddesign
Copy link
Copy Markdown
Collaborator

Yeah that's what I had in mind.

A good next PR might be: clean up the markdown output to remove unneeded information such as navigational elements.

A PR after that might be: make each page more relevant. For example, when an agent lands on the homepage, it mostly sees walls of links. It might be better to surface content at the top of the document like: "This is a collection of UX guidance for bitcoin applications, curated by a community of people interested in bitcoin and UX. It includes breakdown of bitcoin product designs for different use cases that are open sourced for your use, such as a daily spending wallet and a multi-sig vault. There are also articles describing different technologies within bitcoin from a UX perspective..."

Or whatever you want the agent to hone in on. Similar to how every page has an SEO meta description, each page might have an agent guidance blurb in the content files that gets injected into the markdown.

@GBKS
Copy link
Copy Markdown
Contributor Author

GBKS commented Apr 21, 2026

Didn't Google always penalize serving different content to different types of visitors?

@sbddesign
Copy link
Copy Markdown
Collaborator

Didn't Google always penalize serving different content to different types of visitors?

Maybe? But this is a little bit different. If I make an HTTP request to your web server, the person in the U.S. and the person in Canada should get the same content. But this is a case where one client is requesting something in HTML and the other one is requesting something in Markdown. So that implies to me that the client wants slightly different content.

What I'm talking about isn't vastly different content. I'm just talking about having text that's more helpful and contextual. But perhaps what I'm talking about should live in an llms.txt file.

On a related note, I think the whole field of SEO is kind of in disarray right now. Digital marketers that are trying to grow brands are faced with the challenge that website traffic that used to be coming from Google five years ago is now coming predominantly from platforms like Claude and ChatGPT. Unlike with SEO, where there were a lot of commonly understood patterns, the LLMs seem to be kind of a black box. Armies of digital marketers are performing rain dances, giving burnt offerings, and chanting arcane incantations that they hope will appease the LLMs into promoting their content.

@GBKS
Copy link
Copy Markdown
Contributor Author

GBKS commented Apr 22, 2026

@sbddesign I created #1229 to improve the markdown. How does BOLTy like it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants