Navigate to src/content/blog/ and create a new .md file. Use kebab-case for the filename:
touch src/content/blog/my-new-post.md
2
Add frontmatter
Start your file with YAML frontmatter containing all required fields:
---title: Why I Writeauthor: Lewis Koritags: ["Writing", "Learning", "Clarity", "Teaching", "Expression", "Growth"]description: Writing helps me think clearly, learn better and communicate with intention. It is a way to teach, connect with strangers, grow in my career and let loose ideas that deserve to be shared.dateCreated: 2025-09-16sponsors: []---
3
Write your content
Below the frontmatter, write your post content using markdown:
I've been thinking lately about why I write. Not in the mechanical sense of sitting down with a blank page and stringing words together, but the deeper reason why I keep showing up to it.## The Power of ClarityFor me, writing is not just about publishing a blog post, an essay or a reflection. It's about clarity...
4
Preview and publish
Run your development server to preview the post:
npm run dev
The post will be automatically available at /blog/my-new-post
Series allow you to group related blog posts together. When you add a series field to your frontmatter, posts with the same series name will be linked together.
---title: AI Is Not Replacing You. It's Reshaping How You Think.author: Lewis Koritags: ["artificial intelligence", "software engineering", "ai agents"]series: Human + AIdescription: A software engineer reflects on how AI agents are reshaping engineering workdateCreated: 2026-02-17sponsors: ["Scraper API"]---
All posts with series: Human + AI will be automatically grouped and can be displayed together on your site.
If your blog post is sponsored, you can list sponsors in the frontmatter:
---title: My Sponsored Postauthor: Lewis Koritags: ["tutorial"]description: A helpful tutorialdateCreated: 2025-03-15sponsors: ["Scraper API", "Company Name"]---
You can also use an empty array if there are no sponsors:
---title: Why I Writeauthor: Lewis Koritags: ["Writing", "Learning", "Clarity", "Teaching", "Expression", "Growth"]description: Writing helps me think clearly, learn better and communicate with intention.dateCreated: 2025-09-16sponsors: []---I've been thinking lately about why I write. Not in the mechanical sense of sitting down with a blank page and stringing words together, but the deeper reason why I keep showing up to it.For me, writing is not just about publishing a blog post, an essay or a reflection. It's about clarity. Thoughts tend to be messy when they live only in the mind...
Example 2: Post with Series and Sponsors
---title: AI Is Not Replacing You. It's Reshaping How You Think.author: Lewis Koritags: ["artificial intelligence", "software engineering", "ai agents", "future of work"]series: Human + AIdescription: A software engineer reflects on how AI agents are reshaping engineering work, job expectations, and the definition of leverage.dateCreated: 2026-02-17sponsors: ["Scraper API"]---When AI started writing decent code, I did not feel excitement.I felt unsettled.Part of it was personal. I had built a career on being able to untangle complex systems, reason through architectural tradeoffs, and hold messy abstractions in my head until they became clear...
In your Astro components, you can query blog posts using the Content Collections API:
import { getCollection } from 'astro:content';// Get all blog postsconst allPosts = await getCollection('blog');// Get posts sorted by dateconst sortedPosts = allPosts.sort( (a, b) => b.data.dateCreated.valueOf() - a.data.dateCreated.valueOf());// Get posts in a specific seriesconst seriesPosts = allPosts.filter( post => post.data.series === 'Human + AI');