Files
igny8/v2/Igny8 V2 New Final Plans/IGNY8-Plugin-Build-Plan.md
IGNY8 VPS (Salman) 128b186865 temproary docs uplaoded
2026-03-23 09:02:49 +00:00

38 KiB

IGNY8 WordPress Plugin — Complete Build Plan

By: Alorig Systems
For: AI Agent (Claude Code / Opus 4.6 in VSCode)
Version: 1.0
Date: March 2026
Status: Reference Document for Development


Executive Summary

The IGNY8 WordPress Plugin is the first site-level SEO plugin for WordPress. Unlike Yoast, RankMath, or AIOSEO — which optimize individual pages against individual keywords — IGNY8 analyzes and optimizes your entire site's architecture, taxonomy structure, internal linking graph, and topical authority.

Two modes:

  1. Standalone (Free): Full SEO plugin replacing Yoast/RankMath — meta tags, schema, sitemaps, redirects, social OG, analytics, GSC, internal linking analysis, site-level architecture insights. No IGNY8 app account needed.
  2. Connected (Premium): Links to IGNY8 SaaS platform — AI content generation, SAG blueprint sync, automated taxonomy creation, content pipeline, automated publishing, full site architecture generation.

Distribution: Free on WordPress.org repository. Connected features require IGNY8 app subscription.


Part 1: Product Positioning

1.1 What Exists Today (Page-Level Plugins)

Every current SEO plugin does essentially the same thing:

  • Set a focus keyword per page
  • Analyze keyword density, heading usage, meta length
  • Generate XML sitemap
  • Add meta tags and OG tags
  • Basic schema markup
  • Redirect manager

They optimize pages in isolation. They have no concept of how pages relate to each other, whether your site has topical gaps, whether your taxonomy structure creates authority, or whether your internal linking flows power to the right pages.

1.2 What IGNY8 Plugin Does Differently

Site-Level Intelligence (Free):

  • Taxonomy coverage analysis: "You have 45 categories but only 12 have content — 33 are empty archive pages hurting your authority"
  • Orphan page detection: "These 28 posts have zero internal links pointing to them"
  • Topical gap analysis: "Your site covers 'dog food' extensively but has zero content about 'dog nutrition' — a closely related topic your competitors rank for"
  • Internal link graph visualization: which pages are over-linked, under-linked, or isolated
  • Cluster detection: automatically groups existing content into topical clusters and identifies imbalances
  • Thin content identification: pages below content thresholds that need expansion
  • Cannibalization detection: multiple pages targeting the same keyword

Site Architecture Generation (Connected):

  • SAG blueprint sync: receive the full dimensional structure (attributes, clusters, keywords) from IGNY8 platform
  • Automated taxonomy creation: create all WordPress taxonomies, terms, and hierarchies from the SAG blueprint
  • Content pipeline: pull AI-generated content for posts, pages, term descriptions, hub pages
  • Publishing automation: scheduled publishing with review workflow
  • Ongoing optimization: content updates, new cluster detection, gap filling

1.3 The Free → Connected Funnel

User installs free plugin → sees site-level insights they've never had before → dashboard shows: "IGNY8 has identified 23 topical gaps and 15 missing taxonomy terms. Connect to IGNY8 to generate the full blueprint and auto-fill these gaps." → User signs up for IGNY8 app → Connects via API key → Full architecture generation begins.

The free plugin must be genuinely excellent. Not a crippled demo. A real replacement for RankMath that makes people switch.


Part 2: Module Architecture

2.1 Module Map

Module Free Connected Replaces
SEO Core Full Enhanced Yoast, RankMath, AIOSEO
Schema Full Enhanced Schema Pro, JSON-LD plugins
Sitemap Full Full Yoast sitemap, XML Sitemap Generator
Redirects Full Full Redirection plugin
Social & OG Full Enhanced Social Warfare, OG plugins
Analytics Full Full MonsterInsights, GA plugins
Site Intelligence Basic Full Nothing (unique)
Internal Linking Suggestions Auto-linking Link Whisper
GSC Integration Dashboard Full + Indexing API Search Console plugins
Content Sync Full
SAG Structure Full
Taxonomy Manager Full
Socializer Basic sharing Auto-posting Buffer, Hootsuite
SMTP Full Full WP Mail SMTP

2.2 Free vs Connected Feature Split

SEO Core — Free:

  • Focus keyword per post/page
  • SEO title + meta description with SERP preview
  • Canonical URL management
  • Robots meta (index/noindex, follow/nofollow)
  • Content analysis (keyword density, headings, readability, internal links)
  • Title tag template system (site-wide patterns)
  • Breadcrumb generation + schema
  • Webmaster verification codes

