Blog

  • WordPress GEO Checklist: Get Cited in ChatGPT & AI Overviews

    WordPress GEO Checklist: Get Cited in ChatGPT & AI Overviews

    AI search engines don’t just look for keywords. They want authoritative, structured, and highly specific entities to pull into their response windows. If your WordPress site lacks the technical signals Large Language Models (LLMs) need, you’ll stay invisible in ChatGPT results and Google AI Overviews. Following The WordPress GEO Checklist: Getting Your Site Cited in ChatGPT and AI Overviews is how you move from traditional SEO to Generative Engine Optimization (GEO).

    The cost of invisibility in the generative era

    Organic traffic is shifting toward zero-click searches. The AI just provides the answer directly on the search engine results page. When a user asks a complex question, the LLM pulls info from multiple trusted sources. If those sources don’t include your domain, you lose the top-of-funnel awareness that used to come from blue links. seen sites with high traditional rankings lose nearly 40% of their visibility because they failed to use structured data that AI crawlers could easily parse.

    Ignoring GEO means your content becomes part of the training data but never becomes the cited source. This creates a dangerous loop. You provide the value that powers the AI, but the AI never sends the traffic back to you. You’re essentially subsidizing the growth of AI models without any of the attribution benefits. To avoid this, you must treat your WordPress site as a structured database rather than just a collection of articles.

    Implementing the WordPress GEO Checklist: Getting Your Site Cited in ChatGPT and AI Overviews

    GEO requires a fundamental shift in how you manage your content architecture. You can’t just write better prose. You have to ensure that prose is wrapped in technical metadata that proves its intent and authority. The first pillar of this checklist involves structured data implementation. While most bloggers use basic Schema.org plugins, AI engines require much more granularity to establish your site as a primary source.

    Step-1: Move beyond simple Article schema. You should implement specialized schemas like TechArticle, HowTo, or FAQPage depending on your content type. If you’re writing about cloud infrastructure, using SoftwareApplication or Dataset schemas can help LLMs understand the technical specifics of your tutorials. This is particularly important when you’re managing complex data, such as when you’re Mastering Amazon S3 Data Upload and need to provide specific technical parameters that an AI can extract.

    Step-2: Focus on entity density and semantic richness. LLMs work through vector embeddings, which represent the relationship between concepts. To rank in AI overviews, your content must contain high-density clusters of related entities. For example, if you’re discussing WordPress performance, don’t just mention "speed." Mention specific technical components like "object caching," "database indexing," "CDN edge locations," and "TTFB (Time to First Byte)." This semantic clustering allows the model to confidently map your content to a specific expert topic.

    Technical signals and structured data requirements

    To help your chances of being cited, your WordPress site must communicate its reliability through technical verification. AI models are trained to prioritize sources that demonstrate high E-E-A-T (Experience, Expertise, Authoritativeness, and Trustworthiness). You can automate much of this through advanced schema deployment. According to the GEO Checklist – Official Reference, structured data helps AI understand your site’s purpose and how it works, which is the bedrock of generative visibility.

    Schema TypePrimary Benefit for GEOBest Use Case
    TechArticleDefines technical depth and complexityTutorials, deep dives
    HowToProvides step-by-step logic for LLM extractionProcess guides, migrations
    FAQPageDirectly answers common user queriesProblem-solution posts
    AuthorConnects content to a verified identityExpert-led technical blogs

    Using a Child Theme is essential when you want to manually inject custom schema into specific templates without losing those changes during a parent theme update. This prevents your technical SEO foundation from being wiped out by a standard WordPress update. When you implement custom schema, you’re providing a "cheat sheet" for the AI crawler, making it much easier for the model to summarize your content accurately.

    Optimizing for semantic search and LLM extraction

    LLMs don’t read like humans. They process tokens and probabilistic relationships. To ensure your content is extracted, you must prioritize clarity and directness in your headings and opening sentences. When a user asks a question, the AI looks for the most direct answer to include in its summary. If your answer is buried in the third paragraph of a long-winded introduction, the AI might skip your site entirely.

    One effective method is the "Definition-First" approach. Start your section by explicitly defining the term or solving the problem in a single, punchy sentence. This mimics the way models are trained to recognize authoritative statements. For instance, if you’re explaining how to use Rclone to sync files, start with: "Rclone is a command-line program to manage files on cloud storage." This clear, entity-heavy sentence provides a high-confidence signal for the LLM.

    You should also improve your media. AI search engines are increasingly multimodal, meaning they look at image alt text and captions to understand context. If you’re illustrating a cloud migration from DigitalOcean Spaces to Amazon S3, your images should have descriptive, entity-rich alt text like "Architecture diagram showing data transfer from DigitalOcean Spaces to Amazon S3 using Rclone." This adds another layer of semantic verification for the engine.

    Verification and monitoring of AI visibility

    Unlike traditional SEO, where Google Search Console provides exact impression and click data, tracking AI visibility is harder. You can’t yet see exactly how many times ChatGPT cited your specific URL in a conversation. However, you can use proxy metrics to verify if your GEO efforts are working. The first method is monitoring your brand entity mentions across the web. As you become more cited in AI responses, your brand should appear more frequently in the training sets and real-time search results.

    Another method is to perform manual "query testing." Use ChatGPT, Perplexity, and Google AI Overviews to ask questions directly related to your niche. If you’ve followed The WordPress GEO Checklist: Getting Your Site Cited in ChatGPT and AI Overviews correctly, your site should appear in the citations or as a recommended source. If you find that competitors are being cited instead, analyze their content structure. Are they using more granular schema? Is their heading hierarchy more logical?

    If you’re managing large-scale content, you might need to automate some of these checks. For those running programmatic SEO, ensuring your database architecture is clean is vital. If you’re looking into How to Run Programmatic SEO on WordPress Without Database Bloat, you’ll find that cleaner data leads to more efficient crawling, which indirectly aids your GEO performance. High-performance sites that load quickly and deliver clean, structured HTML are prioritized by both traditional crawlers and LLM-based agents.

    Frequently Asked Questions

    How is GEO different from traditional SEO?

    Traditional SEO focuses on keywords, backlinks, and user click-through rates for blue links. GEO, or Generative Engine Optimization, focuses on entity relationships, semantic density, and structured data to ensure your content is the primary source an AI uses to construct its summarized answer.

    Will GEO replace SEO for WordPress users?

    No, GEO is an evolution of SEO rather than a replacement. You still need traditional technical SEO for indexing and ranking in standard search results, but you must add a layer of structured, entity-rich content to capture the growing segment of AI-driven search traffic.

    Does schema markup actually help in ChatGPT?

    Yes, because ChatGPT and other models use browsing tools to access live web data. When these tools crawl your site, structured data like TechArticle or FAQPage provides a high-confidence map that helps the model extract and cite your information accurately.

    What is the most important part of the GEO checklist?

    The most critical component is establishing entity authority through a combination of granular schema and semantic richness. You must prove to the model that your site is a definitive source on a specific topic by using precise technical terminology and clear, direct answers.

  • Sync assets between DigitalOcean Spaces and Amazon S3

    Well, after procrastinating for around 8 months, I finally was able to figure out way to migrate a DigitalOcean Spaces Bucket to Amazon S3. I will be sharing my steps to solve that.

    Why Migrate?

    It depends on usecase to usecase. In my case, most of my project’s infrastructure lies on Amazon AWS. Therefore, I wanted everything at one place.

    Initial Struggles?
    I didn’t find any proper documentation/ tutorial to do this. All those tools looked little scary at first.

    Solution

    Step 1- Install Rclone: If you are using Windows then install WSL2 first.

    curl https://rclone.org/install.sh | sudo bash
    

    Now, when you hit rclone in WSL2 ubuntu bash, It should show all the options.

    Step 2- Get Access Credentials from DigitalOcean and AWS

    a) Getting Credentials from DigitalOcean

    b) Getting credentials from AWS.

    Step 3- Rclone configuration: Now, we can create the configuration directory and open up a configuration file:

    mkdir -p ~/.config/rclone
    nano ~/.config/rclone/rclone.conf
    

    We will now configure our DigitalOcean Spaces region and AWS S3 region as a Rclone “remotes” in the Rclone configuration file. For Digital Ocean spaces, paste the following section in the configuration file to define the first region:

    [spaces-endpoint]
    type = s3
    env_auth = false
    access_key_id = access-key-id
    secret_access_key = secret-access-key
    endpoint = fra1.digitaloceanspaces.com
    acl = private
    
    
    [aws-s3-bucket-name]
    type = s3
    provider = AWS
    env_auth = false
    access_key_id = access-key-id
    secret_access_key = secret-access-key
    region = eu-central-1
    endpoint =
    location_constraint =
    acl =
    server_side_encryption =
    storage_class =

    Now save the file with Ctrl+O and exit with Ctrl+X

    Be sure to lock the permissions of the configuration file.

    chmod 600 ~/.config/rclone/rclone.conf
    

    Step 4- Listing Objects from S3 and Spaces Remote

    Now our configuration is read, we are now ready to transfer the files.
    Let’s check what are our remote available. Remotes are the regions that you have configured in previous steps, In our case, it would be S3 and Spaces endpoint region.

    rclone listremotes
    Output
    spaces-endpoint:
    aws-s3-endpoint:

    Both of the regions, that we have defined are available.

    Now, lets proceed and ask Rclone to get us the list of directories associated with the remotes.  (Important: make sure to add the colon to the end of remote name):

    rclone lsd spaces-endpoint:
    
    Output
           -1 2021-05-29 14:38:32        -1 spaces-bucket-name

    Now Let’s check the content of S3 region.

    rclone lsd aws-s3-endpoint:
    Output
    -1 2020-06-12 19:06:11        -1 aws-s3-bucket-name
    -1 2020-06-12 19:39:09        -1 aws-s3-bucket-name2
    -1 2020-12-21 22:01:44        -1 aws-s3-bucket-name

    Let’s take a look at the contents of a Spaces or S3 bucket. We can use the tree command and pass in the remote name, followed by a colon and the name of the “directory/bucket” we wish to list (the Spaces or S3 name):

    rclone tree spaces-endpoint:spaces-bucket-name
    
    Output
    /
    └── Images
        ├──image1.jpg
        ├── image2.jpg
        ├── image3.jpg
        ├── image4.jpg
        └── image5.jpg
    
    1 directories, 5 files

    Now lets check the content in S3 bucket.

    rclone tree aws-s3-endpoint:aws-s3-bucket-name
    
    Output
    /
    └── Images
        └── image6.jpg
    
    1 directories, 1 file

    Step 5- Copying Objects from Spaces to S3

    Lets try downloading the bucket of Spaces bucket in local machine.

    cd /mnt/d/spacesbucket/
    rclone sync spaces-endpoint:spaces-bucket-name .

    It will take a little while and once it finishes executing you will see all the content in D:/spacesbucket directory.

    Similarly, optionally if you wanna download all the content to local directory.

    cd /mnt/d/s3bucket/
    rclone sync aws-s3-endpoint:aws-s3-bucket-name .

    Now, time for the final step, which is copying all the content from Spaces bucket to S3.

    rclone sync spaces-endpoint:spaces-bucket-name aws-s3-endpoint:aws-s3-bucket-name

    It will take a while, once, it finishes you can navigation to your s3 bucket (aws-s3-bucket-name) and you can see all the content from Spaces bucket in S3 bucket.

    Bonus: Migrate from S3 to Spaces
    If you need to migrate from S3 to Spaces

    rclone sync aws-s3-endpoint:aws-s3-bucket-name spaces-endpoint:spaces-bucket-name

    Feel free to let me know in case of any questions.

  • Right way to add Google Analytics code without editing header.php

    As a webmaster/blogger, we always require something to track the traffic of the website. What could be the best option other than Google Analytics or Google Tag Manager.

    We always face such situation as in where to add the code. So, some possibilities are header.php, footer.php of main theme or copying those file to child theme folder and adding code to header.php or footer.php in child theme.

    But that’s certainly a wrong implementation. Think of a situation such as, there is a theme update of main theme, your Analytics code will be wiped off then.

    So, following is the right way to add Google Analytics or Google Tag Manager Code to WordPress.

    Step-1: Create a Child Theme of your main theme. Will write about it later on.

    Step-2: Create functions.php inside Child Theme folder

    Step-3: Add following code to your functions.php of child theme. Make sure to replace //analytics code with your Analytics or Google Tag Manager code generated from your Google Analytics or tag manager admin panel

     

    In the above code, 15 is the “priority” for where to add the Analytics code in header.  10 being default, higher the number, lower the priority. Read more about add_filter() method from here.That means, you will the code near and before </head> of page header. To verify, if the code is actually added to your WordPress header or not.

    Open Your Website, such as http://example.com in the browser, Right click and view page source and then Ctrl+F and search for “Analytics”. You will able to locate the Analytics code in WordPress Header. near to </head>

    Hope this helps.
    What do you think about the aforementioned method. How you used to add Google Analytics code to your WordPress blog/website before? Do you have any better method? Feel free to share in comments.
    In next articles, I will be covering such small tips to enhance your WordPress installation.