<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Serpair Notes]]></title><description><![CDATA[Serpair Notes]]></description><link>https://rezapratama.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 07 Nov 2026 10:52:08 GMT</lastBuildDate><atom:link href="https://rezapratama.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Google's Mueller says AI search builds on SEO. Here is the technical checklist that follows from it.]]></title><description><![CDATA[Google's John Mueller says AI systems build on SEO and technical SEO stays very relevant. A founder's checklist for technical SEO for AI search.]]></description><link>https://rezapratama.hashnode.dev/google-s-mueller-says-ai-search-builds-on-seo-here-is-the-technical-checklist-that-follows-from-it</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/google-s-mueller-says-ai-search-builds-on-seo-here-is-the-technical-checklist-that-follows-from-it</guid><category><![CDATA[SEO]]></category><category><![CDATA[AI]]></category><category><![CDATA[Startups]]></category><category><![CDATA[webdev]]></category><category><![CDATA[technical seo]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Wed, 04 Nov 2026 00:41:00 GMT</pubDate><content:encoded><![CDATA[<p>Every few months a new AI search trick goes around. Publish a "best tools" list with your own product at number one. Build special pages just for AI bots. Rewrite every page as Q&amp;A. Some of these work for a while. Then they stop.</p>
<p>In a recent interview with David Iwanow, Google's John Mueller was asked whether AEO and GEO are dead. His answer, as reported by <a href="https://www.searchenginejournal.com/google-says-technical-seo-remains-key-for-ai-seo/595550/">Search Engine Journal</a>, is a good filter for founders deciding where to spend their time:</p>
<blockquote>
<p>"I think you'll see that a lot of the AI systems, they build on SEO. So from that point of view, I think it's going to continue to be relevant. I think especially technical SEO is going to remain very relevant."</p>
</blockquote>
<p>He also said that AI systems crawl a bit differently, because some crawl for training and some for fresh content, and called that "another flavor of technical SEO."</p>
<p>Google's own guide to AI features in Search says the same thing in documentation form. There are no extra requirements to appear in AI Overviews or AI Mode. A page has to be indexed and eligible to show in Search with a snippet.</p>
<p>So what does "technical SEO for AI search" actually mean for a small team? Here is the checklist I use.</p>
<h2>Why the tricks expire</h2>
<p>Mueller didn't call every listicle spam. He described a familiar pattern: a tactic works, everyone copies it, many people do it badly, and then the systems catch up.</p>
<blockquote>
<p>"So if you go all out and say, my whole strategy is listicles, then at some point that's going to switch off and you're left with nothing really."</p>
</blockquote>
<p>And on what to do instead:</p>
<blockquote>
<p>"Building up a serious, stable foundation for a website, I think that's the most critical part."</p>
</blockquote>
<p>A simple test before you spend a week on the latest AI trick: if this tactic stopped working next quarter, would your site still be better for having done it?</p>
<h2>1. Crawlability: can the bots reach the page?</h2>
<ul>
<li>Important pages should be reachable through normal links, not only through search boxes, scripts or forms.</li>
<li>Read your robots.txt line by line. Every block on a crawler should be a choice you made, not something copied from a forum.</li>
<li>Check your CDN or firewall too. Google's guide lists allowing crawling "by any CDN or hosting infrastructure" as an SEO basic, because a bot rule can block what robots.txt allows.</li>
</ul>
<h2>2. Indexability: is it actually in the index?</h2>
<p>A crawled page is not always an indexed page. Look for:</p>
<ul>
<li>Stray <code>noindex</code> tags, often left over from a staging site</li>
<li>Canonical tags pointing at the wrong URL</li>
<li>Duplicate versions of a page (http and https, with and without a trailing slash)</li>
<li>Redirect chains</li>
</ul>
<p>Search Console's URL Inspection tool shows what Google saw. Use it on your five most important pages.</p>
<h2>3. Rendering: is the content in the HTML?</h2>
<p>If your main copy only appears after heavy JavaScript runs, some crawlers may not see it the way a browser does. Google's guide lists "making sure that important content is available in textual form" among its basics. A quick test:</p>
<pre><code class="language-bash">curl -s https://yourdomain.com/ | grep -i "your main headline"
</code></pre>
<p>If your headline or product description is missing from the raw HTML, that is worth fixing before any AEO work.</p>
<h2>4. Structure and internal links</h2>
<ul>
<li>Use clear headings that say what each section is about.</li>
<li>Link related pages to each other with plain anchor text.</li>
<li>Keep important pages a few clicks from the home page.</li>
<li>Find orphan pages (no internal links pointing in). People and crawlers both miss them.</li>
</ul>
<h2>5. Structured data that matches the page</h2>
<p>Titles, meta descriptions and structured data like Organization or Product markup give systems clean signals. Google says no special schema is needed for AI features, and that your structured data should match the visible text on the page. Broken or mismatched markup is a common gap when you compare your page with the one ranking above you.</p>
<h2>6. Backlinks are still part of the foundation</h2>
<p>Technical SEO makes your pages readable. Links help show whether they are worth reading. If AI systems build on SEO, the authority signals that help you rank are part of what they build on.</p>
<p>Mueller also warned small businesses to question what their SEO vendors are doing, since shortcuts like keyword stuffing worked "for a bit" and then stopped. Practical link work for a small team:</p>
<ul>
<li>Know which sites link to you and which pages they point at.</li>
<li>Spot spammy links early.</li>
<li>Look at the links behind competitors who outrank you, and find the relevant ones you could earn.</li>
<li>Watch for lost links to key pages. They can explain a drop that looks like a mystery.</li>
</ul>
<h2>Where AEO and GEO fit</h2>
<p>AEO and GEO are useful names for a real goal: being named when someone asks an AI a buying question. Mueller's comments suggest the route there runs through the same foundation. A sensible order:</p>
<ol>
<li>Fix what stops pages being crawled, indexed or read.</li>
<li>Clean up and strengthen your links.</li>
<li>Write clear pages that answer the questions buyers actually ask.</li>
<li>Measure whether rankings and AI mentions move over time.</li>
</ol>
<p>Most AEO advice lives in steps three and four. Many sites quietly fall short on one and two.</p>
<h2>Measure over time, not once</h2>
<p>A single audit tells you where you stand on one day. It doesn't tell you whether your fixes helped. Technical issues also come back after a redesign or a new plugin, and AI answers vary from one run to the next.</p>
<p>I work at Serpair, and this is the problem we built it for. It keeps the history of your site audits, Google rankings and AI mentions, so you can see which changes moved things and which did nothing. If you want to see where your foundation stands today, run the <a href="https://serpair.com/free-seo-geo-analysis?utm_source=hashnode&amp;utm_campaign=first50&amp;utm_content=scout">free SEO and AI visibility check</a> on your domain. No sign-up needed.</p>
<p>Which of these six do you find most often broken on early-stage sites?</p>
]]></content:encoded></item><item><title><![CDATA[Treat SEO and AI visibility like a test suite, not a guessing game]]></title><description><![CDATA[Founders change five things at once and never learn what worked. A developer-style way to track Google rankings, AI Overviews and Gemini mentions.]]></description><link>https://rezapratama.hashnode.dev/treat-seo-and-ai-visibility-like-a-test-suite-not-a-guessing-game</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/treat-seo-and-ai-visibility-like-a-test-suite-not-a-guessing-game</guid><category><![CDATA[SEO]]></category><category><![CDATA[AI]]></category><category><![CDATA[webdev]]></category><category><![CDATA[Startups]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Sun, 01 Nov 2026 03:26:06 GMT</pubDate><content:encoded><![CDATA[<p>Here is a pattern I see with almost every founder I talk to about search.</p>
<p>They read a thread about AI Overviews. In one week they rewrite the home page headline, add an FAQ section, change the pricing page title, publish two blog posts and fix a redirect. A month later, search traffic is up a bit. Or down a bit. Gemini mentions them once, then doesn't.</p>
<p>Then someone asks the obvious question: which of those changes worked? Nobody knows. So the next round of changes is a guess too.</p>
<p>As developers, we would never ship code this way. We have version control, tests and a way to compare before and after. SEO and AI visibility deserve the same habits. You don't need new tools for most of it. You need a changelog, a fixed set of queries and a little patience.</p>
<h2>1. Keep a changelog for your site, not just your code</h2>
<p>Git already tells you what changed in the code. It doesn't tell you why, or what you expected to happen in search. So keep a separate, boring file next to your repo. Mine looks like this:</p>
<pre><code class="language-markdown">## 2026-11-03
- URL: /pricing
- Change: title "Pricing" -&gt; "Acme pricing: plans for small teams, free trial"
- Why: pricing queries show us on page 2 with a vague title
- Watch: "acme pricing", "acme cost", "acme free trial"
- Review on: 2026-12-01
- Result: (fill in later: kept, reverted, inconclusive)
</code></pre>
<p>The important fields are "Watch" and "Review on". Writing down what you expect to move, before you ship, stops you from finding a story in the numbers afterwards. The "Result" line is the one most people skip, and it is the one that makes the file useful six months later.</p>
<p>Include changes you didn't plan, too. A CMS migration, a new cookie banner, a CDN setting, a theme update. Those are often the real cause when a chart suddenly drops.</p>
<h2>2. Freeze a set of queries, like test fixtures</h2>
<p>You can't tell if something improved if you measure different things each time. So pick a fixed list of queries and keep it stable, the same way you keep test fixtures stable.</p>
<p>For most early products, 15 to 30 queries is plenty. Split them into a few groups:</p>
<ul>
<li><strong>Brand:</strong> your product name, and your name plus "pricing" or "reviews".</li>
<li><strong>Category:</strong> what a buyer types when they don't know you yet, like "uptime monitoring for small sites".</li>
<li><strong>Problem:</strong> the pain in plain words, like "how do I know when my site goes down".</li>
<li><strong>Comparison:</strong> "acme vs [the usual alternative]" and "[alternative] alternatives".</li>
</ul>
<p>Write the AI version of each one as a full question, the way people actually ask Gemini or read an AI Overview. "What's a good uptime monitor for a small SaaS?" is a different test from the keyword "uptime monitor".</p>
<p>Store the list in a file in your repo. If you add a query later, note the date, so you don't compare a new query against history it never had.</p>
<h2>3. Take a baseline before you change anything</h2>
<p>This is the step everyone skips because it feels slow. Without it, the changelog is just a diary.</p>
<p>Before your next batch of changes, record:</p>
<ol>
<li><strong>Search Console numbers</strong> for each query and each page you plan to touch. Clicks, impressions and average position over the last 28 days. Export the CSV and commit it, or save it with a date in the file name.</li>
<li><strong>What Google shows</strong> for each query in a logged out browser. Does an AI Overview appear? Which sites does it link to? Where do you rank in the normal results?</li>
<li><strong>What Gemini says</strong> when you ask the question version. Are you mentioned? Is a link to your site shown? Which competitors are named?</li>
</ol>
<p>A tiny script makes this less painful. Even a CSV you fill in by hand works:</p>
<pre><code class="language-csv">date,query,surface,shown,position_or_mention,cited_url,competitors_named
2026-11-01,uptime monitoring for small sites,google_organic,yes,14,/features,"PingCo,StatusPal"
2026-11-01,uptime monitoring for small sites,ai_overview,no,,,
2026-11-01,what's a good uptime monitor for a small saas,gemini,no,,,"PingCo,UptimeHQ"
</code></pre>
<p>Note the competitors column. It matters more than it looks, and I'll come back to it.</p>
<h2>4. AI answers are flaky tests. Treat them that way</h2>
<p>If you ask Gemini the same question twice, you may get two different answers. AI Overviews also don't show for every query, and they can come and go for the same query. If you check once and see yourself mentioned, that isn't a result. It's one sample.</p>
<p>We already know how to deal with flaky tests. Run them more than once and look at the rate, not a single pass or fail.</p>
<ul>
<li>Ask each AI question a few times per check, and record how many times you were mentioned.</li>
<li>Check on a schedule, for example every week, instead of whenever you feel curious.</li>
<li>Look at the trend over several weeks. "Mentioned in 1 of 3 runs in October, 2 of 3 in November" is a signal you can work with. "Mentioned yesterday" is not.</li>
</ul>
<p>Also keep the conditions the same each time. Same browser setup, logged out, same location if you can. Personalized results will make your history noisy.</p>
<h2>5. Change one thing per page, then wait</h2>
<p>If you change the title, the intro and the internal links on a page all at once, you'll never know which one helped. One meaningful change per page per review window is a good rule. You can still change many pages at once, as long as each page has one change you can point to.</p>
<p>Then wait longer than feels comfortable. Google's own SEO Starter Guide says that some changes might take effect in a few hours and others could take several months, and that in general you likely want to wait a few weeks to assess whether your work had an effect. It also says not every change will make a noticeable difference. That is why the "Review on" date in the changelog is usually three or four weeks out, not three days.</p>
<h2>6. Use competitors and untouched pages as your control group</h2>
<p>Here is why the competitors column matters. Search results move for reasons that have nothing to do with you. Google updates, seasonal demand, a competitor's launch, a news story in your category.</p>
<p>If your rankings for a query went up after your change, check what happened to the competitors on the same query. If everyone moved up together, your change may not be the reason. If you moved and they didn't, that is much stronger evidence.</p>
<p>The same goes for your own pages. Keep a few pages you deliberately don't touch during a review window. If the changed pages improve and the untouched ones stay flat, you have something close to a control group. It isn't a lab experiment, but it is far better than a guess.</p>
<h2>7. Close the loop every month</h2>
<p>Once a month, open the changelog and fill in every "Result" line that is due. Be honest. Most entries will say "inconclusive", and that's fine. The ones that say "kept" become your playbook. The ones that say "reverted" save you from repeating them.</p>
<p>After a few months, you'll have something most early-stage teams don't: a record of what works for your site, in your category, against your competitors. That is worth more than any generic checklist, including the ones I've written.</p>
<h2>Where a tool fits</h2>
<p>Everything above works with a text file, a CSV and Search Console. I'd start that way, so you understand what you are measuring.</p>
<p>Disclosure: I work at Serpair. It is a growth-journey tracker, which means it keeps the history for you: your Google rankings, mentions in AI answers and what your competitors are doing, all over time, so you can line changes up against results and see which ones worked. If you want a starting baseline before your next batch of changes, there is a <a href="https://serpair.com/free-seo-geo-analysis?utm_source=hashnode&amp;utm_campaign=first50&amp;utm_content=scout">free SEO and GEO check</a> that runs on your public domain, and a free trial if you want to keep tracking after that.</p>
<p>Either way, write down your next change before you ship it. I'd like to hear which entry in your changelog surprised you most.</p>
]]></content:encoded></item><item><title><![CDATA[PHP2Shell vulnerability explained: 5 steps from the official advisories]]></title><description><![CDATA[Two PHP flaws, CVE-2026-109618 and CVE-2026-109619, were fixed on 21 Oct 2026. Together they're called PHP2Shell. Both can allow unauthenticated remote…]]></description><link>https://rezapratama.hashnode.dev/php2shell-vulnerability-explained-5-steps-from-the-official-advisories</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/php2shell-vulnerability-explained-5-steps-from-the-official-advisories</guid><category><![CDATA[PHP]]></category><category><![CDATA[Security]]></category><category><![CDATA[WordPress]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Thu, 22 Oct 2026 21:03:20 GMT</pubDate><content:encoded><![CDATA[<p>Two PHP flaws, CVE-2026-109618 and CVE-2026-109619, were fixed on 21 Oct 2026. Together they're called PHP2Shell. Both can allow unauthenticated remote code execution, and both are rated CVSS v4.0 9.2 (<a href="https://www.php.net/archive/2026.php">php.net</a>). The fixed releases are 8.5.12, 8.4.27, 8.3.36 and 8.2.35.</p>
<p>There's a lot of noise about this PHP vulnerability. So here are the 5 steps, each one backed by what an official advisory or vendor actually says.</p>
<h2>1. Find every PHP site you own</h2>
<p><strong>The source:</strong> CISA notes that "PHP is often a component of other software" (<a href="https://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching">CISA</a>). The PHP project says "all PHP installations serving web requests" are at risk (<a href="https://www.php.net/archive/2026.php">php.net</a>).</p>
<p><strong>What it means:</strong> your main site isn't the whole list. Count the blog, landing pages, old microsites, staging, and anything that ships PHP inside it. NCSC-NL keeps a list of third-party products that bundle PHP (<a href="https://github.com/NCSC-NL/php2shell">NCSC-NL on GitHub</a>). PHP also sits under WordPress, Drupal, Joomla and Magento.</p>
<h2>2. Check the PHP version</h2>
<p><strong>The source:</strong> Qualys warns that the version <code>php -v</code> shows on the command line "may belong to a different installation from the one serving web requests" (<a href="https://blog.qualys.com/vulnerabilities-threat-research/2026/10/20/php-announces-critical-security-release-for-two-vulnerabilities">Qualys</a>).</p>
<p><strong>What it means:</strong> check the version your website actually runs. Your hosting dashboard usually shows it. In WordPress, go to Tools &gt; Site Health &gt; Info &gt; Server. Some servers send an <code>X-Powered-By</code> header, but many hide it, and a missing header proves nothing either way.</p>
<h2>3. Update, or get your host to confirm in writing</h2>
<p><strong>The source:</strong> Cloudflare says administrators "need to update the PHP software running their applications" (<a href="https://blog.cloudflare.com/php-vulnerabilities-waf-protection/">Cloudflare</a>).</p>
<p><strong>What it means:</strong> move to 8.5.12, 8.4.27, 8.3.36 or 8.2.35. There is no official PHP2Shell release below 8.2; patch via a vendor backport or upgrade. A backported package may keep an older version number, so check your vendor's advisory rather than the number alone. PHP 8.1 reached end of life on 31 Dec 2025, and CISA says those who can't update, or still run PHP 8.1 or earlier, "should take PHP-based systems offline until they can be patched or updated". PHP 8.2 security support ends on 31 Dec 2026, so aim for 8.3 or newer when you upgrade.</p>
<h2>4. Keep a firewall on while you patch</h2>
<p><strong>The source:</strong> Cloudflare says its PHP2Shell protections are "deployed automatically on all plans with WAF deployed, including Free users", and still tells customers to patch. The PHP project says its temporary mitigations reduce some attack paths but "do not make an installation safe" (<a href="https://www.php.net/archive/2026.php">php.net</a>).</p>
<p><strong>What it means:</strong> a firewall buys you time. It doesn't replace the update.</p>
<h2>5. Watch for signs of trouble</h2>
<p><strong>The source:</strong> Amazon said "PHP2Shell is now being broadly exploited in the wild", and says to start investigations from 17 Oct, not from the disclosure date (<a href="https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/">AWS Security Blog</a>). For balance, CISA's alert on 21 Oct said it had not observed exploitation at the time of publication. The AWS statement is the more recent picture.</p>
<p><strong>What it means:</strong> turn on Google Search Console, check its Security issues report, and rotate passwords and API keys if anything looks off. Wiz showed the flaws can leak "passwords, tokens, and API keys" from server memory (<a href="https://www.wiz.io/blog/php2shell-php-rce">Wiz</a>).</p>
<h2>Why this is also an SEO problem</h2>
<p>Does your SEO tool check your PHP version? Search Console only tells you after you're hacked. Its Security issues report shows findings once Google determines a site "was hacked, or that it exhibits behavior that could potentially harm a visitor or their computer" (<a href="https://support.google.com/webmasters/answer/9044101">Search Console Help</a>). The same help page names "an older, insecure version of Drupal, Joomla! or WordPress" as a way attackers get in.</p>
<p>A hacked site can get a "This site may be hacked" label, drop out of results and out of AI Overviews. Google says a supporting link in AI Overviews "must be indexed and eligible to be shown in Google Search with a snippet" (<a href="https://developers.google.com/search/docs/appearance/ai-features">Google Search Central</a>). After cleanup, "A review can take from a few days to a few weeks to complete".</p>
<h2>A quick first look</h2>
<p>I work at Serpair. Our free check checks whether your site advertises a PHP/CMS version affected by PHP2Shell and known CVEs. It's passive: it reads the publicly advertised version and sends no attack traffic. One possible result is "version hidden / not exposed", and hidden doesn't mean patched, so confirm with your host. A passive check isn't a full security audit. Enter your site and work email for a partial report by email, then register on Serpair for the full report. Free, no credit card required.</p>
<p>All sources and the check are in <a href="https://serpair.com/blog/php2shell-vulnerability-check-founders/?utm_source=hashnode&amp;utm_medium=article&amp;utm_campaign=php-scan&amp;utm_content=article">the founder checklist for PHP2Shell</a>.</p>
<p>Which of the 5 steps took you longest? Did your host patch before you asked, or did you have to chase them?</p>
]]></content:encoded></item><item><title><![CDATA[Google's new AI agent terms, clause by clause: 5 clauses, 5 fixes]]></title><description><![CDATA[Google sent us a legal notice this month. We're not in trouble: every Google Workspace and Cloud admin got the notice. It's about Google's new AI agent…]]></description><link>https://rezapratama.hashnode.dev/google-s-new-ai-agent-terms-clause-by-clause-5-clauses-5-fixes</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/google-s-new-ai-agent-terms-clause-by-clause-5-clauses-5-fixes</guid><category><![CDATA[Startups]]></category><category><![CDATA[AI]]></category><category><![CDATA[google cloud]]></category><category><![CDATA[Developer Tools]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Thu, 22 Oct 2026 07:21:29 GMT</pubDate><content:encoded><![CDATA[<p>Google sent us a legal notice this month. We're not in trouble: every Google Workspace and Cloud admin got the notice. It's about Google's new AI agent terms, effective 12 Oct 2026, which update the <a href="https://workspace.google.com/terms/service-terms/">Google Workspace Service Specific Terms</a> and the <a href="https://cloud.google.com/terms">Google Cloud Terms of Service</a>. The Workspace terms make the customer "solely responsible" for any Agentic AI Action, including what an agent fails to do. Here's a clause-by-clause read, with one fix for each.</p>
<p>A quick note on names. Below, the Cloud terms means the Google Cloud Terms of Service, the Workspace terms means the Google Workspace Service Specific Terms, the AUP is Google's Acceptable Use Policy, and the agent guidelines are the Google Cloud Agentic AI Responsible Use Guidelines.</p>
<h2>Clause 1: AI agents are now named in the restrictions</h2>
<p><strong>The clause.</strong> Section 3.3 of the <a href="https://cloud.google.com/terms">Cloud terms</a> says the customer will not "access or use the Services or any AI Agent ... in violation of the AUP".</p>
<p><strong>What it means for a solo dev.</strong> Anything your agent does on Google's services is judged against the same rules as anything you do by hand.</p>
<p><strong>The fix: list your agents.</strong> You can't hold agents to a rule you don't know they're under. Write down every agent with a token for your Google accounts: coding agents with Gmail or Drive scopes, automation flows with an AI step, browser agents, AI inbox apps. Then check the OAuth grants against that list. On a personal account that's Google Account &gt; Security &gt; third-party connections. On Workspace it's Admin console &gt; Security &gt; Access and data control &gt; API controls. Revoke anything you can't name.</p>
<h2>Clause 2: you cover Google if your agent breaks the rules</h2>
<p><strong>The clause.</strong> Section 13.2 of the <a href="https://cloud.google.com/terms">Cloud terms</a> has the customer indemnify Google for "Customer's or an End User's use of the Services or AI Agents in breach of the AUP or Section 3.3 (Restrictions)".</p>
<p><strong>What it means for a solo dev.</strong> If your agent's behaviour gets Google pulled into a third-party claim, the cost can land on you.</p>
<p><strong>The fix: read-only access.</strong> The cheapest way to shrink that exposure is to shrink what agents can do. Agents that summarize, search or triage only need read-only Gmail and Drive scopes. Keep send, delete and share scopes for the one flow that has a human approval step in front of it.</p>
<h2>Clause 3: you're solely responsible, including for omissions</h2>
<p><strong>The clause.</strong> Section 13.3 of the <a href="https://workspace.google.com/terms/service-terms/">Workspace terms</a> says "Customer is solely responsible for: (i) any Agentic AI Action", and an Agentic AI Action includes "omissions or failures to execute such tasks". Section 13.3(b) adds "Customer is solely responsible for any liability arising from disabling or bypassing any of these safeguards", meaning the human confirmation safeguards.</p>
<p><strong>What it means for a solo dev.</strong> The agent sending the wrong thing is yours, the agent not sending the right thing is yours, and switching off confirmations makes it yours twice over.</p>
<p><strong>The fix: a human approves sends.</strong> If a tool offers a confirmation step before it sends, posts, pays or deletes, keep it on. In your own agents, route outbound actions through a draft or queue that a person approves. Drafts are cheap. Unsent mistakes are free.</p>
<h2>Clause 4: suspension can be immediate</h2>
<p><strong>The clause.</strong> Section 4.2 of the <a href="https://cloud.google.com/terms">Cloud terms</a> says Google "may immediately Suspend" if "Customer is in breach of Section 3.3 (Restrictions)". AUP violations under section 4.1 get a notice and 24 hours to fix, but a 3.3 breach doesn't have to wait.</p>
<p><strong>What it means for a solo dev.</strong> One bad agent run can take an account offline the same day, and for most of us that account is our domain email.</p>
<p><strong>The fix: a separate account.</strong> Give agents their own properly licensed account or service account, so a suspension doesn't take your main inbox with it. Keep agents off the founder's admin account. Don't use the extra account to share files around Workspace limits, and don't use agents to multiply accounts: "Creating or managing numerous accounts to evade detection" is on the <a href="https://cloud.google.com/terms/agentic-ai-use-guidelines">agent guidelines</a> prohibited list.</p>
<h2>Clause 5: the bill is yours too</h2>
<p><strong>The clause.</strong> The <a href="https://cloud.google.com/terms/agentic-ai-use-guidelines">agent guidelines</a> say "you remain liable for any charges accrued by your agents".</p>
<p><strong>What it means for a solo dev.</strong> A retry loop that runs all weekend is a billing problem you own, not a bug you can dispute.</p>
<p><strong>The fix: a spending cap.</strong> Set budgets and billing alerts on every project an agent can touch, and put hard limits on API usage where the provider supports them. Rate-limit outbound email and posting in code, not in the prompt.</p>
<h2>What ties the five together</h2>
<p>Read in order, the clauses move from agents being covered by the rules to you paying for what they do. The fixes follow the same path: know what's running, limit what it can touch, put a person in front of anything outbound, contain the damage, and cap the cost. Google also "strongly recommends implementing human oversight and explicit approval mechanisms" in the <a href="https://cloud.google.com/terms/agentic-ai-use-guidelines">agent guidelines</a>, so fixes 2 and 3 line up with what Google itself asks for.</p>
<p>Not legal advice.</p>
<p><a href="https://serpair.com/blog/google-legal-notice-ai-agents-founders/?utm_source=hashnode&amp;utm_medium=article&amp;utm_campaign=google-notice&amp;utm_content=article">Originally published on Serpair</a>: Google's new AI agent terms, explained.</p>
<p>How are you using AI in your business right now? Did Google notify you too? Have you changed anything since, and what guardrails do you have in place?</p>
]]></content:encoded></item><item><title><![CDATA[Before you blame your product for slow signups, check whether strangers can find it]]></title><description><![CDATA[Originally published on Indie Hackers. The first few users are usually people who already know you. Friends, family, an old coworker, someone from a group…]]></description><link>https://rezapratama.hashnode.dev/before-you-blame-your-product-for-slow-signups-check-whether-strangers-can-find-it</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/before-you-blame-your-product-for-slow-signups-check-whether-strangers-can-find-it</guid><category><![CDATA[Startups]]></category><category><![CDATA[SEO]]></category><category><![CDATA[marketing]]></category><category><![CDATA[indiehackers]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Mon, 19 Oct 2026 15:14:42 GMT</pubDate><content:encoded><![CDATA[<p><em>Originally published on <a href="https://www.indiehackers.com/post/before-you-blame-your-product-for-slow-signups-check-whether-strangers-can-find-it-797eb89ec1">Indie Hackers</a>.</em></p>
<p>The first few users are usually people who already know you. Friends, family, an old coworker, someone from a group chat. They sign up because you asked, and that matters. It's how most of us get the first round of real feedback.</p>
<p>Then it goes quiet. And the easy conclusion is that the product isn't good enough.</p>
<p>Sometimes that's true. But there's a duller explanation worth ruling out first: the people who don't know you have no way to come across you. Your friends found you through you. A stranger finds you through a search box, or more and more often, by asking an AI assistant a question and reading whatever it says back.</p>
<p>I think of those assistants as the next best friend after the real ones. Your friends can only tell people they know. An assistant answers whoever asks, including people you'll never meet. But it can only mention you if it has something to go on.</p>
<p>Here's the check I'd run before rewriting the product. It's all free and takes an evening.</p>
<p><strong>1. Search your own name in a private window.</strong>
Type your exact product name into Google while logged out. Do you come up first? Or does a different product, a GitHub repo or a common word win? If people can't find you when they already know the name, nothing else on this list matters much yet.</p>
<p><strong>2. Ask the question your customer would ask.</strong>
Not "what is [my product]". The problem itself, in the words a customer would use. Ask it in ChatGPT, Perplexity and Gemini, and look at which tools get named and which pages get cited. Run it more than once, because the answers change between runs. You're looking for a pattern, not a verdict.</p>
<p><strong>3. Read your about page like a stranger.</strong>
Can someone tell in one sentence what you do, who it's for and who's behind it? Google's own guidance on helpful content points to background about the site and its About page as signals of trust. An assistant trying to describe you needs the same basic facts.</p>
<p><strong>4. Count the mentions you didn't write.</strong>
Your site says what you claim. Other places show whether anyone noticed. Directory listings, a README, a comparison post, a useful answer in a community thread. If the only page that mentions you is your own, that's a gap you can start closing this week.</p>
<p><strong>5. Make sure your docs or FAQ answer real questions.</strong>
Go back to step 2. For every question where you didn't show up, is there a page on your site that answers it plainly near the top, in text rather than an image? If not, write that page. It helps the human reader first, and anything that reads your site second.</p>
<p>None of this replaces a product people want. But if the check turns up gaps, fix those before you decide the idea is dead. A quiet signup graph can mean nobody wants it, or it can mean nobody outside your circle has been told.</p>
<p>So before you rewrite anything, give it one evening. Be the stranger, run the five checks, and write down what you find. The list of gaps is often shorter than the list of features you were about to build.</p>
<p>Then keep writing it down. Run the same checks every few weeks and note what you changed in between: a new headline, a new page, a different pitch. Six months from now you won't remember which change brought the first strangers, or when a competitor started showing up ahead of you. Without a record, every pivot is a guess.</p>
<p>That record is what we're building <a href="https://serpair.com">Serpair</a> for. It keeps the history of your growth in one place: your Google rankings, whether AI assistants mention you, and what your competitors are doing, tracked over time. So when you try a new angle, a new piece of content or a change in positioning, you can look back and see what worked and what didn't. You can still do all of this by hand with a spreadsheet; Serpair just keeps it for you.</p>
<p>If you want a starting point, run a <a href="https://serpair.com/free-seo-geo-analysis">free SEO and AI visibility check</a> on your site. It's a snapshot of where you stand today, the first entry in that log.</p>
]]></content:encoded></item><item><title><![CDATA[The Friends-and-Family Wave Is Over. Make Your Side Project Findable Before the Next One]]></title><description><![CDATA[A developer's checklist for getting found by strangers on Google and AI assistants: name query, about page, schema, llms.txt and docs.]]></description><link>https://rezapratama.hashnode.dev/the-friends-and-family-wave-is-over-make-your-side-project-findable-before-the-next-one</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/the-friends-and-family-wave-is-over-make-your-side-project-findable-before-the-next-one</guid><category><![CDATA[SEO]]></category><category><![CDATA[webdev]]></category><category><![CDATA[side project]]></category><category><![CDATA[Startups]]></category><category><![CDATA[AI]]></category><category><![CDATA[Build In Public]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Sat, 17 Oct 2026 17:11:46 GMT</pubDate><content:encoded><![CDATA[<p>Your first users came from your group chat. The next ones will come from a search box or an AI assistant, typing a question you never got to hear. This post is a checklist for that handover, written for developers who would rather treat discoverability as an engineering task than a marketing mood.</p>
<p>I'm Reza from the Serpair team. Everything below is free to do.</p>
<h2>Start with the questions, not the code</h2>
<p>Before changing anything, open a text file and write down five questions a stranger might ask when they have the problem your project solves. Write them the way a person talks, not the way your landing page talks.</p>
<p>For a made-up uptime monitor called ExampleMon, the list might look like this:</p>
<pre><code class="language-text">1. what is examplemon
2. cheap uptime monitoring for a side project
3. how do I get alerted when my site goes down
4. examplemon vs a self-hosted status page
5. is examplemon free
</code></pre>
<p>Notice the spread: your name, the problem without your name, a comparison, and price. Every item below exists to give Google and AI assistants a clear, crawlable answer to one of these.</p>
<p>If friends tested your project, use them here. Ask them how they'd describe it to someone else. Their wording is usually closer to a real query than yours.</p>
<h2>The checklist</h2>
<h3>Check: Your name returns you, and only you</h3>
<p>Question 1 is the one you can win first, and it's easy to lose without noticing.</p>
<ul>
<li>Search your exact project name in a logged-out browser. If a different product, a GitHub fork or a dictionary word wins, you have a naming problem to work around.</li>
<li>Make the page title on your home page carry the name and a plain description together, for example <code>ExampleMon: uptime alerts for small sites</code>.</li>
<li>Once your site is verified in Google Search Console, open the Performance report and filter queries containing your name. That tells you whether people search for you and whether you show up when they do.</li>
<li>Ask ChatGPT, Perplexity and Gemini "what is [your name]". If they confuse you with something else, the rest of this list is how you correct it.</li>
</ul>
<h3>Check: An about page that says who, what and why</h3>
<p>New projects often skip this page because it feels vain. It isn't. Google's guidance on helpful content lists "background about the author or the site" and links to "a site's About page" among the things that make content trustworthy (<a href="https://developers.google.com/search/docs/fundamentals/creating-helpful-content">Google Search Central</a>). An assistant that's asked about you needs the same facts.</p>
<p>Keep it boring and specific:</p>
<ul>
<li>What the project does, in one sentence a stranger understands.</li>
<li>Who it's for and who it isn't for.</li>
<li>Who builds it, with a real name and a link to a profile you actually use.</li>
<li>What state it's in, such as beta or open source.</li>
</ul>
<p>Use the same one-sentence description here, in your README, and on every listing. Consistency is what lets a crawler connect the pieces.</p>
<h3>Check: Schema that matches the visible page</h3>
<p>Structured data helps search engines understand what a page is about. For a web app, <code>SoftwareApplication</code> is the obvious type:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "ExampleMon",
  "applicationCategory": "DeveloperApplication",
  "operatingSystem": "Web",
  "description": "Uptime alerts for small sites.",
  "url": "https://examplemon.example",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  }
}
&lt;/script&gt;
</code></pre>
<p>Two cautions. First, Google's <a href="https://developers.google.com/search/docs/appearance/structured-data/software-app">software app rich result</a> also needs either <code>aggregateRating</code> or <code>review</code>. A brand-new project probably has neither, so you may not get the rich result at all. Don't invent ratings to qualify. The markup still describes the app accurately, and that's worth having.</p>
<p>Second, schema isn't a back door into AI answers. Google says there's "no special schema.org structured data" needed for its AI features and that structured data should match the visible text (<a href="https://developers.google.com/search/docs/appearance/ai-features">Google Search Central</a>). Whatever is in the JSON should also be readable on the page.</p>
<h3>Check: llms.txt, if you describe it honestly</h3>
<p><code>llms.txt</code> is a proposal by Jeremy Howard, first published in September 2024 at <a href="https://llmstxt.org/">llmstxt.org</a>. It's a Markdown file, usually at <code>/llms.txt</code>, with your project's name, a short summary and links to clean Markdown versions of your key pages. The idea is to give an agent that's already reading your site a tidy map instead of a pile of HTML.</p>
<p>What it is not: a ranking signal or a way to get discovered. Google's AI features guide says you don't need to create "new machine readable files, AI text files, or markup" to appear in AI Overviews or AI Mode. In 2025 Google's John Mueller <a href="https://www.seroundtable.com/google-ai-llms-txt-39607.html">wrote</a> that no AI system was using it at the time.</p>
<p>Where it does make sense is documentation. If your project has docs that coding agents might read, a small file is cheap to add:</p>
<pre><code class="language-markdown"># ExampleMon