SEO Core — Connected additions:

  • Multi-keyword optimization (primary + secondary keywords from cluster)
  • Cluster-aware content scoring ("this post covers 60% of its cluster's keyword targets")
  • Auto-suggest missing headings based on cluster keyword gaps
  • Content freshness scoring and update recommendations

Site Intelligence — Free (Basic):

  • Total page count by type (posts, pages, products, terms)
  • Orphan pages list (no internal links)
  • Thin content list (below word count threshold)
  • Empty taxonomy terms list
  • Basic internal link count per page
  • Duplicate title/meta detection
  • Cannibalization warnings (same keyword on multiple pages)

Site Intelligence — Connected (Full):

  • Full SAG gap analysis (missing clusters, missing terms, missing attribute values)
  • Cluster health scores (content coverage, link density, keyword rankings per cluster)
  • Competitor gap comparison (connected to IGNY8 platform competitor analysis)
  • Architecture blueprint with recommended new pages/terms
  • Priority queue: which gaps to fill first (by volume, difficulty, existing authority)
  • Topical authority scoring per cluster

Internal Linking — Free:

  • Link audit: total internal links, broken links, nofollow links
  • Per-post link count and suggestions ("this post could link to these 5 related posts")
  • Orphan content detection
  • Link equity distribution overview

Internal Linking — Connected:

  • SAG-aware automatic link suggestions based on cluster relationships
  • Bulk link insertion tool
  • Link template rules ("always link [keyword] to [URL]")
  • Contextual link placement (AI-determined best anchor text and position)
  • Link priority scoring based on cluster importance

Socializer — Free:

  • Lightweight share buttons (pure CSS/JS, no external dependencies)
  • Position options: floating, above/below content, inline
  • Networks: Facebook, X, LinkedIn, Pinterest, WhatsApp, Telegram, Email, Copy Link
  • Social profile links management (site-wide)
  • OG tags (handled by SEO Core module)

Socializer — Connected:

  • Auto-post to social platforms on WordPress publish
  • Per-platform message templates
  • Scheduling (publish now or delay)
  • Platform API connections: X, Facebook Pages, LinkedIn, Instagram
  • Dynamic OG image generation from post title + featured image
  • Social post performance tracking (clicks, engagement)
  • Bulk social scheduling for existing content

Part 3: Plugin File Structure

