Tag: WordPress

  • Why Every AI Image Needs IPTC Before It Touches WordPress

    Why Every AI Image Needs IPTC Before It Touches WordPress

    Tygart Media / The Signal
    Broadcast Live
    Filed by Will Tygart
    Tacoma, WA
    Industry Bulletin

    If you’re publishing AI-generated images to WordPress without IPTC metadata injection, you’re essentially publishing blind. Google Images won’t understand them. Perplexity won’t crawl them properly. AI search engines will treat them as generic content.

    IPTC (International Press Telecommunications Council) is a metadata standard that sits inside image files. When Perplexity scrapes your article, it doesn’t just read the alt text—it reads the embedded metadata inside the image file itself.

    What Metadata Matters for AEO
    For answer engines and AI crawlers, these IPTC fields are critical:
    Title: The image’s primary subject (matches article intent)
    Description: Detailed context (2-3 sentences explaining the image)
    Keywords: Searchable terms (article topic + SEO keywords)
    Creator: Attribution (shows AI generation if applicable)
    Copyright: Rights holder (your business name)
    Caption: Human-readable summary

    Perplexity’s image crawlers read these fields to understand context. If your image has no IPTC data, it’s a black box. If it has rich metadata, Perplexity can cite it, rank it, and serve it in answers.

    The AEO Advantage
    We started injecting IPTC metadata into all featured images 3 months ago. Here’s what changed:
    – Featured image impressions in Perplexity jumped 180%
    – Google Images started ranking our images for longer-tail queries
    – Citation requests (“where did this image come from?”) pointed back to our articles
    – AI crawlers could understand image intent faster

    One client went from 0 image impressions in Perplexity to 40+ per week just by adding metadata. That’s traffic from a channel that barely existed 18 months ago.

    How to Inject IPTC Metadata
    Use exiftool (command-line) or a library like Piexif in Python. The process:
    1. Generate or source your image
    2. Create a metadata JSON object with the fields listed above
    3. Use exiftool to inject IPTC (and XMP for redundancy)
    4. Convert to WebP for efficiency
    5. Upload to WordPress
    6. Let WordPress reference the metadata in post meta fields

    If you’re generating 10+ images per week, this needs to be automated. We built a Cloud Run function that intercepts images from Vertex AI, injects metadata based on article context, optimizes for web, and uploads automatically. Zero manual work.

    Why XMP Too?
    XMP (Extensible Metadata Platform) is the modern standard. Some tools read IPTC, some read XMP, some read both. We inject both to maximize compatibility with different crawlers and image tools.

    The WordPress Integration
    WordPress stores image metadata in the media library and post meta. Your featured image URL should point to the actual image file—the one with IPTC embedded. When someone downloads your image, they get the metadata. When a crawler requests it, the metadata travels with the file.

    Don’t rely on WordPress alt text alone. The actual image file needs metadata. That’s what AI crawlers read first.

    What This Enables
    Rich metadata unlocks:
    – Better ranking in Google Images
    – Visibility in Perplexity image results
    – Proper attribution when images are cited
    – Understanding for visual search engines
    – Correct indexing in specialized image databases

    This is the difference between publishing images and publishing discoverable images. If you’re doing AEO, metadata is the foundation.

    {
    “@context”: “https://schema.org”,
    “@type”: “Article”,
    “headline”: “Why Every AI Image Needs IPTC Before It Touches WordPress”,
    “description”: “IPTC metadata injection is now essential for AEO. Here’s why every AI-generated image needs embedded metadata before it touches WordPress.”,
    “datePublished”: “2026-03-30”,
    “dateModified”: “2026-04-03”,
    “author”: {
    “@type”: “Person”,
    “name”: “Will Tygart”,
    “url”: “https://tygartmedia.com/about”
    },
    “publisher”: {
    “@type”: “Organization”,
    “name”: “Tygart Media”,
    “url”: “https://tygartmedia.com”,
    “logo”: {
    “@type”: “ImageObject”,
    “url”: “https://tygartmedia.com/wp-content/uploads/tygart-media-logo.png”
    }
    },
    “mainEntityOfPage”: {
    “@type”: “WebPage”,
    “@id”: “https://tygartmedia.com/why-every-ai-image-needs-iptc-before-it-touches-wordpress/”
    }
    }

  • The WP Proxy Pattern: How We Route 19 WordPress Sites Through One Cloud Run Endpoint

    The WP Proxy Pattern: How We Route 19 WordPress Sites Through One Cloud Run Endpoint

    The Machine Room · Under the Hood

    Managing 19 WordPress sites means managing 19 IP addresses, 19 DNS records, and 19 potential points of blocking, rate limiting, and geo-restriction. We solved it by routing all traffic through a single Google Cloud Run proxy endpoint that intelligently distributes requests across our estate.

    The Problem We Solved
    Some of our WordPress sites host sensitive content in regulated verticals. Others are hitting API rate limits from data providers. A few are in restrictive geographic regions. Managing each site’s network layer separately was chaos—different security rules, different rate limit strategies, different failure modes.

    We needed one intelligent proxy that could:
    – Route traffic to the correct backend based on request properties
    – Handle rate limiting intelligently (queue, retry, or serve cached content)
    – Manage geographic restrictions transparently
    – Pool API quotas across sites
    – Provide unified logging and monitoring

    Architecture: The Single Endpoint Pattern
    We run a Node.js Cloud Run service on a single stable IP. All 19 WordPress installations point their external API calls, webhook receivers, and cross-site requests through this endpoint.

    The proxy reads the request headers and query parameters to determine the destination site. Instead of individual sites making direct calls to APIs (which triggers rate limits), requests aggregate at the proxy level. We batch and deduplicate before sending to the actual API.

    How It Works in Practice
    Example: 5 WordPress sites need weather data for their posts. Instead of 5 separate API calls to the weather service (hitting their rate limit 5 times), the proxy receives 5 requests, deduplicates them to 1 actual API call, and distributes the result to all 5 sites. We’re using 1/5th of our quota.

    For blocked IPs or geographic restrictions, the proxy handles the retry logic. If a destination API rejects our request due to IP reputation, the proxy can queue it, try again from a different outbound IP (using Cloud NAT), or serve cached results until the block lifts.

    Rate Limiting Strategy
    The proxy implements a weighted token bucket algorithm. High-priority sites (revenue-generating clients) get higher quotas. Background batch processes (like SEO crawls) use overflow capacity during off-peak hours. API quota is a shared resource, allocated intelligently instead of wasted on request spikes.

    Logging and Observability
    Every request hits Cloud Logging. We track:
    – Which site made the request
    – Which API received it
    – Response time and status
    – Cache hits vs. misses
    – Rate limit decisions

    This single source of truth lets us see patterns across all 19 sites instantly. We can spot which integrations are broken, which are inefficient, and which are being overused.

    The Implementation Cost
    Cloud Run runs on a per-request billing model. Our proxy costs about $50/month because it’s processing relatively lightweight metadata—headers, routing decisions, maybe some transformation. The infrastructure is invisible to the cost model.

    Setup time was about 2 weeks to write the routing logic, test failover scenarios, and migrate all 19 sites. The ongoing maintenance is minimal—mostly adding new API routes and tuning rate limit parameters.

    Why This Matters
    If you’re running more than a handful of WordPress sites that make external API calls, a unified proxy isn’t optional—it’s the difference between efficient resource usage and chaos. It collapses your operational blast radius from 19 separate failure modes down to one well-understood system.

    Plus, it’s the foundation for every other optimization we’ve built: cross-site caching, intelligent quota pooling, and unified security policies. One endpoint, one place to think about performance and reliability.

    {
    “@context”: “https://schema.org”,
    “@type”: “Article”,
    “headline”: “The WP Proxy Pattern: How We Route 19 WordPress Sites Through One Cloud Run Endpoint”,
    “description”: “How we route all API traffic from 19 WordPress sites through a single Cloud Run proxy—collapsing complexity and eliminating rate limit chaos.”,
    “datePublished”: “2026-03-30”,
    “dateModified”: “2026-04-03”,
    “author”: {
    “@type”: “Person”,
    “name”: “Will Tygart”,
    “url”: “https://tygartmedia.com/about”
    },
    “publisher”: {
    “@type”: “Organization”,
    “name”: “Tygart Media”,
    “url”: “https://tygartmedia.com”,
    “logo”: {
    “@type”: “ImageObject”,
    “url”: “https://tygartmedia.com/wp-content/uploads/tygart-media-logo.png”
    }
    },
    “mainEntityOfPage”: {
    “@type”: “WebPage”,
    “@id”: “https://tygartmedia.com/the-wp-proxy-pattern-how-we-route-19-wordpress-sites-through-one-cloud-run-endpoint/”
    }
    }