Commit e624aaa
authored
Add llms.txt implementation for improved AI/LLM visibility (#16656)
* feat: Add llms.txt implementation for AI/LLM consumption
Implement llms.txt standard to improve Pulumi's visibility in AI-generated content and responses.
Changes:
- Add static llms.txt file with curated Pulumi documentation structure
- Configure Hugo to generate llms.txt dynamically via new output format
- Create Hugo template for future dynamic llms.txt generation
- Add AI bot tracking JavaScript to measure experiment effectiveness
- Update AGENTS.md with llms.txt guidance for AI assistants
- Track known AI bots: ClaudeBot, Amazonbot, ChatGPT-User, OAI-SearchBot, PerplexityBot
The blockquote summary uses Pulumi's Entry Segment Messaging emphasizing:
- Real programming languages vs YAML
- IDE support, type safety, automated testing
- Multi-cloud support (AWS, Azure, GCP, Kubernetes, 150+ providers)
- 3x faster deployment with 90% fewer configuration errors
Bot detection based on actual traffic data from pulumi.com analytics.
* fix: Remove specific metrics claim from llms.txt blockquote
Remove '3x faster with 90% fewer configuration errors' from the blockquote
summary to keep the messaging focused on core value propositions rather
than specific metrics.
* fix: Address PR review feedback for llms.txt implementation
- Add trailing newlines to all new files (llms.txt, index.llmstxt.txt, ai-bot-tracking.js)
- Clarify AGENTS.md documentation: .md URLs are a future enhancement, not currently implemented
- Remove Hugo template comment that was generating unwanted blank line in output
- Add clarification to JavaScript that bot detection is supplemental client-side tracking
(primary measurement is via server-side access logs)
These changes address all required fixes from the documentation review
and improve code clarity per reviewer suggestions.
* feat: Address sicarul's feedback on llms.txt implementation
Based on PR review feedback:
1. Move blog content out of 'Optional' section
- Created new 'Blog & Resources' section with higher priority
- Blog posts are valuable for LLMs to understand recent features and best practices
- Case studies remain with blog as related resources
2. Clarify JavaScript/HTML separation
- Added clear comments explaining ai-bot-tracking.js is ONLY for HTML pages
- Emphasized that JavaScript does NOT interact with llms.txt file
- llms.txt is served as plain text, completely separate from website JS
3. Improve blog template visibility
- Added example blog posts to static llms.txt to show intended output
- Added comment explaining Hugo dynamically generates blog posts
- Template filters for high-value posts (IaC, Terraform, Kubernetes topics)
These changes address confusion about file purposes and improve content organization.
* Simplify llms.txt implementation
- Remove AI bot tracking JavaScript entirely
- Remove script reference from assets.html
- Simplify Hugo template by removing complex blog post generation logic
- Update static llms.txt to match simplified structure
- Keep blog section as simple link without specific posts
This addresses PR review feedback about unnecessary complexity and confusion around the JavaScript tracking
* Simplify llms.txt structure
- Merge Tutorials & Examples and Blog & Resources into unified Resources section
- Remove Optional section (What Is Pulumi?, Community)
- Remove CrossGuard reference from IaC section
- Rename Hugo template from index.llmstxt.txt to index.llms.txt
- Update output format name from LLMSTXT to llms in config1 parent 2a97d39 commit e624aaa
File tree
5 files changed
+160
-0
lines changed- config/_default
- layouts
- partials
- static
5 files changed
+160
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
13 | 33 | | |
14 | 34 | | |
15 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
36 | 41 | | |
37 | 42 | | |
38 | 43 | | |
| |||
43 | 48 | | |
44 | 49 | | |
45 | 50 | | |
| 51 | + | |
46 | 52 | | |
47 | 53 | | |
48 | 54 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
15 | 16 | | |
16 | 17 | | |
17 | 18 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
0 commit comments