183 lines
4.1 KiB
Markdown
183 lines
4.1 KiB
Markdown
# Create New Astro Blog Post
|
|
|
|
This command guides you through creating a new blog post for an Astro site with proper frontmatter, content structure, and collection compliance.
|
|
|
|
## Instructions
|
|
|
|
Follow these steps to create a new blog post:
|
|
|
|
### 1. Gather Information
|
|
|
|
Ask the user for the following details (if not already provided):
|
|
- Post title
|
|
- Post description (for SEO)
|
|
- Author name
|
|
- Tags (comma-separated or array)
|
|
- Whether to create a draft or published post
|
|
- Target collection (default: 'blog')
|
|
|
|
### 2. Check Collection Schema
|
|
|
|
Before creating the post:
|
|
|
|
1. Look for the content collection configuration:
|
|
- Check `src/content/config.ts`
|
|
- Or check `src/content.config.ts`
|
|
|
|
2. Review the schema for the target collection (usually 'blog')
|
|
|
|
3. Note all required and optional fields
|
|
|
|
4. Identify the data types for each field
|
|
|
|
### 3. Generate Slug
|
|
|
|
Create a URL-friendly slug from the title:
|
|
- Convert to lowercase
|
|
- Replace spaces with hyphens
|
|
- Remove special characters
|
|
- Example: "My First Post!" → "my-first-post"
|
|
|
|
### 4. Determine File Location
|
|
|
|
Based on the project structure:
|
|
- Collection-based: `src/content/blog/[slug].md`
|
|
- Page-based: `src/pages/blog/[slug].md`
|
|
|
|
Check existing posts to determine the correct location.
|
|
|
|
### 5. Create Frontmatter
|
|
|
|
Build frontmatter matching the schema. Common fields:
|
|
|
|
```yaml
|
|
---
|
|
title: 'Post Title Here'
|
|
description: 'SEO-friendly description'
|
|
pubDate: 2024-01-15
|
|
author: 'Author Name'
|
|
tags: ['astro', 'blogging', 'tutorial']
|
|
draft: false
|
|
image:
|
|
url: './images/cover.jpg'
|
|
alt: 'Image description'
|
|
---
|
|
```
|
|
|
|
Adapt based on the actual schema found in step 2.
|
|
|
|
### 6. Create Starter Content
|
|
|
|
Add initial markdown content:
|
|
|
|
```markdown
|
|
# Introduction
|
|
|
|
Start writing your post here...
|
|
|
|
## Main Section
|
|
|
|
Content goes here.
|
|
|
|
## Conclusion
|
|
|
|
Wrap up your thoughts.
|
|
```
|
|
|
|
### 7. Handle Images (Optional)
|
|
|
|
If the user wants to include images:
|
|
|
|
1. Create an `images/` directory next to the post (if it doesn't exist)
|
|
2. Note the image paths in frontmatter
|
|
3. Provide guidance on image placement
|
|
|
|
### 8. Write the File
|
|
|
|
Create the file with:
|
|
- Complete frontmatter
|
|
- Starter content structure
|
|
- Proper formatting
|
|
|
|
### 9. Validate
|
|
|
|
After creating the file:
|
|
|
|
1. Check that all required schema fields are present
|
|
2. Verify the file path is correct
|
|
3. Ensure frontmatter is valid YAML
|
|
4. Confirm dates are in correct format
|
|
|
|
### 10. Next Steps
|
|
|
|
Inform the user:
|
|
- File location
|
|
- How to add images (if applicable)
|
|
- How to preview: `npm run dev`
|
|
- How to build: `npm run build`
|
|
|
|
## Example Output
|
|
|
|
**For a collection-based blog:**
|
|
|
|
File: `src/content/blog/getting-started-with-astro.md`
|
|
|
|
```markdown
|
|
---
|
|
title: 'Getting Started with Astro'
|
|
description: 'Learn the basics of building fast websites with Astro'
|
|
pubDate: 2024-01-15
|
|
author: 'John Doe'
|
|
tags: ['astro', 'tutorial', 'getting-started']
|
|
draft: false
|
|
---
|
|
|
|
# Introduction
|
|
|
|
Welcome to this comprehensive guide on getting started with Astro!
|
|
|
|
## What is Astro?
|
|
|
|
Astro is a modern web framework...
|
|
|
|
## Setting Up Your First Project
|
|
|
|
Let's walk through the setup process...
|
|
|
|
## Conclusion
|
|
|
|
You've learned the basics of Astro. Happy building!
|
|
```
|
|
|
|
## Definition of Done
|
|
|
|
- [ ] User requirements gathered (title, description, etc.)
|
|
- [ ] Collection schema reviewed and understood
|
|
- [ ] Slug generated from title
|
|
- [ ] Correct file location determined
|
|
- [ ] Frontmatter created matching schema
|
|
- [ ] All required fields included
|
|
- [ ] Dates in ISO format (YYYY-MM-DD)
|
|
- [ ] Starter content added
|
|
- [ ] File created successfully
|
|
- [ ] Validation passed (schema compliance)
|
|
- [ ] User informed of next steps
|
|
|
|
## Important Notes
|
|
|
|
- Always check the existing collection schema before creating frontmatter
|
|
- Use ISO date format: `2024-01-15` or `2024-01-15T10:00:00Z`
|
|
- Ensure tags are arrays: `['tag1', 'tag2']` not `'tag1, tag2'`
|
|
- Use proper YAML syntax (quoted strings, correct indentation)
|
|
- Don't include `layout` field for content collection posts
|
|
- Do include `layout` field for page-based posts
|
|
|
|
## Error Prevention
|
|
|
|
- Verify collection name exists in config
|
|
- Check all required fields are present
|
|
- Validate date format
|
|
- Ensure proper YAML syntax
|
|
- Don't mix collection and page patterns
|
|
- Test with `npm run dev` after creation
|