blog-cc
Use when managing blog-cc static sites - content creation, deployment, themes, courses. Conversational content management with AI generation, validation, and GitHub Pages deployment.
About blog-cc
blog-cc is a Claude AI skill developed by imehr. Use when managing blog-cc static sites - content creation, deployment, themes, courses. Conversational content management with AI generation, validation, and GitHub Pages deployment. This powerful Claude Code plugin helps developers automate workflows and enhance productivity with intelligent AI assistance.
Why use blog-cc? With 0 stars on GitHub, this skill has been trusted by developers worldwide. Install this Claude skill instantly to enhance your development workflow with AI-powered automation.
| name | blog-cc |
| description | Use when managing blog-cc static sites - content creation, deployment, themes, courses. Conversational content management with AI generation, validation, and GitHub Pages deployment. |
Blog-CC Content Management
⚠️ VERIFICATION REQUIRED
BEFORE using this skill, verify this is a blog-cc project:
- Check for
content/directory withcollections/,pages/, orcourses/subdirectories - Check for
next.config.jswithbasePathconfig ORCONTENT-GUIDE.md - Check for theme system:
lib/themes/directory - When uncertain: ASK the user "Is this a blog-cc project?"
NOT blog-cc if:
- Hugo, Jekyll, Gatsby, or other SSG (different file structure)
- WordPress or database-backed CMS
- Plain HTML site without Next.js
- Custom Next.js site without blog-cc content structure
Overview
Blog-cc is a Next.js-based static site generator for AI learning content. This skill provides conversational content management with AI-powered generation, course building, and GitHub Pages deployment.
Core principle: Use TypeScript CLI utilities for operations. Validate before deploying. Git-tag deployments. Preview before publishing.
When to Use
ONLY after verifying blog-cc project, use this skill when you see:
- "Add video [URL]" or "Add content"
- "Create course about [topic]"
- "Deploy site" or "Publish to GitHub Pages"
- "Switch theme to [name]"
- "Validate content"
- "Preview changes"
When NOT to Use
NEVER use this skill for:
- Hugo, Jekyll, Gatsby sites (different architecture)
- WordPress or database CMS (not static site)
- Generic Next.js without blog-cc structure
- When project type is unclear - ASK THE USER FIRST
If uncertain, verify first:
# Check for blog-cc structure ls content/collections content/pages CONTENT-GUIDE.md # If missing → NOT blog-cc → DON'T use this skill
Quick Reference
| User Intent | Action | CLI Function |
|---|---|---|
| "Add video [URL]" | Extract metadata → generate tags → create file | addVideo() |
| "Create course [topic]" | AI outline → scaffold structure | Coming soon |
| "Deploy site" | Validate → build → tag → push | Coming soon |
| "Switch theme [name]" | Update .env → preview → commit | Coming soon |
| "Preview changes" | Build → serve port 4567 | ./start.sh |
| "Validate content" | Schema + links + structure check | validateContent() |
Essential Workflows
Content Creation (AI-Powered)
When user provides URL:
- Verify project with
isBlogCCProject() - Call
addVideo()with URL only - AI extracts YouTube metadata and generates tags/description
- Show preview to user
- User confirms or edits
- Create file:
content/collections/[type]/[slug].md - Auto-commit:
feat: add video 'Title' - Offer preview: "Run
./start.shto see changes"
Three modes:
- URL only: AI extracts all metadata
- Full args: Manual specification
- Interactive: Prompts for each field
Content Validation
Before deployment, always validate:
import { validateContent } from './lib/cli/validation/content-validator' const result = await validateContent(projectRoot) // Checks: // - Required fields per collection type (videos: title, author, url) // - Duplicate slugs // - Date formats (YYYY-MM-DD) // - Course structure (course.md, modules/)
Reports:
- Errors (blocking): Missing required fields, invalid dates, duplicates
- Warnings (non-blocking): Broken links, missing assets
- Files checked count
Never deploy with validation errors.
Collection Types & Schemas
9 supported collection types:
| Collection | Required Fields | Optional |
|---|---|---|
| videos | title, author, url | duration, description, tags |
| podcasts | title, host, url | episode, duration, description |
| people | name, role, url | bio, tags |
| products | name, description, url | price, tags |
| courses | title, provider, url | duration, level, tags |
| tutorials | title, author, url | duration, difficulty, tags |
| books | title, author | publisher, isbn, url |
| repos | title, owner, url | stars, language, tags |
| tweets | author, content, url | date, tags |
File location: content/collections/[collection-type]/[slug].md
Project Structure
blog-cc-project/
├── content/
│ ├── collections/
│ │ ├── videos/
│ │ ├── tutorials/
│ │ ├── courses/
│ │ └── ... (9 types)
│ ├── pages/ # Blog posts
│ ├── courses/ # Multi-module courses
│ │ └── [slug]/
│ │ ├── course.md
│ │ └── modules/
│ └── home.md
├── lib/
│ └── themes/ # 9 themes
├── .env # THEME=moss
├── .env.production # BASE_PATH=/repo-name
├── next.config.js
└── CONTENT-GUIDE.md
Common Patterns
// Add content from URL (AI extracts metadata) import { addVideo } from './lib/cli/content/add-video' await addVideo(projectRoot, { url: 'https://youtube.com/...' }) // Validate before deploy import { validateContent } from './lib/cli/validation/content-validator' const result = await validateContent(projectRoot) if (!result.valid) { console.log(result.errors); process.exit(1) } // Load project config import { loadBlogCCConfig } from './lib/cli/utils/config-loader' const config = await loadBlogCCConfig(projectRoot)
Common Mistakes
1. Not verifying blog-cc project - always check structure first
2. Skipping validation - always validate before deploy
3. Hardcoding paths - use config.contentDir from config loader
4. Creating invalid slugs - slugify: lowercase, replace spaces with dashes
5. Missing frontmatter fields - check schema for required fields per collection
6. Not auto-committing - use autoCommit() from git-helper
7. Forgetting to offer preview - always suggest ./start.sh after changes
Available CLI Utilities
Utils: yaml-handler, project-detector, git-helper, config-loader Content: add-video, ai-generator Validation: content-validator
See lib/cli/ for TypeScript implementations.
Best Practices
- Always verify project before operations
- Use AI extraction when URL provided
- Show preview before creating files
- Validate before deploy (no exceptions)
- Auto-commit changes with descriptive messages
- Offer next steps after operations
- Check for existing files before creating
- Use consistent slugs (lowercase-with-dashes)
Themes
9 themes: iris (default), moss, crimson, ocean, amber, slate, violet, forest, sky
Switch: Update .env THEME → preview → commit
Deployment (Coming Soon)
4-layer safety system:
- Content validation (schema, links, structure)
- Pre-deploy checks (build success, git status)
- Preview (serve locally before push)
- Rollback (git tags for quick revert)
Deployment flow:
# 1. Validate validateContent() # 2. Build npm run build # 3. Tag git tag deploy/site-name/2025-11-03-14-30-00 # 4. Push git push origin main --tags # 5. GitHub Pages builds automatically
Additional Resources
- Framework Repo: https://github.com/imehr/blog-cc-framework
- Template Repo: https://github.com/imehr/blog-cc
- CLI docs: TypeScript comments in
lib/cli/
When Deployment Fails
CRITICAL: Diagnose before acting. Never guess under pressure.
validateContent()- check for validation errors FIRSTnpm run build- verify build succeeds locally- Check GitHub Actions logs in repo → Actions tab
- Verify
.env.productionhasBASE_PATH=/repo-name - Check GitHub Pages settings: Settings → Pages → Source: gh-pages branch
For content issues: validate → fix → rebuild → redeploy For build issues: check logs → fix errors → test locally → redeploy

imehr
blog-cc-framework
Download Skill Files
View Installation GuideDownload the complete skill directory including SKILL.md and all related files