marketing-post-generator-mcp
Version:
A powerful MCP server for AI-powered marketing blog post generation with Claude integration
75 lines • 2.34 kB
TypeScript
import { Tool } from '@modelcontextprotocol/sdk/types.js';
import { SearchService } from '../services/search/index.js';
import { IClaudeService } from '../services/claude/IClaudeService.js';
import winston from 'winston';
export interface NarrativeGeneratorToolArgs {
postId: string;
style?: 'concise' | 'detailed' | 'storytelling';
updateExisting?: boolean;
}
export interface ContentPlanPost {
id: string;
title: string;
description: string;
keywords: string[];
category: string;
estimatedLength: string;
priority: 'high' | 'medium' | 'low';
targetAudience: string;
contentType: 'educational' | 'promotional' | 'thought-leadership' | 'case-study' | 'tutorial' | 'news' | 'opinion';
}
export interface ContentPlan {
domain: string;
timeframe: 'week' | 'month' | 'quarter';
plan: ContentPlanPost[];
timestamp: string;
}
export interface ToneAnalysis {
formality: string;
emotion: string;
style: string;
overallTone: string;
wordChoicePatterns?: string;
sentenceStructure?: string;
uniqueCharacteristics?: string;
}
export interface StructuredNarrative {
introduction: string;
mainSections: {
title: string;
content: string;
}[];
conclusion: string;
keyPoints: string[];
callToAction: string;
wordCount: number;
}
export interface NarrativeResult {
postId: string;
title: string;
style: 'concise' | 'detailed' | 'storytelling';
narrative: StructuredNarrative;
rawNarrative: string;
domain: string;
toneAnalysis: ToneAnalysis | null;
createdAt: string;
sourceContentPlan: string;
}
export declare class NarrativeGeneratorTool {
private readonly logger;
constructor(_searchService: SearchService, logger?: winston.Logger);
getToolDefinition(): Tool;
execute(args: NarrativeGeneratorToolArgs, claudeService: IClaudeService): Promise<string>;
private validatePostgenDirectory;
private checkExistingNarrative;
private getLatestContentPlan;
private getExistingToneAnalysis;
private createDomainMatcher;
private generateNarrative;
private buildNarrativePrompt;
private parseNarrative;
private estimateWordCount;
private saveNarrative;
private formatResponse;
}
//# sourceMappingURL=NarrativeGeneratorTool.d.ts.map