igny8/
├── igny8.php                              # Plugin header, bootstrap, module loader
├── readme.txt                             # WordPress.org readme
├── uninstall.php                          # Cleanup on uninstall
│
├── includes/
│   ├── class-igny8.php                    # Main plugin class
│   ├── class-module-manager.php           # Module registration + activation
│   ├── class-api-client.php               # IGNY8 platform API client (for connected mode)
│   ├── class-connection.php               # API key validation, connection status
│   ├── class-utils.php                    # Shared utilities
│   ├── class-ajax.php                     # Shared AJAX handler
│   ├── class-rest-api.php                 # Plugin REST endpoints for theme communication
│   ├── class-compatibility.php            # Detect and disable conflicting plugins
│   │
│   ├── modules/
│   │   │
│   │   ├── seo/
│   │   │   ├── class-seo-module.php               # Module entry, hooks
│   │   │   ├── class-meta-box.php                 # Post/page SEO meta box
│   │   │   ├── class-title-tag.php                # Title tag management + templates
│   │   │   ├── class-meta-tags.php                # Meta description, robots, canonical
│   │   │   ├── class-content-analysis.php         # Real-time SEO scoring
│   │   │   ├── class-breadcrumbs.php              # Breadcrumb generation + shortcode
│   │   │   ├── class-opengraph.php                # OG + Twitter Card meta tags
│   │   │   ├── class-robots-txt.php               # Virtual robots.txt manager
│   │   │   ├── class-verification.php             # Webmaster tool verification codes
│   │   │   └── views/
│   │   │       ├── meta-box.php                   # Meta box template
│   │   │       └── settings.php                   # SEO settings page template
│   │   │
│   │   ├── schema/
│   │   │   ├── class-schema-module.php            # Module entry
│   │   │   ├── class-schema-generator.php         # JSON-LD output
│   │   │   ├── class-schema-article.php           # Article, BlogPosting, NewsArticle
│   │   │   ├── class-schema-local-business.php    # LocalBusiness + subtypes
│   │   │   ├── class-schema-product.php           # Product (WooCommerce integration)
│   │   │   ├── class-schema-faq.php               # FAQPage
│   │   │   ├── class-schema-howto.php             # HowTo
│   │   │   ├── class-schema-organization.php      # Organization / Person
│   │   │   ├── class-schema-webpage.php           # WebPage, CollectionPage
│   │   │   ├── class-schema-breadcrumb.php        # BreadcrumbList
│   │   │   ├── class-schema-service.php           # Service (for service CPT)
│   │   │   └── class-schema-custom.php            # Custom schema field (advanced users)
│   │   │
│   │   ├── sitemap/
│   │   │   ├── class-sitemap-module.php           # Module entry
│   │   │   ├── class-sitemap-index.php            # Sitemap index generator
│   │   │   ├── class-sitemap-posts.php            # Post type sitemaps
│   │   │   ├── class-sitemap-taxonomies.php       # Taxonomy sitemaps
│   │   │   ├── class-sitemap-images.php           # Image sitemap
│   │   │   └── class-sitemap-xsl.php              # XSL stylesheet for browser viewing
│   │   │
│   │   ├── redirects/
│   │   │   ├── class-redirects-module.php         # Module entry
│   │   │   ├── class-redirect-manager.php         # CRUD for redirects
│   │   │   ├── class-404-monitor.php              # 404 logging + one-click redirect
│   │   │   ├── class-auto-redirect.php            # Auto-redirect on slug change
│   │   │   └── views/
│   │   │       └── redirects-admin.php            # Redirect management page
│   │   │
│   │   ├── analytics/
│   │   │   ├── class-analytics-module.php         # Module entry
│   │   │   ├── class-ga-connector.php             # Google Analytics (GA4)
│   │   │   ├── class-gtm-connector.php            # Google Tag Manager
│   │   │   ├── class-pixel-manager.php            # Facebook, TikTok, Pinterest pixels
│   │   │   └── class-script-manager.php           # Custom header/footer scripts
│   │   │
│   │   ├── site-intelligence/
│   │   │   ├── class-intelligence-module.php      # Module entry
│   │   │   ├── class-site-audit.php               # Full site audit runner
│   │   │   ├── class-orphan-detector.php          # Pages with no internal links
│   │   │   ├── class-thin-content.php             # Below-threshold content
│   │   │   ├── class-empty-terms.php              # Taxonomy terms with no content
│   │   │   ├── class-cannibalization.php          # Keyword cannibalization detection
│   │   │   ├── class-duplicate-meta.php           # Duplicate titles/descriptions
│   │   │   ├── class-cluster-detector.php         # Auto-group existing content into clusters
│   │   │   ├── class-gap-analysis.php             # [Connected] SAG gap analysis
│   │   │   ├── class-cluster-health.php           # [Connected] Per-cluster scoring
│   │   │   └── views/
│   │   │       ├── dashboard.php                  # Site intelligence dashboard
│   │   │       └── audit-results.php              # Detailed audit results page
│   │   │
│   │   ├── linking/
│   │   │   ├── class-linking-module.php           # Module entry
│   │   │   ├── class-link-auditor.php             # Internal link audit
│   │   │   ├── class-link-suggestions.php         # Per-post link suggestions
│   │   │   ├── class-orphan-links.php             # Orphan content list
│   │   │   ├── class-link-graph.php               # Link equity distribution map
│   │   │   ├── class-auto-linker.php              # [Connected] Automatic link insertion
│   │   │   ├── class-link-rules.php               # [Connected] Keyword → URL link rules
│   │   │   └── views/
│   │   │       ├── link-audit.php                 # Link audit page
│   │   │       └── link-suggestions.php           # Suggestions interface
│   │   │
│   │   ├── gsc/
│   │   │   ├── class-gsc-module.php               # Module entry
│   │   │   ├── class-gsc-auth.php                 # Google OAuth flow
│   │   │   ├── class-gsc-dashboard.php            # Search performance dashboard
│   │   │   ├── class-gsc-keywords.php             # Keyword position tracking
│   │   │   ├── class-gsc-indexing.php             # [Connected] Indexing API requests
│   │   │   ├── class-gsc-url-inspection.php       # [Connected] URL inspection status
│   │   │   └── views/
│   │   │       ├── gsc-dashboard.php              # GSC data display
│   │   │       └── gsc-connect.php                # OAuth connection page
│   │   │
│   │   ├── socializer/
│   │   │   ├── class-socializer-module.php        # Module entry
│   │   │   ├── class-share-buttons.php            # Frontend share buttons (pure CSS/JS)
│   │   │   ├── class-social-profiles.php          # Site-wide social links
│   │   │   ├── class-auto-poster.php              # [Connected] Auto-post on publish
│   │   │   ├── class-twitter-api.php              # [Connected] X/Twitter API
│   │   │   ├── class-facebook-api.php             # [Connected] Facebook Pages API
│   │   │   ├── class-linkedin-api.php             # [Connected] LinkedIn API
│   │   │   ├── class-og-image-generator.php       # [Connected] Dynamic OG images
│   │   │   └── views/
│   │   │       ├── share-settings.php             # Share button configuration
│   │   │       └── social-accounts.php            # Connected accounts management
│   │   │
│   │   ├── smtp/
│   │   │   ├── class-smtp-module.php              # Module entry
│   │   │   ├── class-smtp-mailer.php              # Override wp_mail()
│   │   │   ├── class-email-log.php                # Send log
│   │   │   └── class-email-test.php               # Test email utility
│   │   │
│   │   ├── content-sync/                          # [Connected only]
│   │   │   ├── class-sync-module.php              # Module entry
│   │   │   ├── class-content-puller.php           # Pull content from IGNY8 app
│   │   │   ├── class-content-mapper.php           # Map IGNY8 content types → WP post types
│   │   │   ├── class-image-downloader.php         # Download + attach AI images
│   │   │   ├── class-sync-queue.php               # Sync job queue + status
│   │   │   ├── class-publish-scheduler.php        # Scheduled publishing with review
│   │   │   └── views/
│   │   │       ├── sync-dashboard.php             # Sync status + controls
│   │   │       └── content-review.php             # Review queue before publish
│   │   │
│   │   └── sag/                                   # [Connected only]
│   │       ├── class-sag-module.php               # Module entry
│   │       ├── class-blueprint-sync.php           # Receive SAG blueprint from IGNY8 app
│   │       ├── class-taxonomy-builder.php         # Create WP taxonomies from SAG attributes
│   │       ├── class-term-builder.php             # Create taxonomy terms from attribute values
│   │       ├── class-cluster-manager.php          # Cluster → hub page mapping
│   │       ├── class-structure-visualizer.php     # Visual site structure map
│   │       └── views/
│   │           ├── sag-dashboard.php              # SAG structure overview
│   │           ├── blueprint-review.php           # Review blueprint before applying
│   │           └── structure-map.php              # Visual cluster/taxonomy map
│   │
│   ├── admin/
│   │   ├── class-admin-menu.php                   # Admin menu registration
│   │   ├── class-dashboard.php                    # Main plugin dashboard
│   │   ├── class-setup-wizard.php                 # First-run setup wizard
│   │   ├── class-compatibility-notice.php         # Notices for conflicting plugins
│   │   ├── views/
│   │   │   ├── dashboard.php                      # Main dashboard template
│   │   │   ├── wizard/
│   │   │   │   ├── step-1-site-type.php           # Site type selection
│   │   │   │   ├── step-2-seo-import.php          # Import from Yoast/RankMath
│   │   │   │   ├── step-3-basics.php              # Site name, logo, org type
│   │   │   │   ├── step-4-social.php              # Social profiles
│   │   │   │   ├── step-5-connect.php             # IGNY8 API key (optional)
│   │   │   │   └── step-6-done.php                # Summary + next steps
│   │   │   └── connect-prompt.php                 # "Connect to IGNY8" upsell card
│   │   └── assets/
│   │       ├── admin.css
│   │       ├── admin.js
│   │       ├── meta-box.css
│   │       └── meta-box.js
│   │
│   ├── frontend/
│   │   ├── class-head-output.php                  # All <head> tag output (meta, schema, OG)
│   │   ├── class-share-output.php                 # Share button HTML/CSS/JS
│   │   └── assets/
│   │       ├── share-buttons.css                  # Share button styles (<3KB)
│   │       └── share-buttons.js                   # Share button JS (<2KB)
│   │
│   ├── data/
│   │   ├── class-installer.php                    # Database table creation
│   │   ├── class-migrator.php                     # Version migration handler
│   │   └── class-importer.php                     # Import from Yoast/RankMath/AIOSEO
│   │
│   └── integrations/
│       ├── class-woocommerce.php                  # WooCommerce-specific SEO/schema
│       └── class-theme-bridge.php                 # Communication layer with companion theme
│
└── languages/
    └── igny8.pot