&gt; Uptime alerts for small sites. Free tier, email and webhook alerts.

## Docs

- [Quick start](https://examplemon.example/docs/quickstart.md): add your first check
- [Webhooks](https://examplemon.example/docs/webhooks.md): payload format and retries
</code></pre>
<p>Add it as a convenience for agents, not as a traffic plan.</p>
<h3>Check: Mentions you didn't write yourself</h3>
<p>Your own pages tell search engines and assistants what you claim. Other sites tell them whether anyone noticed.</p>
<p>Honest ways to earn that as a developer:</p>
<ul>
<li>A clear GitHub README with the same one-line description and a link to your site.</li>
<li>Listings on directories and launch sites relevant to your category, using identical wording.</li>
<li>Technical write-ups on platforms like Hashnode about a real problem you solved while building it.</li>
<li>Useful answers in communities where your users already ask questions, with a mention only when it genuinely helps.</li>
</ul>
<p>Skip the shortcuts. Don't write your own Wikipedia article: its <a href="https://en.wikipedia.org/wiki/Wikipedia:Conflict_of_interest">conflict of interest guideline</a> discourages editing about your own company, and a new project rarely meets the notability bar anyway.</p>
<h3>Check: Docs and FAQ pages that answer the real questions</h3>
<p>Go back to your five questions. Each one that doesn't name you needs a page that answers it.</p>
<ul>
<li>Question 3 deserves a short guide: how to get alerted when your site goes down, with your tool as one option among the steps.</li>
<li>Question 4 deserves an honest comparison page that says when the other option is the better choice.</li>
<li>Question 5 deserves a pricing page in plain text, not just inside an image or a pricing widget.</li>
</ul>
<p>Answer the question in the first couple of sentences, then go into detail, in HTML text rather than images.</p>
<p>FAQ sections are still worth writing for people and for assistants. Just don't add <code>FAQPage</code> markup expecting the old expandable results in Google. Since August 2023, Google has shown FAQ rich results only for "well-known, authoritative government and health websites" (<a href="https://developers.google.com/search/blog/2023/08/howto-faq-changes">Google Search Central Blog</a>).</p>
<h2>Run it again in a month</h2>
<p>Treat the five questions like a regression suite. Every few weeks, search each one on Google and ask each one in a couple of AI assistants. Note whether you appear and what's said about you. AI answers vary from run to run, so look for a trend over several checks rather than reading too much into one result.</p>
<p>If you'd rather not keep that log by hand, <a href="https://serpair.com">Serpair</a> tracks your Google rankings and whether AI assistants mention you, and its free plan comes with 50 credits.</p>
<p>Your friends tested the product. This checklist is how strangers get to find it.</p>
]]></content:encoded></item><item><title><![CDATA[Making your site readable for AI crawlers: robots.txt, rendering, structured data and llms.txt]]></title><description><![CDATA[A practical checklist for developers who want their pages understood by search engines and AI assistants]]></description><link>https://rezapratama.hashnode.dev/making-your-site-readable-for-ai-crawlers-robots-txt-rendering-structured-data-and-llms-txt</link><guid isPermaLink="true">https://rezapratama.hashnode.dev/making-your-site-readable-for-ai-crawlers-robots-txt-rendering-structured-data-and-llms-txt</guid><category><![CDATA[SEO]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[AI]]></category><category><![CDATA[JavaScript]]></category><dc:creator><![CDATA[Reza Pratama]]></dc:creator><pubDate>Fri, 16 Oct 2026 13:18:07 GMT</pubDate><content:encoded><![CDATA[<p>Most "AI visibility" advice is about content. That matters, but developers control a layer underneath it. If crawlers can't fetch, render or parse your pages, good content won't help.</p>
<p>Here's a checklist I use, in the order I'd check things.</p>
<h2>1. Check robots.txt for accidental blocks</h2>
<p>Open <code>https://yoursite.com/robots.txt</code> and read it line by line. Look for broad <code>Disallow: /</code> rules left over from staging.</p>
<p>Several AI companies publish their crawler user agents, such as <code>GPTBot</code>, <code>OAI-SearchBot</code>, <code>PerplexityBot</code> and <code>Google-Extended</code>. Decide on purpose which ones you allow. Check each vendor's docs, because names and behaviour change.</p>
<pre><code>User-agent: *
Allow: /

