{"slug":"super-fast-blog-ai","name":"Super Fast Blog AI – AI Content Generator, Repurposer & SEO Writer","description":"AI-powered content generation for WordPress — 7 AI providers, content repurposing, brand voice, cost tracking, model routing, and more.","author":"waatechdigital","active_installs":10,"version":"2.0.0","wp_org_url":"https://wordpress.org/plugins/super-fast-blog-ai/","is_closed":false,"cleanup":{"has_uninstall_hook":true,"drops_tables_on_uninstall":true,"deletes_options_on_uninstall":true},"tables":[{"table_name":"keyword_batches","full_table_name":"wp_keyword_batches","description":"Stores keyword batches data created by this plugin.","detection_method":"static","confidence":"high","columns":[],"create_sql":null},{"table_name":"keyword_posts","full_table_name":"wp_keyword_posts","description":"Stores keyword posts data created by this plugin.","detection_method":"static","confidence":"high","columns":[],"create_sql":null},{"table_name":"sfba_brand_voice","full_table_name":"wp_sfba_brand_voice","description":"Stores sfba brand voice data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"sfba_content_calendar","full_table_name":"wp_sfba_content_calendar","description":"Stores sfba content calendar data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"sfba_generations","full_table_name":"wp_sfba_generations","description":"Stores sfba generations data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"sfba_internal_links","full_table_name":"wp_sfba_internal_links","description":"Stores sfba internal links data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"sfba_performance","full_table_name":"wp_sfba_performance","description":"Stores sfba performance data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"sfba_routing_rules","full_table_name":"wp_sfba_routing_rules","description":"Stores sfba routing rules data created by this plugin.","detection_method":"static","confidence":"medium","columns":[],"create_sql":null},{"table_name":"slf_generated_title","full_table_name":"wp_slf_generated_title","description":"Stores slf generated title data created by this plugin.","detection_method":"static","confidence":"high","columns":[],"create_sql":null},{"table_name":"slf_schedule_post_title_log","full_table_name":"wp_slf_schedule_post_title_log","description":"A logging table that records activity, events, or audit history.","detection_method":"static","confidence":"high","columns":[{"name":"id","type":"mediumint(9)","nullable":false,"primary_key":true},{"name":"title","type":"text","nullable":false,"primary_key":false},{"name":"status","type":"varchar(1000)","nullable":false,"primary_key":false},{"name":"postid","type":"int(100)","nullable":false,"primary_key":false},{"name":"charaters","type":"int(100)","nullable":false,"primary_key":false},{"name":"modelused","type":"varchar(100)","nullable":false,"primary_key":false},{"name":"indicat","type":"varchar(100)","nullable":false,"primary_key":false},{"name":"log_time","type":"datetime","nullable":false,"primary_key":false},{"name":"promt_title","type":"text","nullable":false,"primary_key":false},{"name":"generate_title","type":"text","nullable":false,"primary_key":false},{"name":"protid","type":"int(100)","nullable":false,"primary_key":false},{"name":"ctime","type":"datetime","nullable":false,"primary_key":false},{"name":"site_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"vocabulary_profile","type":"LONGTEXT","nullable":false,"primary_key":false},{"name":"avg_sentence_length","type":"SMALLINT UNSIGNED","nullable":false,"primary_key":false},{"name":"tone_keywords","type":"LONGTEXT","nullable":false,"primary_key":false},{"name":"style_markers","type":"LONGTEXT","nullable":false,"primary_key":false},{"name":"sample_posts","type":"LONGTEXT","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"updated_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"post_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"user_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"provider","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"model","type":"VARCHAR(128)","nullable":false,"primary_key":false},{"name":"feature","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"prompt_tokens","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"completion_tokens","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"cost_usd","type":"DECIMAL(10,6)","nullable":false,"primary_key":false},{"name":"content_type","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"generation_time_ms","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"title","type":"VARCHAR(500)","nullable":false,"primary_key":false},{"name":"target_keyword","type":"VARCHAR(255)","nullable":false,"primary_key":false},{"name":"suggested_date","type":"DATE","nullable":true,"primary_key":false},{"name":"status","type":"VARCHAR(32)","nullable":false,"primary_key":false},{"name":"post_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"source","type":"VARCHAR(32)","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"post_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"week_start","type":"DATE","nullable":false,"primary_key":false},{"name":"impressions","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"clicks","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"avg_position","type":"DECIMAL(5,2)","nullable":false,"primary_key":false},{"name":"ctr","type":"DECIMAL(5,4)","nullable":false,"primary_key":false},{"name":"source","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false},{"name":"content_type","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"provider","type":"VARCHAR(64)","nullable":false,"primary_key":false},{"name":"model","type":"VARCHAR(128)","nullable":false,"primary_key":false},{"name":"max_tokens","type":"INT UNSIGNED","nullable":false,"primary_key":false},{"name":"temperature","type":"DECIMAL(3,2)","nullable":false,"primary_key":false},{"name":"priority","type":"TINYINT UNSIGNED","nullable":false,"primary_key":false},{"name":"is_active","type":"TINYINT(1)","nullable":false,"primary_key":false},{"name":"source_post_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"target_post_id","type":"BIGINT UNSIGNED","nullable":false,"primary_key":false},{"name":"anchor_text","type":"VARCHAR(500)","nullable":false,"primary_key":false},{"name":"target_url","type":"VARCHAR(2048)","nullable":false,"primary_key":false},{"name":"context","type":"LONGTEXT","nullable":false,"primary_key":false},{"name":"status","type":"VARCHAR(32)","nullable":false,"primary_key":false},{"name":"created_at","type":"DATETIME","nullable":false,"primary_key":false}],"create_sql":"CREATE TABLE wp_slf_schedule_post_title_log ( id mediumint(9) NOT NULL AUTO_INCREMENT, title text NOT NULL, status varchar(1000) NOT NULL, postid int(100) NOT NULL, charaters int(100) NOT NULL, modelused varchar(100) NOT NULL, indicat varchar(100) NOT NULL, log_time datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;\"; // ── LEGACY TABLE 2: generated titles ───────────────────────────────── // Retained from v1 — keeps all existing generated title records. $statements[] = \"CREATE TABLE wp_slf_generated_title ( id mediumint(9) NOT NULL AUTO_INCREMENT, promt_title text NOT NULL, generate_title text NOT NULL, protid int(100) NOT NULL, ctime datetime DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (id) ) $charset_collate;\"; // ── NEW TABLE 1: brand voice profile ───────────────────────────────── $statements[] = \"CREATE TABLE wp_sfba_brand_voice ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, site_id BIGINT UNSIGNED NOT NULL DEFAULT 1, vocabulary_profile LONGTEXT NOT NULL, avg_sentence_length SMALLINT UNSIGNED NOT NULL DEFAULT 0, tone_keywords LONGTEXT NOT NULL, style_markers LONGTEXT NOT NULL, sample_posts LONGTEXT NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY site_id (site_id) ) $charset_collate;\"; // ── NEW TABLE 2: generations — central AI cost/audit log ────────────── // Every AI operation across ALL features inserts a row here. // The `feature` column is MANDATORY on every insert. // Valid feature values: // title_generation | blog_generation | seo_analysis | // repurposing | internal_linking | brand_voice | // calendar | image_generation $statements[] = \"CREATE TABLE wp_sfba_generations ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, post_id BIGINT UNSIGNED NOT NULL DEFAULT 0, user_id BIGINT UNSIGNED NOT NULL DEFAULT 0, provider VARCHAR(64) NOT NULL DEFAULT '', model VARCHAR(128) NOT NULL DEFAULT '', feature VARCHAR(64) NOT NULL DEFAULT '', prompt_tokens INT UNSIGNED NOT NULL DEFAULT 0, completion_tokens INT UNSIGNED NOT NULL DEFAULT 0, cost_usd DECIMAL(10,6) NOT NULL DEFAULT 0.000000, content_type VARCHAR(64) NOT NULL DEFAULT 'blog', generation_time_ms INT UNSIGNED NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY post_id (post_id), KEY user_id (user_id), KEY provider (provider), KEY feature (feature), KEY created_at (created_at) ) $charset_collate;\"; // ── NEW TABLE 3: content calendar ──────────────────────────────────── $statements[] = \"CREATE TABLE wp_sfba_content_calendar ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, title VARCHAR(500) NOT NULL DEFAULT '', target_keyword VARCHAR(255) NOT NULL DEFAULT '', keyword_volume INT UNSIGNED NOT NULL DEFAULT 0, keyword_difficulty TINYINT UNSIGNED NOT NULL DEFAULT 0, suggested_date DATE NULL DEFAULT NULL, status VARCHAR(32) NOT NULL DEFAULT 'idea', post_id BIGINT UNSIGNED NOT NULL DEFAULT 0, source VARCHAR(32) NOT NULL DEFAULT 'manual', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY status (status), KEY suggested_date (suggested_date) ) $charset_collate;\"; // ── NEW TABLE 4: performance snapshots (Google Search Console) ──────── $statements[] = \"CREATE TABLE wp_sfba_performance ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, post_id BIGINT UNSIGNED NOT NULL, week_start DATE NOT NULL, impressions INT UNSIGNED NOT NULL DEFAULT 0, clicks INT UNSIGNED NOT NULL DEFAULT 0, avg_position DECIMAL(5,2) NOT NULL DEFAULT 0.00, ctr DECIMAL(5,4) NOT NULL DEFAULT 0.0000, source VARCHAR(64) NOT NULL DEFAULT 'search_console', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY post_week (post_id, week_start), KEY post_id (post_id) ) $charset_collate;\"; // ── NEW TABLE 5: model routing rules ────────────────────────────────── $statements[] = \"CREATE TABLE wp_sfba_routing_rules ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, content_type VARCHAR(64) NOT NULL DEFAULT 'blog', provider VARCHAR(64) NOT NULL DEFAULT '', model VARCHAR(128) NOT NULL DEFAULT '', max_tokens INT UNSIGNED NOT NULL DEFAULT 4096, temperature DECIMAL(3,2) NOT NULL DEFAULT 0.70, priority TINYINT UNSIGNED NOT NULL DEFAULT 10, is_active TINYINT(1) NOT NULL DEFAULT 1, PRIMARY KEY (id), KEY content_type (content_type), KEY is_active (is_active) ) $charset_collate;\"; // ── NEW TABLE 6: internal links (keyword index + accepted links) ─────── // Index rows : target_post_id = 0, status = 'indexed' (one per post) // Link records: target_post_id > 0, status = 'accepted' $statements[] = \"CREATE TABLE wp_sfba_internal_links ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, source_post_id BIGINT UNSIGNED NOT NULL DEFAULT 0, target_post_id BIGINT UNSIGNED NOT NULL DEFAULT 0, anchor_text VARCHAR(500) NOT NULL DEFAULT '', target_url VARCHAR(2048) NOT NULL DEFAULT '', context LONGTEXT NOT NULL DEFAULT '', status VARCHAR(32) NOT NULL DEFAULT 'indexed', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY source_post_id (source_post_id), KEY target_post_id (target_post_id), KEY status (status) ) $charset_collate;\"; foreach ( $statements as $sql ) { dbDelta( $sql );"}],"table_count":10}