YT AI Title & Meta Suggestion
A powerful WordPress plugin that generates SEO-optimized title and meta description suggestions using built-in heuristics and optional OpenAI integration. Analyzes post content for top keywords and provides click-to-apply suggestions for Yoast SEO and Rank Math.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/krasenslavov/yt-ai-title-meta-suggestion/archive/refs/heads/main.zipA powerful WordPress plugin that generates SEO-optimized title and meta description suggestions using built-in heuristics and optional OpenAI integration. Analyzes post content for top keywords and provides click-to-apply suggestions for Yoast SEO and Rank Math.
Features
- Built-in Heuristics: Smart keyword extraction and content analysis without external APIs
- Optional OpenAI Integration: Enhanced suggestions using GPT models when API key is provided
- Keyword Extraction: Automatically identifies top keywords from your content
- SEO Title Suggestions: Generates 5 optimized titles (50-60 character sweet spot)
- Meta Description Suggestions: Creates 3 compelling descriptions (120-160 characters)
- Content Statistics: Word count and reading time calculation
- One-Click Apply: Seamlessly integrates with Yoast SEO and Rank Math
- Score System: Each suggestion rated 0-100 based on SEO best practices
- Template-Based Generation: Uses proven SEO title formulas
- Real-Time Analysis: Analyzes unsaved draft content
- Admin Interface: Clean, modern meta box with intuitive UI
- WPCS Compliant: Follows WordPress Coding Standards
- Translation Ready: Full i18n/l10n support
Installation
- Download the plugin files
- Upload the
yt-ai-title-meta-suggestionfolder to/wp-content/plugins/ - Activate the plugin through the 'Plugins' menu in WordPress
- (Optional) Configure OpenAI API key in Settings > AI Title & Meta
File Structure
yt-ai-title-meta-suggestion/
├── class-yt-ai-title-meta-suggestion.php # Main plugin file (~850 lines)
├── assets/
│ ├── css/
│ │ └── yt-ai-title-meta-suggestion.css # Admin styling
│ └── js/
│ └── yt-ai-title-meta-suggestion.js # Frontend functionality
└── README.md # This file
Usage
Basic Workflow
- Edit Post/Page: Open any post or page in the editor
- Add Content: Write or paste your content
- Generate Suggestions: Click "Generate Suggestions" button in the meta box
- Review Results: View keywords, titles, and meta descriptions
- Apply: Click "Apply" on any suggestion to use it with your SEO plugin
Using Built-in Heuristics (Default)
The plugin works out-of-the-box without any API keys:
Example Content:
Learn how to optimize your WordPress website for better search engine rankings.
This comprehensive guide covers keyword research, on-page SEO, technical SEO,
and content optimization strategies that actually work.
Generated Keywords:
- wordpress
- optimize
- search
- engine
- rankings
- keyword
- research
- content
- optimization
- strategies
Example Title Suggestions:
- "The Ultimate Guide to WordPress" (Score: 85/100)
- "WordPress: Everything You Need to Know" (Score: 80/100)
- "How to Master WordPress in 2025" (Score: 90/100)
- "WordPress Tips and Best Practices" (Score: 75/100)
- "Complete WordPress Tutorial for Beginners" (Score: 70/100)
Example Meta Descriptions:
- "Learn how to optimize your WordPress website for better search engine rankings. This comprehensive guide covers keyword research, on-page SEO..." (Score: 85/100)
- "Discover everything about wordpress. Learn tips, best practices, and expert insights in this comprehensive guide." (Score: 75/100)
- "Learn about wordpress with our detailed guide. Get actionable tips and expert advice to help you succeed." (Score: 70/100)
Using OpenAI Integration (Optional)
For enhanced AI-powered suggestions:
- Get API Key: Visit OpenAI Platform
- Configure Settings: Go to Settings > AI Title & Meta
- Enable OpenAI: Check "Enable OpenAI" checkbox
- Enter API Key: Paste your OpenAI API key
- Save Settings: Click "Save Settings"
Benefits:
- More creative and contextual suggestions
- Better understanding of content nuances
- Industry-specific terminology
- Tone and style matching
Settings Page
Access via Settings > AI Title & Meta or plugin action link.
Configuration Options
Enable OpenAI:
- Checkbox to toggle OpenAI integration
- Default: Disabled (uses built-in heuristics)
OpenAI API Key:
- Secure password field
- Supports all OpenAI API keys (sk-...)
- Stored in WordPress options table
- Visual confirmation when configured
Help Section:
- How it works guide
- Feature list
- Usage instructions
How It Works
Keyword Extraction Algorithm
- Text Normalization: Strip HTML, convert to lowercase, remove punctuation
- Word Splitting: Break content into individual words
- Stop Word Filtering: Remove common words (a, an, the, is, etc.)
- Length Filtering: Exclude words shorter than 4 characters
- Frequency Counting: Count occurrences of each word
- Ranking: Sort by frequency (most frequent first)
- Return Top 10: Display most relevant keywords
Stop Words List (106 words):
- Articles: a, an, the
- Conjunctions: and, but, or
- Prepositions: in, on, at, by, for, from, to, with
- Common verbs: is, are, was, were, has, have, will, can
- Pronouns: i, you, we, they, them, their, our, my, me
Title Generation
Template-Based Formulas:
"The Ultimate Guide to %s"
"%s: Everything You Need to Know"
"How to Master %s in 2025"
"%s Tips and Best Practices"
"Complete %s Tutorial for Beginners"
"%s vs %s: Which Is Better?"
"Top 10 %s Strategies That Work"
"%s Explained: A Comprehensive Guide"
Scoring Criteria (0-100):
- Base score: 50
- Optimal length (50-60 chars): +30
- Acceptable length (40-70 chars): +15
- Power words (ultimate, guide, complete, how to, best, top, tips): +10
- Contains numbers: +10
Title Optimization:
- Length check: 40-70 characters accepted, 50-60 optimal
- Power word injection: Adds "Ultimate" if missing
- Year addition: Appends current year if relevant
- Keyword placement: Primary keyword at start
- Character count: Prevents truncation in SERPs
Meta Description Generation
Sources:
- Content-Based: Extracts first meaningful sentences (20-30 words)
- Template-Based: Uses proven description formulas
Templates:
"Discover everything about %s. Learn tips, best practices, and expert insights in this comprehensive guide."
"Learn about %s with our detailed guide. Get actionable tips and expert advice to help you succeed."
"Complete guide to %s. Find helpful information, practical tips, and everything you need to know."
Scoring Criteria (0-100):
- Base score: 50
- Optimal length (120-160 chars): +30
- Acceptable length (100-170 chars): +15
- Top keyword present: +10
- Second keyword present: +10
- Third keyword present: +10
Optimization:
- Length: 120-160 characters (Google's display limit)
- Keyword density: Top 3 keywords included
- Actionable language: "Learn", "Discover", "Get"
- Complete sentences: No truncation mid-word
Content Statistics
Word Count:
- Uses PHP
str_word_count()function - Excludes HTML tags and special characters
- Accurate count for all languages
Reading Time:
- Formula: Word count ÷ 200 words per minute
- Rounded up to nearest minute
- Minimum: 1 minute
Display Format:
Content Length: 1,234 words
Reading Time: 6 min
SEO Plugin Integration
Yoast SEO
Title Field: #yoast_wpseo_title
Meta Field: #yoast_wpseo_metadesc
Apply Process:
- Detect Yoast SEO (
WPSEO_VERSIONconstant) - Find input fields by ID
- Set value with
.val() - Trigger
inputevent for Yoast's live preview
Rank Math
Title Field: #rank_math_title
Meta Field: #rank_math_description
Apply Process:
- Detect Rank Math (
RankMathclass) - Find input fields by ID
- Set value with
.val() - Trigger
inputevent for Rank Math's live preview
Fallback (No SEO Plugin)
Title: Updates post title field (#title)
- Works with Classic Editor
- Works with Gutenberg (dispatches to
core/editor)
Meta: Shows alert to install SEO plugin
- Meta descriptions require SEO plugin
- User notified to install Yoast SEO or Rank Math
JavaScript API
Global Object: ATMS
Methods:
init()- Initialize plugincacheDom()- Cache DOM elementsbindEvents()- Attach event handlersgenerateSuggestions()- AJAX request for suggestionsgetEditorContent()- Extract content from Gutenberg/TinyMCEhandleSuccess()- Process successful responsehandleError()- Handle AJAX errorsrenderResults()- Display all resultsrenderKeywords()- Display keyword badgesrenderTitleSuggestions()- Display title optionsrenderMetaSuggestions()- Display meta optionscreateSuggestionElement()- Build suggestion HTMLapplySuggestion()- Apply to SEO pluginapplyTitle()- Update title fieldapplyMeta()- Update meta fieldshowError()- Display error message
Editor Compatibility
Gutenberg (Block Editor):
if (typeof wp !== "undefined" && wp.data && wp.data.select("core/editor")) {
const blocks = wp.data.select("core/editor").getBlocks();
return blocks.map((block) => wp.blocks.getBlockContent(block)).join("\n\n");
}
TinyMCE (Classic Editor):
if (typeof tinymce !== "undefined" && tinymce.get("content")) {
return tinymce.get("content").getContent();
}
Textarea Fallback:
return $("#content").val();
Styling & UI
Design System
Colors:
- Primary:
#2271b1(WordPress blue) - Success:
#00a32a(green) - Error:
#721c24(red) - Background:
#f9f9f9(light gray) - Border:
#e5e5e5(medium gray) - Text:
#1d2327(dark gray)
Typography:
- Base: 13px (WordPress admin standard)
- Headings: 14px, bold
- Labels: 12px
- Meta info: 11px
Spacing:
- Section padding: 15px
- Element gap: 10px
- Keyword gap: 8px
- Stat gap: 20px
Responsive Breakpoint: 782px (WordPress admin standard)
Components
Meta Box Header:
- Description + Generate button
- Flexbox layout
- Bottom border separator
Loading State:
- Centered spinner
- Loading message
- Gray background
Keyword Badges:
- Blue border and text
- White background
- Inline-flex layout
- 8px gap between items
Suggestion Cards:
- White background
- Hover effect (border + shadow)
- Score badge (color-coded)
- Apply button
- Character count
Score Badges:
- High (80-100): Green background
- Medium (60-79): Yellow background
- Low (0-59): Red background
Stats Section:
- Blue left border
- Light blue background
- Icon indicators
WordPress Hooks
Admin Hooks
Actions:
plugins_loaded→atms_load_textdomain()- Load translationsadd_meta_boxes→atms_add_meta_box()- Register meta boxadmin_enqueue_scripts→atms_enqueue_scripts()- Load assetsadmin_menu→atms_add_settings_page()- Add settings pageadmin_init→atms_register_settings()- Register options
Filters:
plugin_action_links_{basename}→atms_add_action_links()- Add links
AJAX Actions
Actions:
wp_ajax_atms_generate_suggestions- Generate suggestions (admin)
Constants Defined
YT_AI_TITLE_META_VERSION // Plugin version (1.0.0)
YT_AI_TITLE_META_BASENAME // Plugin base name
YT_AI_TITLE_META_PATH // Plugin directory path
YT_AI_TITLE_META_URL // Plugin directory URL
Use Cases
1. Blog Post Optimization
Scenario: You've written a comprehensive blog post and need SEO optimization.
Workflow:
- Write your blog post content
- Click "Generate Suggestions"
- Review keyword extraction results
- Apply highest-scoring title
- Apply best meta description
- Publish or update post
Result: SEO-optimized post with proven title formulas and keyword-rich meta descriptions.
2. Bulk Content Optimization
Scenario: You have existing content that needs better titles and meta descriptions.
Workflow:
- Edit existing post
- Generate suggestions based on current content
- Apply suggestions to improve SEO
- Update post
- Repeat for other posts
Result: Improved search rankings for existing content library.
3. A/B Testing Headlines
Scenario: You want to test different headline approaches.
Workflow:
- Generate 5 title suggestions
- Note scores for each option
- Test different formulas (guide, tips, tutorial)
- Monitor which performs better
- Use insights for future content
Result: Data-driven headline selection.
4. Landing Page Optimization
Scenario: Creating a high-converting landing page.
Workflow:
- Write compelling landing page copy
- Generate SEO-optimized titles
- Use suggestions for page title and H1
- Apply meta description for SERPs
- Monitor conversion rates
Result: SEO-friendly landing pages that convert.
5. Content Strategy Planning
Scenario: Planning content based on keyword research.
Workflow:
- Draft content outline
- Generate suggestions to see keyword extraction
- Adjust content to emphasize important keywords
- Regenerate to verify keyword prominence
- Finalize with optimized titles and metas
Result: Content aligned with target keywords.
Best Practices
Content Guidelines
Minimum Content Length:
- Minimum: 100 words
- Recommended: 300+ words
- Ideal: 500-1,000 words
Quality Over Quantity:
- ✅ Clear, focused content
- ✅ Proper headings and structure
- ✅ Keyword-rich but natural language
- ❌ Keyword stuffing
- ❌ Duplicate content
- ❌ Auto-generated fluff
Keyword Strategy:
- Use primary keyword in first paragraph
- Include secondary keywords naturally
- Use variations and synonyms
- Maintain 1-2% keyword density
Title Optimization
Best Practices:
- ✅ Keep between 50-60 characters
- ✅ Include primary keyword
- ✅ Use power words (ultimate, guide, complete)
- ✅ Add numbers when appropriate (Top 10, 5 Ways)
- ✅ Include year for freshness (2025)
- ❌ Exceed 70 characters (truncated in SERPs)
- ❌ Use all caps or excessive punctuation
- ❌ Stuff multiple keywords unnaturally
Title Formulas That Work:
- How-to: "How to [Achieve Benefit] in [Timeframe]"
- List: "X [Type] That [Benefit]"
- Guide: "The Ultimate Guide to [Topic]"
- Comparison: "[Option A] vs [Option B]: Which Is Better?"
- Tutorial: "Complete [Topic] Tutorial for [Audience]"
Meta Description Optimization
Best Practices:
- ✅ Keep between 120-160 characters
- ✅ Include primary keyword in first 120 chars
- ✅ Write complete sentences
- ✅ Include call-to-action (Learn, Discover, Get)
- ✅ Accurately describe content
- ❌ Exceed 160 characters
- ❌ Duplicate title word-for-word
- ❌ Use generic descriptions
Description Formulas:
- Problem-Solution: "[Problem]? Learn [solution] with [benefit]."
- Value Proposition: "Discover [benefit]. Get [feature] and [feature]."
- Authority: "Expert guide to [topic]. [Benefit] in [timeframe]."
SEO Plugin Usage
Yoast SEO Users:
- Apply title to SEO title field (not H1)
- Review Yoast's readability score
- Check SEO analysis feedback
- Adjust based on recommendations
Rank Math Users:
- Apply to Rank Math fields
- Review score in sidebar
- Check focus keyword analysis
- Optimize based on suggestions
No SEO Plugin:
- Install Yoast SEO or Rank Math
- Meta descriptions require SEO plugin
- Titles can still be applied to H1
Performance
Optimization Features
Conditional Loading:
- Assets only load on post edit screens
- No frontend performance impact
- Admin-only JavaScript and CSS
Efficient Processing:
- Single-pass content analysis
- Array-based keyword counting
- No external API calls (by default)
- Cached DOM element references
Minimal Overhead:
- JavaScript: ~5KB (minified)
- CSS: ~3KB (minified)
- PHP: ~850 lines, class-based architecture
- Database: Uses existing post meta
Impact Metrics
Admin Performance:
- Page load: <5ms overhead
- Asset load: ~8KB total
- AJAX request: 200-500ms (built-in) / 1-3s (OpenAI)
- Memory: <1MB additional
Frontend Performance:
- Zero impact (admin-only plugin)
- No frontend scripts
- No database queries
Security
Security Features:
- ✅ Nonce Verification: All AJAX requests verified
- ✅ Capability Checks:
edit_postrequired for operations - ✅ Input Sanitization:
sanitize_text_field(),wp_kses_post() - ✅ Output Escaping:
esc_html(),esc_attr(),esc_url() - ✅ Direct Access Prevention:
! defined( 'WPINC' ) - ✅ Prepared Statements: Not applicable (uses options API)
- ✅ Secure Storage: API keys in wp_options table
- ✅ Password Fields: API key field type="password"
- ✅ No External Calls: Optional OpenAI integration only
API Key Security:
- Stored in WordPress options table
- Never displayed in plain text
- Password field with masking
- Never transmitted to client (except on settings page)
- Can be encrypted with additional security plugins
Compatibility
Requirements:
- WordPress: 5.8 or higher
- PHP: 7.4 or higher
- Browser: Modern browsers (Chrome, Firefox, Safari, Edge)
Works With
Editors:
- ✅ Gutenberg (Block Editor)
- ✅ Classic Editor
- ✅ Any custom editor using standard WordPress hooks
SEO Plugins:
- ✅ Yoast SEO (all versions)
- ✅ Rank Math (all versions)
- ⚠️ All in One SEO (manual copy/paste)
- ⚠️ SEOPress (manual copy/paste)
Post Types:
- ✅ Posts
- ✅ Pages
- ✅ All public custom post types
Page Builders:
- ✅ Elementor
- ✅ Beaver Builder
- ✅ Divi Builder
- ✅ Any builder that uses post content
Themes:
- ✅ All WordPress themes (admin-only interface)
Troubleshooting
Suggestions Not Generating
Check:
- Content exists and is not empty
- JavaScript console for errors (F12)
- AJAX URL is correct (wp-admin/admin-ajax.php)
- WordPress REST API is enabled
- No JavaScript conflicts with other plugins
Solutions:
- Clear browser cache
- Disable other plugins temporarily
- Check browser console for errors
- Verify nonce is being created
Apply Button Not Working
Check:
- Yoast SEO or Rank Math is installed and active
- SEO plugin meta boxes are visible on the page
- Field IDs haven't changed (plugin updates)
- JavaScript console for errors
Solutions:
- Install/activate Yoast SEO or Rank Math
- Refresh the page
- Check if SEO plugin meta box is loaded
- Use manual copy/paste as fallback
OpenAI Integration Not Working
Check:
- API key is entered correctly (starts with sk-)
- "Enable OpenAI" checkbox is checked
- OpenAI account has available credits
- API key has required permissions
- Network allows OpenAI API calls
Solutions:
- Verify API key on OpenAI platform
- Check account billing status
- Test with built-in heuristics first
- Check server firewall settings
Keywords Not Relevant
Possible Causes:
- Content too short (< 100 words)
- Too many stop words
- Technical jargon not in algorithm
- Content lacks focus
Solutions:
- Add more content (300+ words recommended)
- Use keywords more frequently
- Include keyword variations
- Focus content on specific topic
Limitations
What This Plugin Does NOT Do:
- ❌ Automatic application of suggestions
- ❌ Content writing or generation (without OpenAI)
- ❌ Bulk processing of multiple posts
- ❌ Scheduled optimization
- ❌ Historical analytics or tracking
- ❌ Integration with Google Search Console
- ❌ Competitor analysis
- ❌ Backlink tracking
What This Plugin DOES:
- ✅ Keyword extraction from content
- ✅ SEO title generation (template-based)
- ✅ Meta description creation
- ✅ Content statistics
- ✅ One-click apply to SEO plugins
- ✅ Score-based ranking
- ✅ Optional OpenAI enhancement
- ✅ Real-time analysis
Changelog
Version 1.0.0 (2024)
Initial Release:
- Built-in keyword extraction algorithm
- SEO title suggestion engine
- Meta description generator
- Content statistics calculator
- Yoast SEO integration
- Rank Math integration
- Admin meta box interface
- Score-based ranking system
- Settings page with OpenAI integration
- WPCS compliant code
- Translation ready
- Responsive design
Roadmap
Future features under consideration:
- [ ] OpenAI GPT integration for enhanced suggestions
- [ ] Bulk optimization for multiple posts
- [ ] Custom template creation
- [ ] Historical suggestion tracking
- [ ] A/B testing integration
- [ ] Google Search Console insights
- [ ] Competitor analysis
- [ ] Multilingual support enhancements
- [ ] Custom stop words list
- [ ] Export/import suggestion templates
- [ ] Analytics dashboard
- [ ] WP-CLI commands
FAQ
Q: Does this plugin write content for me? A: No, the built-in mode analyzes your existing content. With OpenAI integration, it can generate more creative suggestions.
Q: Do I need an OpenAI API key? A: No, the plugin works perfectly with built-in heuristics. OpenAI is optional for enhanced suggestions.
Q: Does this work with Gutenberg? A: Yes, fully compatible with both Gutenberg and Classic Editor.
Q: Can I use this without Yoast or Rank Math? A: Yes, but meta descriptions require an SEO plugin. Titles can be applied to the post title.
Q: How are keywords extracted? A: Frequency-based algorithm that excludes common stop words and ranks by occurrence.
Q: Are suggestions SEO-optimized? A: Yes, titles are 50-60 characters and descriptions are 120-160 characters.
Q: Can I edit suggestions before applying? A: Yes, you can manually edit in the SEO plugin fields after applying.
Q: Does this affect page load speed? A: No, it's admin-only with zero frontend impact.
Q: Is this GDPR compliant? A: Yes, no user data is collected or transmitted (unless using OpenAI).
Q: Can I use custom title templates? A: Currently uses built-in templates. Custom templates planned for future versions.
Support
For issues, questions, or contributions:
- GitHub: krasenslavov/yt-ai-title-meta-suggestion
- Issues: Report bugs on GitHub Issues
- Contributions: Pull requests welcome
Credits
- Author: Krasen Slavov
- Website: krasenslavov.com
- License: GPL v2 or later
License
This plugin is licensed under the GPL v2 or later.
Copyright (C) 2024 Krasen Slavov
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Additional Resources
- WordPress Plugin Handbook
- WordPress Coding Standards
- Yoast SEO Developer Docs
- Rank Math Developer Docs
- SEO Best Practices
- OpenAI API Documentation
Note: This plugin is part of the YT WordPress Plugin Boilerplate series, designed for focused, single-feature plugins following WordPress best practices.