Part 4: Data Architecture

4.1 Custom Database Tables

-- Redirects
{prefix}igny8_redirects
  id              BIGINT AUTO_INCREMENT PRIMARY KEY
  source_url      VARCHAR(500) NOT NULL
  target_url      VARCHAR(500) NOT NULL
  type            SMALLINT DEFAULT 301           -- 301, 302, 307
  hits            INT DEFAULT 0
  last_hit        DATETIME NULL
  created_at      DATETIME NOT NULL
  is_active       TINYINT(1) DEFAULT 1
  INDEX idx_source (source_url(191))

-- 404 Log
{prefix}igny8_404_log
  id              BIGINT AUTO_INCREMENT PRIMARY KEY
  url             VARCHAR(500) NOT NULL
  referrer        VARCHAR(500) NULL
  user_agent      VARCHAR(500) NULL
  ip_hash         VARCHAR(64) NULL               -- Hashed for privacy
  hits            INT DEFAULT 1
  first_hit       DATETIME NOT NULL
  last_hit        DATETIME NOT NULL
  is_resolved     TINYINT(1) DEFAULT 0
  redirect_id     BIGINT NULL                    -- FK to redirects table
  INDEX idx_url (url(191))

-- Internal Links Map
{prefix}igny8_link_map
  id              BIGINT AUTO_INCREMENT PRIMARY KEY
  source_post_id  BIGINT NOT NULL
  target_post_id  BIGINT NOT NULL
  anchor_text     VARCHAR(500) NULL
  is_follow       TINYINT(1) DEFAULT 1
  link_position   VARCHAR(20) NULL               -- content, sidebar, footer
  last_crawled    DATETIME NOT NULL
  INDEX idx_source (source_post_id)
  INDEX idx_target (target_post_id)

