WEBVTT

NOTE Sentence-level transcript of https://www.youtube.com/watch?v=V_5bn4q-vAI

NOTE One cue per sentence. Cue ids are the line anchors on /transcripts/V_5bn4q-vAI.html. A cue ends where the next begins, or 2 s after its last word.

s1
00:00:01.309 --> 00:00:03.309
[music]

s2
00:00:12.640 --> 00:00:22.560
The talk title, we'll see if it lines up by the end of it, but when we put this talk title in just to be honest with you, so much changes in like

s3
00:00:22.560 --> 00:00:24.160
3 days at this point.

s4
00:00:24.160 --> 00:00:25.680
We'll see how it goes.

s5
00:00:25.680 --> 00:00:37.040
So, yeah, the whole point of it was that how I got LLMs to understand my open source library and what I did to do it well.

s6
00:00:37.040 --> 00:00:39.200
Is it some kind of scientific background?

s7
00:00:39.200 --> 00:00:40.760
Am I from a lab?

s8
00:00:40.760 --> 00:00:46.040
No. That's My slidey clicky thing's not working.

s9
00:00:46.040 --> 00:00:49.760
So, I just like to say again, I'm just like you.

s10
00:00:49.760 --> 00:00:52.000
I'm just this side of the stage.

s11
00:00:52.000 --> 00:00:59.880
I've just hacking hacking it together, figuring out what is useful, what is token efficient, these kind of things.

s12
00:00:59.880 --> 00:01:02.200
And again, I am British.

s13
00:01:02.200 --> 00:01:06.080
Please don't think my accent makes me an expert.

s14
00:01:07.240 --> 00:01:10.600
So, for quick contacts, I'm Christopher Burns.

s15
00:01:10.600 --> 00:01:11.960
I'm the founder of Inth.

s16
00:01:11.960 --> 00:01:16.840
I created a open source cookie banner library called C15T.

s17
00:01:16.840 --> 00:01:19.320
That really annoying thing on the internet.

s18
00:01:19.320 --> 00:01:20.840
That is me.

s19
00:01:20.840 --> 00:01:27.320
Uh I spoke at Next Conf uh after it started taking off and it had 1.2 thousand downloads at the time.

s20
00:01:27.320 --> 00:01:29.560
Now it's closer to 2 million.

s21
00:01:29.560 --> 00:01:34.680
In terms of like statistics, so we just checked that, you know, this is not theoretical.

s22
00:01:34.680 --> 00:01:39.240
This is actual uh something that is succeeding.

s23
00:01:39.240 --> 00:01:41.920
We have 3 million NPM downloads.

s24
00:01:41.920 --> 00:01:46.400
4.5 uh 4.5 45% month-on-month growth.

s25
00:01:46.400 --> 00:01:54.160
2.8 thousand websites using it in production from Minify to Z to Inphysical.

s26
00:01:54.160 --> 00:02:04.800
And the whole concept of this talk was uh it goes back to we were doing all these things to make our library more efficient.

s27
00:02:04.800 --> 00:02:08.960
You know, we were batting upwards compared to every other tool.

s28
00:02:08.960 --> 00:02:11.840
Every other tool was built for marketers and lawyers.

s29
00:02:11.840 --> 00:02:13.760
We were built for the developer.

s30
00:02:13.760 --> 00:02:17.800
So, we had to make sure we had a very good developer experience.

s31
00:02:17.800 --> 00:02:22.160
And we had an onboarding format said, "How did you hear about this?"

s32
00:02:22.160 --> 00:02:39.959
And we started to get spikes that from April 13th, you know, now it is our number one source of inbound is Claude, ChatGPT, Codex, that is ChatGPT, Gemini recommending us.

s33
00:02:39.959 --> 00:02:43.680
And I like to think of this as, you know, the iceberg.

s34
00:02:43.680 --> 00:02:56.640
You know, we start with the top of C15T and there's many many tools that go into it from, you know, LLMs.txt to site maps to RSS feeds to robot.txts.

s35
00:02:56.640 --> 00:03:03.920
So many micro optimizations that you can do from old methods of running the internet to new methods.

s36
00:03:03.920 --> 00:03:10.840
And uh how many of you have, you know, made these kind of tools?

s37
00:03:10.840 --> 00:03:20.200
How many of you have, really put simply, said, "Hey, agents, we need to this to be done."

s38
00:03:20.200 --> 00:03:24.440
And yeah, it said, "We should install this library."

s39
00:03:24.440 --> 00:03:26.000
And you've gone, "Okay."

s40
00:03:26.000 --> 00:03:26.680
Raise your hands.

s41
00:03:26.680 --> 00:03:29.480
How many people have done this?

s42
00:03:29.560 --> 00:03:32.160
Pretty much most people.

s43
00:03:32.280 --> 00:03:34.680
That's a lot of hands.

s44
00:03:34.680 --> 00:03:41.840
So, what's really funny is that we went from wizards installing our software to agents installing them.

s45
00:03:41.840 --> 00:03:45.360
And I just went through Y Combinator.

s46
00:03:45.360 --> 00:03:50.200
And what's really interesting is it if you know who these two people are.

s47
00:03:50.200 --> 00:03:59.360
These are the co-founders of Stripe, the Collison brothers, and they had a really classic saying of like a Collison brothers install.

s48
00:03:59.360 --> 00:04:03.200
And they would hand you their laptop, and they would install Stripe.

s49
00:04:03.200 --> 00:04:06.600
These days, it's kind of like just a prompt.

s50
00:04:06.600 --> 00:04:10.280
Being in Y Combinator, we just give people a prompt.

s51
00:04:10.280 --> 00:04:20.079
And really what that means is that our very good developer experience primitives are now hitting agent primitives.

s52
00:04:20.359 --> 00:04:28.200
So, as we was pulling all these things together, there is no one tool that fixes everything.

s53
00:04:28.200 --> 00:04:32.360
I like to think about these problems like, you know, Batman's utility belt.

s54
00:04:32.360 --> 00:04:38.360
Loads of really small things targeted in different areas to get it done.

s55
00:04:38.360 --> 00:04:47.520
And we built all of these things into C15T because we wanted C15T to be the best developer framework in this tool.

s56
00:04:47.520 --> 00:04:49.160
Think of it like Stripe Docs.

s57
00:04:49.160 --> 00:05:01.480
And as we was building more and more tools, more and more documentation websites, we actually started abstracting these tools into a side quest that we call Lead Type.

s58
00:05:01.480 --> 00:05:10.640
So, all of the things that we're going to talk about now are things that we have already solved with this open source framework.

s59
00:05:10.640 --> 00:05:19.760
We have our friends at other developer companies implementing it and seeing similar results about how to like optimize for the agent experience.

s60
00:05:19.760 --> 00:05:23.520
So, again, this isn't a magic SEO tool.

s61
00:05:23.520 --> 00:05:30.560
It's actually a very non-sexy title, but a framework-neutral docs pipeline.

s62
00:05:30.560 --> 00:05:32.120
Complex.

s63
00:05:32.120 --> 00:05:45.520
But really, all it basically does is take your .mdx files, you run Lead Type generate, and it will spit out everything for um optimized agent experience for your websites.

s64
00:05:45.680 --> 00:05:57.040
And the rest of this talk is going to look a bit like a BuzzFeed list, to put simply, of these problems, because again, not everybody knows even how to put an LLM.txt

s65
00:05:57.040 --> 00:05:58.240
on their website.

s66
00:05:58.240 --> 00:06:10.240
So, you know, that comes to the first problem of if your docs have hundreds of pages, and how can it navigate them to find the right questions?

s67
00:06:10.640 --> 00:06:14.000
The first solution is obviously an LLM.txt.

s68
00:06:14.000 --> 00:06:20.080
What we found in our research is that it's much better not to just generate this.

s69
00:06:20.080 --> 00:06:24.760
It is much better to write your LLM.txt from hand.

s70
00:06:24.760 --> 00:06:33.240
Obviously, AutoRaptor, but write it as you are trying to get the answers across to the LLMs.

s71
00:06:33.240 --> 00:06:39.680
For about 40 good lines beats 1,000 lines of noise from our testing.

s72
00:06:39.680 --> 00:06:44.560
And that comes to the second issue of agents don't know how to browse.

s73
00:06:44.560 --> 00:06:46.919
They know how to fetch.

s74
00:06:46.919 --> 00:06:51.480
So, you then need the second part of the solution of the LLMs full.

s75
00:06:51.480 --> 00:07:03.960
Again, think of this as a sitemap, where it takes the actual page and the links and a short description of what each page is for the LLMs to reference.

s76
00:07:03.960 --> 00:07:07.480
Again, most people have heard these two solutions.

s77
00:07:07.480 --> 00:07:19.000
But, where things are starting to get very complicated and we're seeing a lot of optimizations right now, is that HTML is expensive, and why can't we just ship markdown

s78
00:07:19.000 --> 00:07:20.720
to the agents?

s79
00:07:20.720 --> 00:07:22.840
And we can.

s80
00:07:22.840 --> 00:07:28.480
And you've seen that everybody has started creating twin MDs.

s81
00:07:28.480 --> 00:07:37.120
So, that's taking the normal website, such as Next.js quick start, and then having a dot MD on the end of it.

s82
00:07:37.120 --> 00:07:48.880
And when you load that, it goes to the markdown But, what's really important here, and it's really worth noting, is this line at the bottom.

