<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: yizheng</title>
    <description>The latest articles on DEV Community by yizheng (@yizheng_f9ce51e8416445700).</description>
    <link>https://dev.to/yizheng_f9ce51e8416445700</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3004769%2F8914e9e7-e81d-4882-8c27-de7bb9851953.png</url>
      <title>DEV Community: yizheng</title>
      <link>https://dev.to/yizheng_f9ce51e8416445700</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yizheng_f9ce51e8416445700"/>
    <language>en</language>
    <item>
      <title>I Built an AI Search Visibility Checker — and Found Out My Own Site Was Invisible</title>
      <dc:creator>yizheng</dc:creator>
      <pubDate>Wed, 15 Jul 2026 03:08:56 +0000</pubDate>
      <link>https://dev.to/yizheng_f9ce51e8416445700/i-built-an-ai-search-visibility-checker-and-found-out-my-own-site-was-invisible-di0</link>
      <guid>https://dev.to/yizheng_f9ce51e8416445700/i-built-an-ai-search-visibility-checker-and-found-out-my-own-site-was-invisible-di0</guid>
      <description>&lt;h1&gt;
  
  
  I Built an AI Search Visibility Checker — and Found Out My Own Site Was Invisible
&lt;/h1&gt;

&lt;p&gt;I launched my first Apify Actor a few weeks ago. Spent time on SEO, structured data, the whole checklist.&lt;/p&gt;

&lt;p&gt;Then I asked ChatGPT: "What's the best tool for X in my space?"&lt;/p&gt;

&lt;p&gt;My product wasn't mentioned. Claude didn't know I existed. Gemini had the wrong description.&lt;/p&gt;

&lt;p&gt;Not because my site was bad. Because I had no idea what AI "sees" when it looks at a page.&lt;/p&gt;

&lt;p&gt;So I built something to find out.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Nobody's Talking About Yet
&lt;/h2&gt;

&lt;p&gt;Most SEO tools measure Google rankings. Keyword positions, backlinks, domain authority. The usual stuff.&lt;/p&gt;

&lt;p&gt;But more people are asking ChatGPT directly instead of typing keywords into Google. And LLMs don't evaluate your site the same way search engines do.&lt;/p&gt;

&lt;p&gt;A site can have perfect Google rankings, great Core Web Vitals, strong backlinks — and still be invisible to AI. Broken structured data, a misconfigured robots.txt, or the LLM simply never heard of you.&lt;/p&gt;

&lt;p&gt;I found this out the hard way. My own site scored 45/100 on the first audit I ever ran.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;GEO Auditor runs two things in one pass:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical audit&lt;/strong&gt; — crawlability, robots.txt, sitemap, structured data, social meta, performance. Standard stuff, automated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM probes&lt;/strong&gt; — sends targeted queries to ChatGPT, Claude, and Gemini (via OpenRouter) and checks if each one knows your site exists, and whether it gets the facts right.&lt;/p&gt;

&lt;p&gt;The output is a report with scores. JSON, Markdown, or a self-contained HTML page with radar charts if you want the visual version.&lt;/p&gt;

&lt;p&gt;Honestly, the hardest part wasn't building the crawler or hooking up the APIs. It was deciding what a "good" score even means when nobody has defined what AI visibility looks like yet.&lt;/p&gt;




&lt;h2&gt;
  
  
  Things I Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;robots.txt is the silent killer.&lt;/strong&gt; The first site I tested was my own blog. The culprit? An old robots.txt I'd copied from a template years ago that blocked &lt;code&gt;/api/&lt;/code&gt;. I'd forgotten it was even there. AI crawlers treated the whole site as lower priority because of it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structured data parsers are stricter than you think.&lt;/strong&gt; One beta tester ran the audit and found their JSON-LD had a syntax error that Google's validator didn't catch, but Claude silently failed on. Their products were invisible to AI because the data was technically there but unparseable for some models.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM responses vary wildly.&lt;/strong&gt; I ran the same URL through the tool 10 times over 3 days. ChatGPT found it 8/10 times. Claude 6/10. Gemini 3/10. A single manual check is essentially meaningless. You need a sample size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Most people don't know they're invisible.&lt;/strong&gt; I shared the tool with a few indie hacker friends. Everyone thought their site was fine. Most weren't. Nobody checks for this.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Do Differently
&lt;/h2&gt;

&lt;p&gt;If I were starting this over:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test with real users earlier. I spent too long polishing the HTML report before validating that anyone actually wanted LLM probes&lt;/li&gt;
&lt;li&gt;Ship a simpler MVP first. Could have launched with just the technical audit and added LLM probes in v2&lt;/li&gt;
&lt;li&gt;Price it properly. Every LLM probe costs OpenRouter credits. At what I'm charging, it barely breaks even. I'm eating the cost for now to see if people actually use it&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How to Check Your Own Site
&lt;/h2&gt;

&lt;p&gt;If you're curious where your site stands, it's on the &lt;a href="https://apify.com/yizheng/geo-auditor" rel="noopener noreferrer"&gt;Apify Store&lt;/a&gt;. You paste your URL and your OpenRouter API key, wait about 8 minutes (the LLM probes take time), and get a report.&lt;/p&gt;

&lt;p&gt;A few honest limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need your own OpenRouter key — I didn't want shared rate limits to mess with results&lt;/li&gt;
&lt;li&gt;~8 minute runtime, not real-time&lt;/li&gt;
&lt;li&gt;Single page per run right now&lt;/li&gt;
&lt;li&gt;One run is a snapshot, not a definitive verdict&lt;/li&gt;
&lt;li&gt;Only works on public pages&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm still figuring out what "AI visibility" should look like as a metric. A few ideas I'm playing with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tracking visibility over time with weekly scans&lt;/li&gt;
&lt;li&gt;Adding Perplexity and Grok probes&lt;/li&gt;
&lt;li&gt;A simple checklist for non-technical founders who don't want to run a tool&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've built something similar or have thoughts on how AI citation should work — I'd genuinely like to hear.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built in public. I'm also on &lt;a href="https://blog.fork.work/" rel="noopener noreferrer"&gt;fork.work&lt;/a&gt; where I write about building things with Apify.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>apify</category>
      <category>seo</category>
      <category>ai</category>
      <category>indiehackers</category>
    </item>
    <item>
      <title>Neumorphism Profile Card UI Design</title>
      <dc:creator>yizheng</dc:creator>
      <pubDate>Tue, 07 Oct 2025 01:03:35 +0000</pubDate>
      <link>https://dev.to/yizheng_f9ce51e8416445700/neumorphism-profile-card-ui-design-41l4</link>
      <guid>https://dev.to/yizheng_f9ce51e8416445700/neumorphism-profile-card-ui-design-41l4</guid>
      <description></description>
    </item>
  </channel>
</rss>