-- Site Audit Results
{prefix}igny8_audit_results
  id              BIGINT AUTO_INCREMENT PRIMARY KEY
  audit_type      VARCHAR(50) NOT NULL            -- orphan, thin, cannibalization, etc.
  post_id         BIGINT NULL
  term_id         BIGINT NULL
  severity        VARCHAR(20) NOT NULL            -- critical, warning, info
  message         TEXT NOT NULL
  data            LONGTEXT NULL                   -- JSON extra data
  audit_date      DATETIME NOT NULL
  is_resolved     TINYINT(1) DEFAULT 0
  INDEX idx_type_date (audit_type, audit_date)

-- Email Log (SMTP module)
{prefix}igny8_email_log
  id              BIGINT AUTO_INCREMENT PRIMARY KEY
  to_email        VARCHAR(320) NOT NULL
  subject         VARCHAR(500) NOT NULL
  status          VARCHAR(20) NOT NULL            -- sent, failed
  error_message   TEXT NULL
  sent_at         DATETIME NOT NULL

-- Form Entries (if forms included — see note below)
-- Forms may move to theme plugin instead

-- Sync Queue (Connected mode)
{prefix}igny8_sync_queue
  id              BIGINT AUTO_INCREMENT PRIMARY KEY
  igny8_content_id VARCHAR(100) NOT NULL
  content_type    VARCHAR(50) NOT NULL
  sync_status     VARCHAR(20) NOT NULL            -- pending, synced, failed, review
  wp_post_id      BIGINT NULL
  wp_term_id      BIGINT NULL
  data            LONGTEXT NULL                   -- JSON payload from IGNY8
  created_at      DATETIME NOT NULL
  synced_at       DATETIME NULL
  error_message   TEXT NULL
  INDEX idx_status (sync_status)

4.2 Post Meta Keys

All IGNY8 post meta keys use the _igny8_ prefix:

_igny8_focus_keyword          -- Primary focus keyword
_igny8_secondary_keywords     -- JSON array of secondary keywords
_igny8_seo_title              -- Custom SEO title (overrides template)
_igny8_meta_description       -- Meta description
_igny8_canonical_url          -- Canonical URL override
_igny8_robots_index           -- 1 = index, 0 = noindex
_igny8_robots_follow          -- 1 = follow, 0 = nofollow
_igny8_og_title               -- OG title override
_igny8_og_description         -- OG description override
_igny8_og_image               -- OG image override (attachment ID)
_igny8_twitter_title          -- Twitter card title override
_igny8_twitter_description    -- Twitter card description override
_igny8_schema_type            -- Schema type override (Article, HowTo, FAQ, etc.)
_igny8_schema_custom          -- Custom JSON-LD (advanced)
_igny8_seo_score              -- Last calculated SEO score (0-100)
_igny8_content_score          -- Content quality score
_igny8_readability_score      -- Readability score
_igny8_cluster_id             -- [Connected] Mapped cluster ID
_igny8_related_links          -- JSON array: [{post_id, anchor_text, priority}]
_igny8_link_suggestions       -- JSON array of suggested internal links
_igny8_last_analysis          -- Timestamp of last content analysis
_igny8_igny8_content_id       -- [Connected] ID in IGNY8 platform
_igny8_sync_status            -- [Connected] synced, pending, modified

