Skip to content

Conversation

@asafashirov
Copy link
Contributor

@asafashirov asafashirov commented Nov 24, 2025

This PR implements the llms.txt standard to improve Pulumi's visibility and inclusion in AI-generated summaries and responses.

The llms.txt file provides a structured, markdown-based index of Pulumi's documentation that LLMs can efficiently consume within their context windows. This follows the proposed standard from llmstxt.org that's gaining adoption for making websites more AI-friendly.

Key changes:

  • Added static llms.txt file at /static/llms.txt with hierarchical documentation structure
  • Configured Hugo to support dynamic llms.txt generation via new LLMSTXT output format
  • Created Hugo template for future dynamic content generation from site structure
  • Implemented AI bot tracking JavaScript to measure experiment effectiveness
  • Updated AGENTS.md to document the llms.txt standard for AI assistants

The blockquote summary uses messaging from Pulumi's Entry Segment document, emphasizing real programming languages vs YAML, IDE support, type safety, and multi-cloud capabilities.

Bot detection is based on actual traffic data from pulumi.com analytics, tracking known AI crawlers like ClaudeBot, ChatGPT-User, OAI-SearchBot, PerplexityBot, and Amazonbot.

This is part of a growth experiment to test if llms.txt improves brand citations and organic traffic from AI-driven discovery channels. Success metrics will be tracked via server logs and analytics over 4-6 weeks.

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.
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.
@claude

This comment was marked as resolved.

@pulumi-bot
Copy link
Collaborator

- 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.
@pulumi-bot
Copy link
Collaborator

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.
@pulumi-bot
Copy link
Collaborator

- 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
@pulumi-bot
Copy link
Collaborator

- 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 config
@pulumi-bot
Copy link
Collaborator

Copy link
Contributor

@sicarul sicarul left a comment

Choose a reason for hiding this comment

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

LGTM

@asafashirov asafashirov merged commit e624aaa into master Nov 25, 2025
27 checks passed
@asafashirov asafashirov deleted the llms-txt-experiment branch November 25, 2025 19:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants