/** * Twitter Content Manager * Manages scheduled tweets, content planning, and interaction strategy */ import { TwitterConnector } from './twitter-connector'; import { Agent } from '../core/agent'; import { AutonomousAgent } from '../core/autonomous-agent'; /** * Tweet idea structure */ export interface TweetIdea { id: string; topic: string; content: string; source?: string; created: number; priority: 'high' | 'medium' | 'low'; status: 'draft' | 'approved' | 'posted' | 'rejected'; scheduledFor?: number; tags?: string[]; interactionGoal?: 'inform' | 'engage' | 'provoke' | 'question'; engagement?: { likes: number; retweets: number; replies: number; }; } /** * Content calendar entry */ export interface ContentCalendarEntry { id: string; date: number; topic: string; tweetId?: string; status: 'planned' | 'drafted' | 'posted' | 'skipped'; category: string; notes?: string; } /** * Twitter content manager configuration */ export interface TwitterContentManagerConfig { twitterConnector: TwitterConnector; agent: Agent | AutonomousAgent; contentCategories?: string[]; preferredPostingTimes?: number[]; tweetsPerDay?: number; preferredTopics?: string[]; contentRatio?: { original?: number; reactive?: number; curated?: number; }; enableAutoResponses?: boolean; autoResponseWhitelist?: string[]; researchInterval?: number; researchTopics?: string[]; dataStoragePath?: string; } /** * Twitter content manager * Handles content planning, scheduling, and performance tracking */ export declare class TwitterContentManager { private twitter; private agent; private logger; private config; private searchTool; private tweetIdeasPath; private calendarPath; private metricsPath; private tweetIdeas; private calendar; private responseMetrics; private postingInterval; private researchInterval; private metricsInterval; /** * Creates a new Twitter content manager * * @param config - Configuration options */ constructor(config: TwitterContentManagerConfig); /** * Starts the content manager */ start(): void; /** * Stops the content manager */ stop(): void; /** * Schedule the next tweet to be posted */ private scheduleNextTweet; /** * Get the next scheduled tweet */ private getNextScheduledTweet; /** * Plan the next tweet based on content strategy */ private planNextTweet; /** * Post a scheduled tweet */ private postScheduledTweet; /** * Generate a tweet idea */ private generateTweetIdea; /** * Generate a curated tweet with external content */ private generateCuratedTweet; /** * Perform research on topics */ private performResearch; /** * Extract insights from research results */ private extractInsights; /** * Generate a tweet from research insights */ private generateTweetFromResearch; /** * Update metrics for posted tweets */ private updateMetrics; /** * Select a random topic for content */ private selectRandomTopic; /** * Select a research topic */ private selectResearchTopic; /** * Get the next posting time based on preferred times */ private getNextPostingTime; /** * Determine the interaction goal of a tweet */ private determineInteractionGoal; /** * Set up event listeners for Twitter events */ private setupEventListeners; /** * Handle incoming tweet from monitored users */ private handleIncomingTweet; /** * Handle keyword match tweets */ private handleKeywordMatch; /** * Evaluate if a tweet is relevant for engagement */ private evaluateTweetRelevance; /** * Generate an auto-response to a tweet */ private generateAutoResponse; /** * Run a task with the agent */ private runAgentTask; /** * Add a tweet idea manually */ addTweetIdea(idea: Omit): TweetIdea; /** * Add a calendar entry */ addCalendarEntry(entry: Omit): ContentCalendarEntry; /** * Get all tweet ideas */ getTweetIdeas(filters?: { status?: string; priority?: string; }): TweetIdea[]; /** * Get calendar entries */ getCalendarEntries(days?: number): ContentCalendarEntry[]; /** * Get engagement stats for posted tweets */ getEngagementStats(): { totalTweets: number; avgLikes: number; avgRetweets: number; avgReplies: number; topPerformingTweets: TweetIdea[]; }; /** * Load data from disk */ private loadData; /** * Save data to disk */ private saveData; /** * Get the agent's name */ private getAgentName; }