4.3 Term Meta Keys

_igny8_term_seo_title         -- SEO title for term archive
_igny8_term_meta_description  -- Meta description for term archive
_igny8_term_robots_index      -- index/noindex
_igny8_term_og_image          -- OG image for term
_igny8_term_content           -- Rich HTML content for term landing page
_igny8_term_cluster_id        -- [Connected] Mapped cluster ID
_igny8_term_sag_attribute     -- [Connected] SAG attribute this term belongs to
_igny8_term_sag_level         -- [Connected] Primary, Secondary, Tertiary
_igny8_term_faq               -- JSON array of FAQ items for term
_igny8_term_related_terms     -- JSON array of related term IDs
_igny8_term_igny8_id          -- [Connected] ID in IGNY8 platform

4.4 Options Keys

igny8_version                      -- Plugin version (for migrations)
igny8_active_modules               -- JSON array of enabled module slugs
igny8_seo_settings                 -- JSON: title templates, separator, defaults
igny8_schema_settings              -- JSON: org type, name, logo, knowledge graph
igny8_sitemap_settings             -- JSON: included post types, taxonomies
igny8_social_profiles              -- JSON: {facebook, twitter, linkedin, youtube, ...}
igny8_analytics_settings           -- JSON: GA ID, GTM ID, pixel IDs
igny8_redirect_settings            -- JSON: auto-redirect on slug change, etc.
igny8_smtp_settings                -- JSON: host, port, user, pass, encryption
igny8_share_settings               -- JSON: networks, position, style
igny8_linking_settings             -- JSON: auto-link rules, max links per post
igny8_intelligence_settings        -- JSON: audit schedule, thresholds
igny8_gsc_token                    -- Encrypted Google OAuth token
igny8_gsc_property                 -- Selected Search Console property
igny8_api_key                      -- [Connected] IGNY8 platform API key
igny8_api_connected                -- [Connected] boolean
igny8_site_id                      -- [Connected] IGNY8 site ID
igny8_last_sync                    -- [Connected] last sync timestamp
igny8_sag_blueprint                -- [Connected] JSON: full SAG structure cache

Part 5: Theme ↔ Plugin Contract

The IGNY8 plugin communicates with the companion theme (and any theme) through a defined interface. The theme is never required — the plugin works with any theme. But the companion theme knows how to read IGNY8 data natively.

5.1 How Theme Reads Plugin Data

The plugin registers a public API class that the theme (or any theme) can use:

// Theme checks if IGNY8 is active:
if (function_exists('igny8')) {
    $seo_title = igny8()->seo->get_title($post_id);
    $breadcrumbs = igny8()->seo->get_breadcrumbs();
    $related_links = igny8()->linking->get_related_links($post_id);
    $schema = igny8()->schema->get_json_ld($post_id);
    $share_buttons = igny8()->socializer->render_share_buttons($post_id);
    $term_content = igny8()->seo->get_term_content($term_id);
    $cluster_nav = igny8()->linking->get_cluster_navigation($post_id);
}

5.2 What Theme Reads for Display

Data Source Theme Usage
Related links _igny8_related_links post meta "Related Articles" section
Cluster navigation Plugin API: cluster siblings "More in this topic" sidebar/footer
Term landing page content _igny8_term_content term meta Term archive template hero section
Term FAQs _igny8_term_faq term meta FAQ accordion on term pages
Related terms _igny8_term_related_terms term meta "Related topics" block on term pages
Breadcrumbs Plugin API or shortcode [igny8_breadcrumbs] Breadcrumb display
Share buttons Plugin API or shortcode [igny8_share] Share button display
SAG attribute label _igny8_term_sag_attribute term meta Attribute-based navigation sections
SEO scores _igny8_seo_score post meta Optional score badge in admin

5.3 REST API Endpoints (Plugin Provides)

For advanced theme features or AJAX interactions:

GET  /wp-json/igny8/v1/related/{post_id}        -- Related content for a post
GET  /wp-json/igny8/v1/cluster/{cluster_id}      -- All content in a cluster
GET  /wp-json/igny8/v1/term/{term_id}/content    -- Term landing page data
GET  /wp-json/igny8/v1/structure/overview         -- Site structure summary
POST /wp-json/igny8/v1/sync/trigger              -- [Connected] Trigger sync
GET  /wp-json/igny8/v1/audit/summary             -- Site audit summary

Part 6: SEO Import System

Critical for adoption. Users switching from Yoast or RankMath need a seamless migration.

6.1 Supported Imports

Source Plugin Data Imported
Yoast SEO Focus keyword, SEO title, meta description, robots meta, canonical, OG settings, redirects (premium), XML sitemap settings
RankMath Focus keywords (multiple), SEO title, meta description, robots, canonical, OG, schema type, redirects, 404 monitor data
AIOSEO Title, description, robots, canonical, OG, schema

6.2 Import Process

  1. Plugin detects installed SEO plugins on activation
  2. Setup wizard offers import in Step 2
  3. Import runs in background (Celery-style via WP Cron for large sites)
  4. Progress bar shows completion
  5. After import, option to deactivate source plugin
  6. All imported data stored in IGNY8's own meta keys (no dependency on source plugin data)

Part 7: Setup Wizard

Step 1: Site Type

Select site type for default schema and configuration:

  • Blog / Content Site
  • Business / Corporate
  • eCommerce (WooCommerce)
  • Local Business / Services
  • SaaS / Software
  • Portfolio / Agency

Step 2: SEO Import

  • Detects Yoast, RankMath, AIOSEO
  • One-click import of all SEO data
  • Shows count of posts/pages/terms to import

Step 3: Site Basics

  • Site name (for title tag template)
  • Organization or Person (for schema)
  • Logo upload (for schema)
  • Default title separator

Step 4: Social Profiles

  • Facebook, X/Twitter, LinkedIn, YouTube, Instagram, Pinterest URLs
  • Default social sharing image

Step 5: Connect to IGNY8 (Optional)

  • API key input field
  • "Don't have an account? Sign up free" link
  • Connection test + site pairing
  • Skip option (clearly labeled, no pressure)

Step 6: Done

  • Summary of configuration
  • "Run your first site audit" CTA
  • Links to key settings pages
  • Quick tips for getting started

Part 8: Compatibility Layer

8.1 Conflicting Plugin Detection

On activation, detect and warn about:

  • Yoast SEO (meta tags, sitemap conflict)
  • RankMath (meta tags, sitemap, schema conflict)
  • AIOSEO (meta tags conflict)
  • XML Sitemap Generator (sitemap conflict)
  • Schema plugins (duplicate schema)
  • Redirection plugin (redirect conflict)

Show admin notice: "IGNY8 replaces [Plugin Name]. We can import your data and you can then deactivate it. [Import & Deactivate] [Dismiss]"

8.2 WooCommerce Integration

When WooCommerce is active:

  • Product schema auto-generated from WooCommerce data
  • Product category term meta available
  • Product attribute taxonomies detected and included in SAG structure
  • Shop/product archive pages get SEO meta box
  • Product sitemap includes price, availability, images

8.3 Theme Bridge

When companion theme is active:

  • Plugin detects current_theme_supports('igny8')
  • Enables enhanced data passing (related links, cluster nav, term content)
  • Disables features the theme handles natively (breadcrumb HTML, share button HTML)
  • Plugin focuses on data + <head> output; theme handles visual display

When any other theme:

  • Plugin handles all output itself (breadcrumbs via shortcode, share buttons via auto-insertion)
  • All features work independently
  • Less visually integrated but fully functional

Part 9: Build Execution Plan

Phase 1: Foundation (Days 1-3)

Day Task
1 Plugin skeleton: main file, module manager, admin menu, dashboard page
1 Module base class, activation/deactivation lifecycle, option storage
2 Setup wizard: 6-step flow, site type config, social profiles
2 Database installer: create all custom tables
3 REST API base: endpoint registration, authentication
3 Compatibility layer: detect conflicting plugins, admin notices

Phase 2: SEO Core (Days 4-7)

Day Task
4 SEO meta box: focus keyword, title, description, SERP preview
4 Title tag management: templates, separator, dynamic tokens
5 Meta tags output: description, robots, canonical in <head>
5 Content analysis: keyword density, heading check, readability scoring
6 OG + Twitter Card meta tags
6 Breadcrumbs: generation, shortcode, schema
7 Robots.txt manager, verification codes
7 SEO settings page: global defaults, title templates, noindex rules

Phase 3: Schema + Sitemap + Redirects (Days 8-10)

