A CLI-first, workflow-driven AI assistant for preparing Markdown blog drafts for publishing.
Ktavi reviews your draft for grammar, clarity, and SEO metadata, generates a matching cover image concept, optionally creates and uploads the image, and updates your Markdown frontmatter -- all with a reviewable diff before any changes are written.
- Analyze -- parse Markdown structure, frontmatter, and content metrics
- SEO review -- deterministic checks plus AI-powered suggestions for title, description, slug, tags, headings, and images
- Writing review -- grammar, clarity, tone, and structure suggestions with configurable intensity
- Content summary -- AI-generated summary, key topics, target audience, and suggested meta description
- Cover images -- generate a visual concept and prompt, create the image, save locally or upload to Cloudinary
- Interactive feedback -- preview generated images and regenerate with feedback before accepting
- Diff before apply -- every change is shown as a unified diff; nothing is written without
--apply - Layered config -- project, global, and default settings with
ktavi config initandktavi config show
npm install -g ktaviSet your OpenAI API key:
echo "OPENAI_API_KEY=sk-..." >> .envRun your first analysis:
ktavi analyze ./posts/my-post.mdktavi analyze <file> # Metadata summary and content analysis
ktavi seo <file> [--apply] # SEO review with optional auto-fix
ktavi review <file> [--mode ...] # Writing quality review
ktavi fix <file> [--apply] # Auto-fix critical SEO issues
ktavi cover <file> [--generate] # Cover image generation
ktavi prepare <file> [--apply] # Full publish-preparation workflow
ktavi config show # View resolved config with sources
ktavi config init # Interactive config wizardUse --json on any command for machine-readable output.
- Getting Started
- CLI Commands -- full flag reference
- Configuration -- all config fields and defaults
- Environment Variables -- API keys and setup
- Provider Setup -- OpenAI and Cloudinary guides
- Workflows -- usage patterns and examples
- Contributing -- development setup and guidelines
Markdown content is sent to the configured AI provider (e.g. OpenAI) for grammar review, SEO suggestions, content summarization, and cover image generation. No data is stored by Ktavi itself.