s83
00:07:48.880 --> 00:07:56.480
If you look at all the best documentation websites, Minify, Vercel, C15T, pat myself on the back.

s84
00:07:56.480 --> 00:07:59.520
Um they all have this in the header.

s85
00:07:59.520 --> 00:08:08.160
This is saying to the agents whenever they visit the website that there is an alternative version of this in mark markdown.

s86
00:08:08.160 --> 00:08:11.000
Again, who actually supports it?

s87
00:08:11.000 --> 00:08:12.200
Don't ask me.

s88
00:08:12.200 --> 00:08:17.160
Perplexity, some of the agents, it's all up in the air.

s89
00:08:17.160 --> 00:08:28.520
And then, the second thing as well is that taking the .mds, you need to make sure that they're available through multiple methods.

s90
00:08:28.520 --> 00:08:34.919
So, one of them is like the .md, so as you like copy it to an agent, you say .md.

s91
00:08:34.919 --> 00:08:50.080
Another one is just taking the normal um link and then adding a uh redirect into your like your Next.js config, so that if it detects an agent has the header of accepting markdown,

s92
00:08:50.080 --> 00:08:55.280
instead of returning the HTML, it will return the markdown.

s93
00:08:55.280 --> 00:09:00.400
And then, the third one is that not all agents can append header tags.

s94
00:09:00.400 --> 00:09:06.160
So, there's also a URL query of mode equals agent.

s95
00:09:06.440 --> 00:09:10.720
So, they're the ones that pretty much everybody knows.

s96
00:09:10.720 --> 00:09:14.400
Um and it's pretty basic internet knowledge at this point.

s97
00:09:14.400 --> 00:09:20.120
Um but one of the really interesting ones is where we're going next.

s98
00:09:20.120 --> 00:09:28.200
And our tooling is also helping this is that an agent can't ask your website anything.

s99
00:09:28.320 --> 00:09:31.480
So, we need to think about the web MCP.

s100
00:09:31.480 --> 00:09:41.640
And this is still very early, but our tool is already uh um exposing three different tools to WebMCP.

s101
00:09:41.640 --> 00:09:45.320
Search docs, get pages, and ask docs.

s102
00:09:45.320 --> 00:09:54.200
Again, um our library lead type is pulling all of that context together so an agent can easily ask it the right questions.

s103
00:09:54.200 --> 00:10:03.520
I think we'll even see a future where communication happens over email and there's companies in San Francisco building that today.

s104
00:10:04.360 --> 00:10:19.200
But this is actually the most interesting one and I think the most important one that anybody who has any type of developer module surface, NPM modules, cargo, Python, whatever.

s105
00:10:19.200 --> 00:10:27.920
Is that the uncomfortable truth is that coding agents are actually never visiting the website if you have a library.

s106
00:10:27.920 --> 00:10:31.400
They're actually visiting the node modules.

s107
00:10:31.400 --> 00:10:35.120
They read the repo and they read the node modules.

s108
00:10:35.120 --> 00:10:46.400
They They have previous stale training data and they're trying to work it out on what it can do from the the compiled source.

s109
00:10:46.400 --> 00:11:00.720
So, again, following what people like Vercel are doing and people who are thought leaders in this industry is that we take the bundled markdown documents and then we also

s110
00:11:00.720 --> 00:11:07.320
put them in the node modules with an agents.md file.

s111
00:11:07.320 --> 00:11:14.440
And the agents.md file basically says, "If you've got a problem, if you've got a question, all the documents are here.

s112
00:11:14.440 --> 00:11:16.160
Grab them."

s113
00:11:16.160 --> 00:11:22.080
And we actually see that this has surprisingly real effects.

s114
00:11:22.080 --> 00:11:35.640
We can see that between many different models almost 50% token saving on instead of trying to search the web, find the right tools, pulling the markdown files from your code base.

s115
00:11:35.640 --> 00:11:44.960
So, if you have a library that's forever changing, then having the node modules built in is a very effective solution.

s116
00:11:44.960 --> 00:11:54.520
This is also working without any skills, but if you want as well, you can add skills to it to say, "Look at the node modules and go from that."

s117
00:11:54.560 --> 00:12:05.560
And again, just uh doubling down into this point, looking at like the agents.ai and DFile, you can say like when working with Z15 T Next.js library, read the bundles

s118
00:12:05.560 --> 00:12:11.280
and verify that they match and go from there.

s119
00:12:11.280 --> 00:12:16.480
So, that's really like how we've done it.

s120
00:12:16.480 --> 00:12:21.080
I don't want to say this is like prescriptive, that I know the answers.

s121
00:12:21.080 --> 00:12:31.040
If you have documentation websites, or if you have any type of markdown, if you're running your own blog, you know, I've been using our package as well on our marketing website.

s122
00:12:31.040 --> 00:12:35.320
Every part of our marketing website also has a markdown file.