Day Task
8 Schema generator: Article, Organization, WebPage, BreadcrumbList, WebSite+SearchAction
8 Schema: FAQPage, HowTo, LocalBusiness, Service
9 Schema: Product (WooCommerce), custom schema field
9 XML sitemap: index, post type sitemaps, taxonomy sitemaps, image sitemap
10 Redirects: CRUD, 404 monitor, auto-redirect on slug change, CSV import/export

Phase 4: Site Intelligence (Days 11-13)

Day Task
11 Site audit runner: orchestrate all checks
11 Orphan detector, thin content scanner, empty terms checker
12 Cannibalization detection, duplicate meta finder
12 Cluster detector (auto-group existing content by topic similarity)
13 Intelligence dashboard: audit results, scores, charts
13 Scheduled re-audit via WP Cron

Phase 5: Internal Linking (Days 14-15)

Day Task
14 Link crawl: scan all content, build link map table
14 Link audit page: per-post counts, broken links, orphans
15 Link suggestions: analyze content and suggest internal links
15 Link graph visualization (simple table/chart, not full D3 graph)

Phase 6: Socializer + Analytics + SMTP (Days 16-18)

Day Task
16 Share buttons: pure CSS/JS, position options, network selection
16 Social profiles management
17 Analytics: GA4 connector, GTM, pixel manager, custom scripts
17 SMTP: mailer override, email log, test email
18 GSC: OAuth flow, dashboard, keyword tracking display

Phase 7: SEO Import (Days 19-20)

Day Task
19 Yoast importer: read all Yoast meta keys, map to IGNY8 keys
19 RankMath importer: read all RankMath meta keys, map to IGNY8 keys
20 AIOSEO importer
20 Import UI: progress bar, background processing, completion report

Phase 8: Connected Mode — Content Sync (Days 21-23)

Day Task
21 API client: authenticate with IGNY8 platform, connection management
21 Content puller: fetch content from IGNY8 API
22 Content mapper: map IGNY8 content types to WP post types, handle images
22 Sync queue: pending/synced/failed status, retry logic
23 Publish scheduler: review queue, scheduled publishing
23 Sync dashboard: status, controls, history

Phase 9: Connected Mode — SAG Structure (Days 24-27)

Day Task
24 Blueprint sync: receive SAG structure JSON from IGNY8 platform
24 Blueprint review UI: show proposed taxonomies/terms before applying
25 Taxonomy builder: create WordPress taxonomies from SAG attributes
25 Term builder: create terms from attribute values, set hierarchies
26 Cluster manager: map clusters to hub pages/terms
26 Term content sync: populate term descriptions and landing page content
27 Structure visualizer: visual map of clusters → taxonomies → content
27 Connected enhancements: multi-keyword scoring, cluster-aware analysis, auto-linker

Phase 10: Polish + Package (Days 28-30)

Day Task
28 Cross-module testing: all modules enabled/disabled combinations
28 Performance: ensure zero frontend impact when features aren't used
29 WordPress.org compliance: readme.txt, screenshots, FAQ
29 Internationalization audit: all strings translatable
30 Build script: generate release zip
30 Documentation: hooks, filters, developer guide

Part 10: Performance Rules

The plugin must be invisible in terms of frontend performance when features aren't actively outputting content.

Rule Implementation
Zero CSS on frontend unless share buttons are enabled Conditional enqueue only
Zero JS on frontend unless share buttons or dynamic features are used Conditional enqueue
All <head> output in a single hook at priority 1 No scattered wp_head hooks
Schema output as single JSON-LD block Not multiple schema blocks
Admin assets only on IGNY8 admin pages Screen check before enqueue
Meta box assets only on post editor screens Screen check before enqueue
Site audit runs via WP Cron, never on page load Background processing
Link crawl is background process, never blocks requests WP Cron scheduled
All option reads use object cache when available wp_cache_get/set
Connected mode API calls are async, never block page load WP Cron + queue

Part 11: WordPress.org Submission Requirements

For free distribution on WordPress.org repo:

  • GPL v2+ license
  • No phone-home without user consent
  • No premium upsell in admin notices (only on dedicated settings page)
  • All assets (CSS, JS, images) included — no external CDN
  • No minified-only JS/CSS — source files must be readable
  • Proper text domain and i18n
  • Sanitize all inputs, escape all outputs
  • Use WordPress APIs (no direct SQL without $wpdb)
  • No tracking without opt-in
  • readme.txt with proper headers, FAQ, changelog, screenshots

End of IGNY8 Plugin Build Plan