User-agent: GPTBot
Allow: /

Sitemap: https://yoursite.com/sitemap.xml
</code></pre>
<p>Also check your CDN or firewall. Bot protection sometimes blocks crawlers even when robots.txt allows them.</p>
<h2>2. Make sure the HTML has real content</h2>
<p>Many crawlers don't run JavaScript the way a browser does. If your page is an empty shell until React loads, some of them see almost nothing.</p>
<p>A quick test:</p>
<pre><code class="language-bash">curl -s https://yoursite.com/pricing | grep -i "your main heading"
</code></pre>
<p>If the text isn't in the raw response, consider server-side rendering or static generation for key pages. Frameworks like Next.js, Nuxt, Astro and SvelteKit make this straightforward.</p>
<h2>3. Use clean, semantic structure</h2>
<p>Crawlers and AI tools pull text by structure. Help them:</p>
<ul>
<li>One <code>&lt;h1&gt;</code> per page that says what the page is about.</li>
<li><code>&lt;h2&gt;</code> headings phrased like the questions users ask.</li>
<li>A short, direct answer right under each heading.</li>
<li>Real <code>&lt;table&gt;</code>, <code>&lt;ul&gt;</code> and <code>&lt;ol&gt;</code> elements instead of styled divs.</li>
<li>Descriptive link text instead of "click here".</li>
</ul>
<h2>4. Add structured data that matches the page</h2>
<p>JSON-LD gives machines explicit facts. Keep it honest and in line with the visible content.</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "YourApp",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "Web",
  "url": "https://yoursite.com",
  "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" }
}
&lt;/script&gt;
</code></pre>
<p>Useful types for product sites include <code>Organization</code>, <code>SoftwareApplication</code>, <code>Article</code> and <code>FAQPage</code>. Validate them with Google's Rich Results Test or the Schema.org validator.</p>
<h2>5. Consider llms.txt, with realistic expectations</h2>
<p><code>llms.txt</code> is a proposed Markdown file at your site root. It lists your most important pages with short descriptions, for AI tools to read.</p>
<pre><code class="language-markdown"># YourApp