s123
00:12:35.320 --> 00:12:37.880
It can be something that's used for many things.

s124
00:12:37.880 --> 00:12:43.200
We're currently just um most people are just using it for documentation.

s125
00:12:43.200 --> 00:12:48.000
But, you can literally run it and it will pull out all of these extra files.

s126
00:12:48.000 --> 00:13:01.680
And one of the big things was when I put this talk together, you know, we were seeing the results that Claude was recommending, but there was not really any like test suites yet, or test harnesses,

s127
00:13:01.680 --> 00:13:04.280
on like is your site agent ready?

s128
00:13:04.280 --> 00:13:07.440
And Cloudflare brought one of them out.

s129
00:13:07.440 --> 00:13:12.680
But, my favorite is actually one called Aura AI.

s130
00:13:12.680 --> 00:13:17.120
Um this is brand new and it tests a lot.

s131
00:13:17.120 --> 00:13:22.200
I'm happy to show off score of 59 because it's constantly changing.

s132
00:13:22.200 --> 00:13:24.320
3 weeks ago, it was a lot higher.

s133
00:13:24.320 --> 00:13:27.760
And again, this is a forever changing area.

s134
00:13:27.760 --> 00:13:33.040
So, aura.ai, put in your website, and it will start giving you recommendations.

s135
00:13:33.040 --> 00:13:34.440
It's forever changing.

s136
00:13:34.440 --> 00:13:37.080
Again, we can just stay on top of it.

s137
00:13:37.080 --> 00:13:47.680
And yeah, this is like one of my final slides is that the slide the the market agents, LLMs, everything is forever changing.

s138
00:13:47.680 --> 00:13:50.040
There is no such thing as perfection.

s139
00:13:50.040 --> 00:14:00.040
When I started making these slides, I got so caught up of like, everyone expects me to be the expert here, but I've just been hacking on this problem a little more than you guys have so far.

s140
00:14:00.040 --> 00:14:02.840
So, never get caught with being perfect.

s141
00:14:02.840 --> 00:14:06.960
Every small little increase really does matter.

s142
00:14:06.960 --> 00:14:11.240
Every small little thing you add really does matter.

s143
00:14:11.240 --> 00:14:12.280
Thank you so much.

s144
00:14:12.280 --> 00:14:16.749
You can find me on X, Burn Chris, and LinkedIn, and everywhere.

s145
00:14:16.749 --> 00:14:17.400
[applause]

s146
00:14:17.400 --> 00:14:19.400
WOO!

s147
00:14:19.400 --> 00:14:24.360
I THINK I THINK WE HAVE TIME for one or two questions.

s148
00:14:24.360 --> 00:14:26.640
Yeah, of course.

s149
00:14:32.400 --> 00:14:36.600
So, if you were building um uh we're a website agency.

s150
00:14:36.600 --> 00:14:39.800
We work with a lot of startups building like their own websites.

s151
00:14:39.800 --> 00:14:40.240
Mhm.

s152
00:14:40.240 --> 00:14:49.800
If you were just building a website, not necessarily like developer tool, but just a website to be found, which of these methods like would you concentrate on if you're starting from scratch?

s153
00:14:49.800 --> 00:15:00.680
Yeah, I think the most important ones, and we're starting to see this more and more, is trying to provide a dot md file for every single page.

s154
00:15:00.680 --> 00:15:03.400
A lot of CMSs are not built in this way.

s155
00:15:03.400 --> 00:15:16.800
Um and we see this optimization happening more and more where I didn't put in the slide, but we're seeing more and more websites being visited by agents instead of real humans.

s156
00:15:16.800 --> 00:15:25.200
So, in terms of even like trying to be proactive and token efficient, you should provide a markdown file if you can.

s157
00:15:25.200 --> 00:15:28.800
Again, a lot of CMS's are not built this way.

s158
00:15:28.800 --> 00:15:31.160
I actually built my own CMS.

s159
00:15:31.160 --> 00:15:35.240
My name is Chris and I built ChrisCMS, short for Christmas.

s160
00:15:35.240 --> 00:15:38.400
It's a whole It's a whole thing my team wishes I never built.

s161
00:15:38.400 --> 00:15:43.400
But, it does work and it does bring this like token efficiency up.

s162
00:15:43.400 --> 00:15:49.000
So, yeah, I would say llms.txt is your first shout.

s163
00:15:49.000 --> 00:15:52.880
llms.txt full form .txt.

s164
00:15:52.880 --> 00:15:56.880
Second, if you if you can, just do them manually.

s165
00:15:56.880 --> 00:16:03.480
Say you're not even working on systems that have markdown, I still recommend them.

s166
00:16:03.480 --> 00:16:11.680
But, you can always get creative with creating these files on the on on the go.
