marketing-post-generator-mcp
Version:
A powerful MCP server for AI-powered marketing blog post generation with Claude integration
361 lines (286 loc) • 9.46 kB
Markdown
# MCP Prompts API Reference
This document provides comprehensive documentation for all available MCP prompts in the Marketing Post Generator server.
## Overview
The Marketing Post Generator currently provides 1 main prompt for initialization:
1. [init](#init-prompt) - Initialize the Marketing Post Generator with a blog domain
## Prompt Reference
### init Prompt
**Name:** `init`
**Description:** Initialize the Marketing Post Generator with a blog domain to set up the .postgen directory structure and configuration.
#### Purpose
The `init` prompt is the first step in using the Marketing Post Generator. It:
- Creates the `.postgen` directory structure for data storage
- Validates the provided domain
- Sets up configuration files
- Prepares the system for content analysis and generation
#### Parameters
| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `domain` | string | ✅ | - | The domain/URL of the main blog page (e.g., "https://blog.example.com" or "blog.example.com") |
#### Usage Examples
```bash
# Initialize with full URL
/init domain="https://blog.stripe.com"
# Initialize with domain only
/init domain="techcrunch.com"
# Initialize with subdomain
/init domain="engineering.shopify.com"
```
#### Response Format
```json
{
"success": true,
"domain": "blog.stripe.com",
"message": "Marketing Post Generator initialized successfully for blog.stripe.com",
"configuration": {
"domain": "blog.stripe.com",
"initialized": "2024-01-15T10:30:00Z",
"version": "1.0.0"
},
"directoryStructure": {
"created": [
".postgen/",
".postgen/analysis/",
".postgen/analysis/samples/",
".postgen/analysis/tone-analysis/",
".postgen/analysis/summaries/",
".postgen/content-plans/",
".postgen/narratives/",
".postgen/posts/",
".postgen/posts/drafts/",
".postgen/posts/published/"
],
"configFile": ".postgen/config.json"
}
}
```
#### Directory Structure Created
The init prompt creates the following directory structure:
```
.postgen/
├── config.json # Domain configuration and metadata
├── analysis/ # Content analysis results
│ ├── samples/ # Domain sampling results
│ ├── tone-analysis/ # Tone analysis results
│ └── summaries/ # Individual post summaries
├── content-plans/ # Strategic content plans
├── narratives/ # Generated post narratives
└── posts/ # Generated blog posts
├── drafts/ # Work-in-progress posts
└── published/ # Final, ready-to-publish posts
```
#### Configuration File
The init prompt creates a `config.json` file with the following structure:
```json
{
"domain": "blog.stripe.com",
"initialized": "2024-01-15T10:30:00Z",
"version": "1.0.0",
"settings": {
"defaultSampleSize": 5,
"maxRequestsPerSecond": 2,
"cacheEnabled": true,
"cacheTtl": 3600000
},
"metadata": {
"lastUsed": "2024-01-15T10:30:00Z",
"totalSamples": 0,
"totalSummaries": 0,
"totalPlans": 0,
"totalNarratives": 0,
"totalPosts": 0
}
}
```
#### Domain Validation
The init prompt performs several validation checks:
1. **Format Validation**: Ensures the domain is in a valid format
2. **Accessibility Check**: Verifies the domain is accessible
3. **Blog Detection**: Attempts to identify blog content structure
4. **Rate Limit Test**: Checks if the domain has reasonable rate limits
#### Use Cases
##### 1. First-Time Setup
```bash
# Start fresh with a new domain
/init domain="blog.example.com"
```
This is the most common use case when starting work with a new blog domain.
##### 2. Re-initialization
```bash
# Re-initialize existing domain (resets configuration)
/init domain="blog.example.com"
```
This overwrites existing configuration but preserves generated content files.
##### 3. Multi-Domain Workflow
```bash
# Initialize different domains in different directories
cd project-a
/init domain="blog-a.com"
cd ../project-b
/init domain="blog-b.com"
```
Each directory can have its own `.postgen` configuration for different clients or projects.
#### Error Handling
##### Common Errors
**Invalid Domain Format**
```json
{
"error": {
"type": "ValidationError",
"message": "Invalid domain format",
"code": "INVALID_DOMAIN_FORMAT",
"details": {
"provided": "not-a-domain",
"expected": "Valid domain (e.g., 'blog.example.com' or 'https://blog.example.com')"
}
}
}
```
**Domain Not Accessible**
```json
{
"error": {
"type": "NetworkError",
"message": "Domain is not accessible",
"code": "DOMAIN_UNREACHABLE",
"details": {
"domain": "nonexistent-blog.com",
"httpStatus": 404,
"suggestion": "Verify the domain exists and is publicly accessible"
}
}
}
```
**Permission Denied**
```json
{
"error": {
"type": "FileSystemError",
"message": "Cannot create .postgen directory",
"code": "INSUFFICIENT_PERMISSIONS",
"details": {
"path": ".postgen/",
"suggestion": "Ensure write permissions in the current directory"
}
}
}
```
**Already Initialized**
```json
{
"warning": {
"type": "ConfigurationWarning",
"message": "Domain already initialized",
"code": "ALREADY_INITIALIZED",
"details": {
"existingDomain": "blog.example.com",
"initializedDate": "2024-01-14T15:20:00Z",
"action": "Configuration updated with new timestamp"
}
}
}
```
#### Best Practices
##### 1. Domain Selection
- **Use the root blog domain**: `blog.example.com` rather than specific post URLs
- **Include subdomain if relevant**: `engineering.company.com` for technical blogs
- **Prefer HTTPS**: Use `https://blog.example.com` when available
##### 2. Directory Management
- **One domain per directory**: Keep each client/project in separate directories
- **Version control**: Consider adding `.postgen/` to `.gitignore` for sensitive content
- **Backup important files**: Save generated content that you want to preserve
##### 3. Workflow Integration
```bash
# Recommended initialization workflow
cd my-blog-project
/init domain="blog.client.com"
/sample domain="blog.client.com" sampleSize=8
/content_plan domain="blog.client.com" timeframe="month"
```
##### 4. Domain Testing
Before full initialization, you can test domain accessibility:
```bash
# Test if domain is accessible
curl -I https://blog.example.com
# Check for robots.txt restrictions
curl https://blog.example.com/robots.txt
```
#### Integration with Tools
After successful initialization, all tools will use the configured domain context:
- **sample**: Will reference the initialized domain for analysis
- **content_plan**: Will use domain-specific content strategy
- **generate_tone**: Will leverage domain context for tone consistency
- **write_post**: Will align with domain's established style
#### Troubleshooting
##### Issue: Permission Denied
**Solution**: Ensure you have write permissions in the current directory
```bash
chmod 755 .
```
##### Issue: Domain Validation Fails
**Solution**: Check domain accessibility and format
```bash
# Test domain manually
curl -I https://your-domain.com
ping your-domain.com
```
##### Issue: Configuration Corruption
**Solution**: Remove and reinitialize
```bash
rm -rf .postgen/
/init domain="your-domain.com"
```
##### Issue: Network Timeouts
**Solution**: Check internet connection and domain status
```bash
# Check if domain is responding
curl --connect-timeout 10 https://your-domain.com
```
#### Security Considerations
1. **Domain Verification**: The init prompt validates domains to prevent malicious redirects
2. **Local Storage**: All data is stored locally in the `.postgen` directory
3. **No External Dependencies**: Initialization doesn't require external services beyond domain validation
4. **Permission Scope**: Only creates files in the current directory structure
#### Migration and Backup
##### Backing Up Configuration
```bash
# Backup entire postgen directory
tar -czf postgen-backup-$(date +%Y%m%d).tar.gz .postgen/
# Backup just configuration
cp .postgen/config.json config-backup.json
```
##### Migrating Between Machines
```bash
# Copy entire postgen directory to new machine
scp -r .postgen/ user@newmachine:/path/to/project/
# Or use git (if tracking postgen files)
git add .postgen/
git commit -m "Add postgen configuration"
```
#### Advanced Usage
##### Custom Configuration
After initialization, you can manually edit `.postgen/config.json`:
```json
{
"domain": "blog.example.com",
"settings": {
"defaultSampleSize": 10, // Increased default
"maxRequestsPerSecond": 1, // More conservative rate limiting
"cacheEnabled": false, // Disable caching
"customUserAgent": "MyBot/1.0" // Custom user agent
}
}
```
##### Batch Initialization
For multiple domains:
```bash
#!/bin/bash
domains=("blog1.com" "blog2.com" "blog3.com")
for domain in "${domains[@]}"; do
mkdir -p "$domain"
cd "$domain"
/init domain="$domain"
cd ..
done
```
This completes the init prompt documentation. The init prompt is essential for setting up the Marketing Post Generator environment and should be the first command used in any workflow.