&gt; YourApp helps small teams monitor scheduled jobs.

## Docs
- [Quick start](https://yoursite.com/docs/start): Install and first alert in five minutes.
- [Pricing](https://yoursite.com/pricing): Plans and limits.
</code></pre>
<p>It's cheap to add and easy to maintain. But it's a proposal, not a standard, and support across AI providers is unclear. Don't treat it as a replacement for the steps above.</p>
<h2>6. Keep sitemaps and canonicals tidy</h2>
<ul>
<li>Submit an up-to-date <code>sitemap.xml</code> in Google Search Console and Bing Webmaster Tools.</li>
<li>Set canonical tags so duplicate URLs point to one version.</li>
<li>Return proper 404s and 301s instead of soft errors.</li>
</ul>
<p>Bing's index matters too, since some AI assistants have drawn on Bing results.</p>
<h2>7. Verify, then repeat</h2>
<p>After changes, check server logs for crawler user agents hitting your key pages. Then test a few real user questions in AI assistants and note whether your pages appear.</p>
<h2>Summary</h2>
<p>Content earns citations, but technical access decides whether you're even in the running. Fix crawl access, rendering, structure and structured data first. Then add extras like llms.txt.</p>
<p>I work on <a href="https://serpair.com">Serpair</a>, which tracks Google rankings and AI citations together. The checklist above is free to apply on any site, with or without a tool.</p>
]]></content:encoded></item></channel></rss>