
Content Init
- 1 installs
- 7 repo stars
- Updated April 12, 2026
- isaac-flath/agent-starter-skills
Initialize a new content project with the standard dated directory structure for a blog post.
About
Initializes a new content project with a standard dated directory structure under projects/. A developer uses it to scaffold a new blog post project when none exists yet.
- Creates a dated content project directory under projects/
- Sets up the standard directory structure for a new blog post
Content Init by the numbers
- 1 all-time installs (skills.sh)
- Ranked #1,983 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Jul 8, 2026 (Skillselion catalog sync)
npx skills add https://github.com/isaac-flath/agent-starter-skills --skill content-initAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 7 |
| Last updated | April 12, 2026 |
| Repository | isaac-flath/agent-starter-skills ↗ |
What it does
Initialize a new content project with the standard dated directory structure for a blog post.
Files
/content-init
Initialize a new content project.
Usage
/content-init <title>Structure
Creates project in projects/YYYY_MM_DD_<title>/:
projects/
2026_01_21_my-project/
content/
source/
screenshots/
social/Working Directory
Run from the workspace root. The script writes to ./projects/ relative to the current working directory.
Run
From the app root:
uv run .claude/skills/content-init/scripts/init.py "<title>"Next Steps
1. Add source content to source/ (video, text files, PDFs) 2. Run /content-youtube <url> to download a video 3. Run /content-transcribe to transcribe video content 4. Run /content-blog to generate the blog post
#!/usr/bin/env -S uv run
# /// script
# requires-python = ">=3.11"
# dependencies = []
# ///
"""
Initialize a new content project.
Usage:
uv run init.py "<title>"
Creates:
- posts/YYYY-MM-DD-<slug>/ (post directory with blog.md and working subdirectories)
"""
import re
import sys
from datetime import datetime
from pathlib import Path
def slugify(title: str) -> str:
"""Convert title to URL-friendly slug."""
slug = title.lower()
slug = re.sub(r'[^\w\s-]', '', slug)
slug = re.sub(r'[\s_]+', '-', slug)
slug = re.sub(r'-+', '-', slug)
return slug.strip('-')
def main():
if len(sys.argv) < 2:
print("Usage: init.py <title>")
print("\nExample:")
print(' init.py "My Blog Post Title"')
sys.exit(1)
title = sys.argv[1]
slug = slugify(title)
now = datetime.now()
date_hyphen = now.strftime("%Y-%m-%d")
post_dir = Path("posts") / f"{date_hyphen}-{slug}"
if post_dir.exists():
print(f"Error: Post directory already exists: {post_dir}")
sys.exit(1)
# Create post directory with working subdirectories
post_dir.mkdir(parents=True)
(post_dir / "source").mkdir()
(post_dir / "screenshots").mkdir()
(post_dir / "social").mkdir()
(post_dir / "images").mkdir()
(post_dir / "video").mkdir()
# Create draft blog post
blog_path = post_dir / "blog.md"
blog_path.write_text(f"""---
title: "{title}"
description: ""
author: "Isaac Flath"
date: "{date_hyphen}"
draft: true
section: ""
subsection: ""
access: public
---
""")
print(f"Created: {post_dir}/")
print(f" blog.md (draft)")
print(f" source/ # Add raw materials here")
print(f" screenshots/")
print(f" social/")
print(f" images/")
print(f" video/")
print(f"\nNext: Add source content or run /content-youtube <url>")
if __name__ == "__main__":
main()