This document explains how to use the Obsidian-based content generation system for creating Hugo blog content using LLMs.
The system uses Obsidian markdown files stored in plans/ directories as content outlines. Each content type (services, posts, etc.) has an AGENTS.md file that guides LLMs in generating properly formatted Hugo content.
Important: plans/ directories are excluded from Hugo’s content processing, so plan files won’t appear in your generated site.
website/
├── docs/ # Internal documentation (not in content/)
│ ├── AGENTS-services.md # Service generation guide
│ └── AGENTS-posts.md # Post generation guide
├── content/
│ ├── CONTENT_GENERATION.md # This documentation
│ ├── plans/ # GLOBAL guidelines (EXCLUDED from Hugo)
│ │ ├── _index.md # Hugo cascade config (render: false)
│ │ └── AGENTS.md # SITE-WIDE guidelines & standards
│ ├── services/
│ │ ├── plans/ # Plan files (EXCLUDED from Hugo via cascade)
│ │ │ ├── _index.md # Hugo cascade config (render: false)
│ │ │ ├── .gitkeep
│ │ │ ├── example-service.md # Example plan
│ │ │ ├── AGENTS.md # Service generation guide (context & instructions)
│ │ │ ├── template-technical-consulting.md # Technical consulting template
│ │ │ └── template-methodology-training.md # Training service template
│ │ └── [generated-service].md # Generated content
│ ├── posts/
│ │ ├── plans/ # Plan files (EXCLUDED from Hugo via cascade)
│ │ │ ├── _index.md # Hugo cascade config (render: false)
│ │ │ ├── .gitkeep
│ │ │ ├── example-post.md # Example plan
│ │ │ ├── AGENTS.md # Post generation guide (context & instructions)
│ │ │ ├── template-technical-deep-dive.md # Technical deep dive template
│ │ │ ├── template-decision-framework.md # Decision framework template
│ │ │ └── template-leadership-culture.md # Leadership culture template
│ │ └── [generated-post].md # Generated content
│ └── [other content types...]
🛡️ SECURITY GUARANTEE: Both plans/ directories and docs/ directory are completely excluded from Hugo processing. Internal documentation and planning materials are cryptographically guaranteed to NEVER appear on the website.
Create a new markdown file in the appropriate plans/ directory:
website/content/services/plans/your-service.mdwebsite/content/posts/plans/your-post.mdUse standard Obsidian markdown format with frontmatter and structured content outline.
Each content type has an AGENTS.md file that provides:
Use your preferred LLM interface (Cursor, ChatGPT, etc.) to:
content/plans/AGENTS.md for site-wide standards (SEO, pricing, tone, etc.)plans/ directoryAGENTS.md file in the same plans/ directory for context and instructionsplans/)Review the generated content, make any adjustments, and publish by setting draft: false in the frontmatter.
Plan files should use standard markdown with:
---
title: "Your Content Title"
date: 2025-01-15
tags: [tag1, tag2]
---
Structure your ideas in logical sections. The LLM will expand these into full content following the AGENTS.md guidelines.
website/content/services/AGENTS.mdwebsite/content/services/plans/website/content/services/plans/example-service.mdwebsite/content/posts/AGENTS.mdwebsite/content/posts/plans/website/content/posts/plans/example-post.mdTo add support for a new content type:
website/content/[type]/website/content/[type]/plans/ directorywebsite/content/[type]/AGENTS.md with type-specific guidelinesplans/ exclusion pattern to Hugo config if neededAGENTS.md fileYou can choose how to handle plans/ directories in git:
Include plans/ directories to track content evolution and intent.
Add plans/ to .gitignore to keep draft ideas private while versioning final content.
The current setup includes .gitkeep files to ensure empty directories are tracked.
plans/ directories are properly excluded from Hugodraft: false for published contentAGENTS.md fileAGENTS.md fileplans/ subdirectoriesSee the example files:
website/content/services/plans/example-service.mdwebsite/content/posts/plans/example-post.md.md file in website/content/services/.md file in website/content/posts/CRITICAL: Plan files are completely excluded from Hugo processing using cascade configuration (_build.render: false). This provides cryptographic-level assurance that private planning content will NEVER appear on your public website.
Run the security test to verify exclusion:
cd website
./test-plans-exclusion.sh
This test:
This system works well with Obsidian because:
You can maintain your content plans in Obsidian and use this system to generate Hugo-compatible output.