Content Generation Workflow
Overview
This document describes the end-to-end workflow for creating content using the AI-assisted content generation system. The workflow combines automated scheduling, AI drafting, human review, and multi-platform publishing.
Workflow Diagram
┌─────────────────────────────────────────────────────────────────────────┐
│ Weekly Content Workflow │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ MONDAY 9:00 UTC │
│ ┌──────────────────┐ │
│ │ GitHub Actions │ │
│ │ Calendar Check │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Scan Calendars │───▶│ Create Issues │ │
│ │ for Due Content │ │ for Due Items │ │
│ └──────────────────┘ └────────┬─────────┘ │
│ │ │
│ MONDAY-THURSDAY ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Assign Issue │───▶│ Draft Content │ │
│ │ (Human/Copilot) │ │ (AI-Assisted) │ │
│ └──────────────────┘ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Validate Draft │───▶│ Human Review │───▶│ Schema Check │ │
│ │ Against Schema │ │ & Edit │ │ (CI Workflow) │ │
│ └──────────────────┘ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │
│ PUBLISH DAY ▼ │ │
│ ┌──────────────────┐ ┌──────────────────┐ │ │
│ │ Merge to Main │───▶│ Jekyll Build │◀───────────┘ │
│ │ (PR Approved) │ │ & Deploy │ │
│ └──────────────────┘ └────────┬─────────┘ │
│ │ │
│ POST-PUBLISH ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Social Posts │───▶│ Update Calendar │───▶│ Close Issue │ │
│ │ (Repurposing) │ │ Status │ │ │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Phase 1: Calendar Check (Automated)
When It Runs
- Schedule: Every Monday at 9:00 AM UTC (4:00 AM EST)
- Trigger: GitHub Actions cron schedule
- Manual Override:
gh workflow run calendar-check.yml
What It Does
- Scans Calendar Files
// Checks all YAML files in calendar/ directory const calendarDir = 'calendar'; const files = fs.readdirSync(calendarDir, { recursive: true }); - Finds Due Content
- Looks ahead 7 days (configurable via
days_ahead) - Filters for
status: plannedonly - Ignores
publishedandin-progressitems
- Looks ahead 7 days (configurable via
- Creates GitHub Issues
- One issue per due content item
- Includes context for AI drafting
- Applies labels:
content,copilot, type-specific labels
Issue Format
## Content Request from Editorial Calendar
**Type**: blog
**Title**: The State of AI Coding Assistants in 2026
**Due Date**: 2026-01-09
**Publish Date**: 2026-01-13
**Priority**: high
### Description
Comparing Claude Code, GitHub Copilot, Cursor, and emerging tools
### Topics
- ai-development
- tools
- industry-analysis
### Platforms
- blog
- twitter
- linkedin
---
### For Copilot
Use the following resources:
- Brand voice: `brands/zircote/brand.yml`
- Blog template: `brands/zircote/templates/blog-post.prompt.md`
- Schema: `schemas/blog.schema.yml`
Save draft to: `content/blog/drafts/2026-01-09-the-state-of-ai-coding-assistants.md`
---
*Auto-generated from calendar/2026/q1.yml*
Phase 2: Content Drafting
Option A: AI-Assisted Drafting (Recommended)
Step 1: Gather Context
# Read the issue for requirements
gh issue view <issue-number>
# Load brand configuration
cat brands/zircote/brand.yml
# Review the template
cat brands/zircote/templates/blog-post.prompt.md
Step 2: Research (For News Integration)
For posts with news_integration: true:
- Check news sources from calendar
- Search for recent developments
- Note 2-3 relevant news items
- Include citations in draft
Step 3: Generate Draft
Using Claude Code or similar AI:
Based on the following context, generate a blog post draft:
**Title**: The State of AI Coding Assistants in 2026
**Target Word Count**: 2000
**Topics**: ai-development, tools, industry-analysis
**Brand Voice** (from brands/zircote/brand.yml):
- Tone: technical, practical, direct, helpful
- Style: Write from hands-on experience, show code examples
- Audience: Software architects, backend developers, DevOps engineers
**Structure Requirements**:
1. Hook/Introduction (150-200 words)
2. Main sections (3-4 major points)
3. Code examples where relevant
4. Practical takeaways
5. Call to action: "What's your preferred AI coding setup?"
**News to Incorporate**:
- [Recent development 1]
- [Recent development 2]
Step 4: Save Draft
# Save to drafts directory
# Format: YYYY-MM-DD-slug.md
content/blog/drafts/2026-01-09-the-state-of-ai-coding-assistants.md
Option B: Manual Drafting
- Open issue for context
- Create new file in
content/blog/drafts/ - Use
templates/blog-post.mdas starting point - Write content following brand guidelines
- Reference topics from issue
Draft File Format
---
layout: post
title: "The State of AI Coding Assistants in 2026"
date: 2026-01-13
author: Robert Allen
categories: [ai-development, tools]
tags: [claude-code, copilot, cursor, ai-assistants]
description: "Comparing Claude Code, GitHub Copilot, Cursor, and emerging tools"
image: /assets/images/blog/2026/ai-coding-assistants.png
canonical_url: https://www.zircote.com/blog/2026/01/13/ai-coding-assistants
---
<!-- Content here -->
Phase 3: Review and Validation
Automated Validation
On PR creation, the validate-content.yml workflow:
- Checks Frontmatter
- Required fields present
- Date format correct
- Categories valid
- Schema Validation
- Validates against
schemas/blog.schema.yml - Reports errors in PR comments
- Validates against
- Link Checking
- Verifies internal links
- Flags broken external links
Human Review Checklist
- Title is compelling and accurate
- Description matches content
- Technical accuracy verified
- Code examples tested (if applicable)
- Brand voice consistent
- Call to action present
- SEO keywords included naturally
- Images have alt text
- No broken links
Update Issue Status
# Update calendar status
# In calendar/2026/q1.yml, change:
# status: planned → status: in-progress
# Comment on issue
gh issue comment <number> --body "Draft submitted: #<pr-number>"
Phase 4: Publishing
Pre-Publish Steps
- Merge PR to main
gh pr merge <number> --merge - Verify Build
- GitHub Pages builds automatically
- Check Actions tab for success
- Verify Live
- Visit published URL
- Test all links
- Check mobile rendering
Post-Publish Steps
- Update Calendar
# Change status status: published # Add published URL published_url: "https://www.zircote.com/blog/2026/01/13/slug" - Close Issue
gh issue close <number> --comment "Published: <url>"
Phase 5: Social Repurposing
Generate Social Posts
Use prompts/blog-to-social.prompt.md:
Given this blog post, create social media versions:
**Source**: [Blog post content]
**Target Platforms**:
1. Twitter/X (280 chars, 2-3 tweet thread)
2. LinkedIn (professional, 1000-1500 chars)
3. Bluesky (300 chars, conversational)
**Include**:
- Link to full post
- Relevant hashtags
- Call to action
Platform-Specific Prompts
Each platform has a dedicated template:
| Platform | Template | Character Limit |
|---|---|---|
templates/social/twitter.prompt.md |
280 | |
templates/social/linkedin.prompt.md |
3000 | |
| Bluesky | templates/social/bluesky.prompt.md |
300 |
| Mastodon | templates/social/mastodon.prompt.md |
500 |
Scheduling
Use your preferred social media scheduler:
- Buffer
- Hootsuite
- Later
- Native platform scheduling
Friday Roundup Workflow
Special Process for Weekly Digests
THURSDAY
┌──────────────────┐
│ Curate News │
│ from Sources │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Select 3-5 │
│ Top Stories │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ Draft Using │
│ Recurring.format│
└────────┬─────────┘
│
FRIDAY ▼
┌──────────────────┐
│ Post to All │
│ Platforms │
└──────────────────┘
Curating News
- Check Sources (see NEWS-SOURCES.md)
- Anthropic Blog
- OpenAI Blog
- HuggingFace
- AgFunder
- GitHub Blog
- Selection Criteria
- Relevance to audience
- Recency (within 7 days)
- Actionability (can readers use this?)
- Uniqueness (not covered elsewhere)
- Format Output
🗞️ Friday Roundup - Week 2 🤖 AI Development: - Claude 4 adds extended thinking with 128K output tokens - LangChain releases v0.3 with improved agent framework 🌾 Agriculture Tech: - New USDA grants for precision agriculture 🛠️ Developer Tools: - GitHub Actions now supports M4 Mac runners What caught your attention this week?
Video Content Workflow
Pre-Production
- Script from Calendar
- Use title and description as outline
- Reference related blog post if exists
- Recording
- Screen capture for demos
- Talking head for explanations
- Keep under 5 minutes for demos
Post-Production
- Edit and Export
- Create Thumbnail
- Write Description
- Include links to related content
- Add timestamps for longer videos
Publishing
- YouTube (primary)
- LinkedIn (native upload)
- Twitter (if under 2:20)
Emergency Content Updates
Urgent News Response
When major news breaks that affects your content areas:
- Evaluate Relevance
- Does it fit content pillars?
- Is it actionable for audience?
- Time-sensitive?
- Create Ad-Hoc Issue
gh issue create --title "[URGENT] Analysis: Major AI Announcement" \ --label "content,urgent" \ --body "Breaking news requires immediate response..." - Fast-Track Review
- Expedited review process
- Same-day publish if critical
Rescheduling Content
When planned content must be delayed:
- Update Calendar
status: rescheduled rescheduled_from: 2026-01-13 rescheduled_reason: "Major news requires priority coverage" - Update Issue
gh issue comment <number> --body "Rescheduled due to priority content" - Reschedule for Next Available Slot
Workflow Metrics
Track These Metrics
| Metric | Target | Where to Track |
|---|---|---|
| Calendar to Issue | < 24 hours | GitHub Actions logs |
| Issue to Draft | < 3 days | Issue comments |
| Draft to Published | < 2 days | PR timeline |
| Publishing consistency | 90%+ on-time | Calendar status |
| Social engagement | Platform analytics | Twitter/LinkedIn analytics |
Weekly Review
Every Friday:
- All scheduled content published?
- Issues closed for published content?
- Calendar statuses updated?
- Friday Roundup posted?
- Next week’s issues created?