marketing-post-generator-mcp
Version:
A powerful MCP server for AI-powered marketing blog post generation with Claude integration
69 lines • 2.02 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 BlogPostGeneratorToolArgs {
narrativeId?: string;
title?: string;
topic?: string;
keywords?: string[];
wordCount?: number;
style?: 'informative' | 'persuasive' | 'storytelling' | 'technical' | 'conversational';
updateExisting?: boolean;
}
export interface BlogPostResult {
id: string;
title: string;
topic: string;
keywords: string[];
wordCount: number;
style: string;
narrativeId: string | null;
createdAt: string;
excerpt: string;
filePath: string;
metadataPath: string;
}
export interface NarrativeData {
postId: string;
title: string;
style: string;
narrative: {
introduction: string;
mainSections: {
title: string;
content: string;
}[];
conclusion: string;
keyPoints: string[];
callToAction: string;
wordCount: number;
};
rawNarrative: string;
domain: string;
toneAnalysis: any;
createdAt: string;
}
export interface PostgenConfig {
domain: string;
initialized: boolean;
createdAt: string;
}
export declare class BlogPostGeneratorTool {
private readonly logger;
constructor(_searchService: SearchService, logger?: winston.Logger);
getToolDefinition(): Tool;
execute(args: BlogPostGeneratorToolArgs, claudeService: IClaudeService): Promise<string>;
private validatePostgenDirectory;
private getPostgenConfig;
private getNarrative;
private extractKeywordsFromNarrative;
private getExistingToneAnalysis;
private createDomainMatcher;
private generateBlogPost;
private buildBlogPostPrompt;
private saveBlogPost;
private estimateWordCount;
private formatResponse;
}
//# sourceMappingURL=BlogPostGeneratorTool.d.ts.map