<?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>Forem: jigz</title>
    <description>The latest articles on Forem by jigz (@jigz_dev).</description>
    <link>https://forem.com/jigz_dev</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3843181%2F1ca1efba-ece9-4838-8f21-5b88065399fd.jpg</url>
      <title>Forem: jigz</title>
      <link>https://forem.com/jigz_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jigz_dev"/>
    <language>en</language>
    <item>
      <title>How to Download Your Entire Supabase Storage Bucket Locally</title>
      <dc:creator>jigz</dc:creator>
      <pubDate>Sun, 03 May 2026 09:23:02 +0000</pubDate>
      <link>https://forem.com/jigz_dev/how-to-download-your-entire-supabase-storage-bucket-locally-31g5</link>
      <guid>https://forem.com/jigz_dev/how-to-download-your-entire-supabase-storage-bucket-locally-31g5</guid>
      <description>&lt;p&gt;If you've been building with Supabase, you know their Storage API is fantastic for web apps. But sometimes, you just need your files on your local machine—whether for a manual backup, bulk editing, or migrating data.&lt;/p&gt;

&lt;p&gt;While you could write a script using the Supabase SDK, there is a much faster, "no-code" way to manage your files like a Pro: &lt;strong&gt;Cyberduck&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Cyberduck is an &lt;strong&gt;official Supabase partner integration&lt;/strong&gt;. It is a secure, open-source tool that Supabase explicitly recommends for managing storage via the S3 protocol. You can find the &lt;a href="https://supabase.com/partners/integrations/cyberduck" rel="noopener noreferrer"&gt;official integration page here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Phase 1: Generate Your S3 Credentials
&lt;/h3&gt;

&lt;p&gt;Before opening Cyberduck, you need to give it permission to talk to your Supabase project via the S3 protocol.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Log in to your &lt;strong&gt;Supabase Dashboard&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Navigate to the &lt;strong&gt;S3 Settings&lt;/strong&gt; tab in the sidebar (under Storage).&lt;/li&gt;
&lt;li&gt; Under &lt;strong&gt;Access Keys&lt;/strong&gt;, click &lt;strong&gt;Create Access Key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Give it a description (e.g., "Local Backup") and click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Important:&lt;/strong&gt; Copy your &lt;strong&gt;Access Key ID&lt;/strong&gt; and &lt;strong&gt;Secret Access Key&lt;/strong&gt; immediately. You won't be able to see the secret again!&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Phase 2: Configure the Cyberduck Profile
&lt;/h3&gt;

&lt;p&gt;Cyberduck needs a specific "handshake" configuration to understand Supabase’s structure.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Download Cyberduck:&lt;/strong&gt; Get the latest version from their &lt;a href="https://cyberduck.io/download/" rel="noopener noreferrer"&gt;official download page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Create the Profile:&lt;/strong&gt; Create a file on your computer named &lt;code&gt;supabase.cyberduckprofile&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Paste the following code&lt;/strong&gt; into that file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;plist&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;"1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dict&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Protocol&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;s3&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Vendor&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Supabase Storage S3&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Scheme&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;https&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Description&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;Supabase Storage (S3)&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Default Hostname&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;YOUR_PROJECT_REF.supabase.co&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Default Port&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;443&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Region&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;YOUR_REGION&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Properties&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;array&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;s3.storage.class.options=STANDARD&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;s3.bucket.virtualhost.disable=true&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/array&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;key&amp;gt;&lt;/span&gt;Context&lt;span class="nt"&gt;&amp;lt;/key&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;string&amp;gt;&lt;/span&gt;/storage/v1/s3&lt;span class="nt"&gt;&amp;lt;/string&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dict&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/plist&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Edit the file:&lt;/strong&gt; Replace &lt;code&gt;YOUR_PROJECT_REF&lt;/code&gt; with your project ID (found in your Supabase URL) and &lt;code&gt;YOUR_REGION&lt;/code&gt; (e.g., &lt;code&gt;ap-south-1&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Save and Run:&lt;/strong&gt; Double-click the file. Cyberduck will open and ask for your credentials. Enter the &lt;strong&gt;Access Key ID&lt;/strong&gt; and &lt;strong&gt;Secret Access Key&lt;/strong&gt; you generated earlier.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowbielrqjz09opb8l64v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowbielrqjz09opb8l64v.png" alt="Cyberduck" width="800" height="979"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Phase 3: Downloading Your Bucket
&lt;/h3&gt;

&lt;p&gt;Once connected, you will see your Supabase buckets listed just like folders on your computer.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Select your Bucket:&lt;/strong&gt; Locate the folder you wish to bring local.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Download:&lt;/strong&gt; Right-click the bucket and select &lt;strong&gt;Download&lt;/strong&gt;. You can choose the destination folder on your machine, and Cyberduck will handle the transfer.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Sync/Mirror:&lt;/strong&gt; If you want to keep your local folder updated with the latest changes from the cloud without re-downloading everything, use the &lt;strong&gt;Mirror&lt;/strong&gt; feature. This compares the local and remote folders and only transfers the differences.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Other Powerful Use Cases
&lt;/h3&gt;

&lt;p&gt;Connecting via S3 is about more than just backups. Here’s what else you can do:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Bulk Uploads:&lt;/strong&gt; Drag and drop thousands of assets (like product images or icons) directly into Supabase. It’s much more stable than using a browser-based dashboard for large volumes.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Direct Media Editing:&lt;/strong&gt; Some editors allow you to open a file directly from Cyberduck, edit it, and save it back to the cloud instantly.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cross-Cloud Migration:&lt;/strong&gt; If you are moving files from AWS S3 or Cloudflare R2 into Supabase (or vice-versa), you can open two windows in Cyberduck and simply drag-and-drop between the two services.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Infrastructure Testing:&lt;/strong&gt; It's an excellent way for developers to verify that their S3 policies and IAM-style permissions are working correctly before writing a single line of frontend code.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>supabase</category>
      <category>s3</category>
      <category>storage</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What is GEO (Generative Engine Optimization)? How to Implement It in Next.js</title>
      <dc:creator>jigz</dc:creator>
      <pubDate>Wed, 25 Mar 2026 12:52:35 +0000</pubDate>
      <link>https://forem.com/jigz_dev/what-is-geo-generative-engine-optimization-how-to-implement-it-in-nextjs-23d6</link>
      <guid>https://forem.com/jigz_dev/what-is-geo-generative-engine-optimization-how-to-implement-it-in-nextjs-23d6</guid>
      <description>&lt;p&gt;If you search something today, you’ll notice a shift.&lt;/p&gt;

&lt;p&gt;Instead of just showing links, search tools are now giving direct answers. Tools like ChatGPT, Perplexity, and Google AI Overviews generate responses instead of listing pages.&lt;/p&gt;

&lt;p&gt;Those answers come from somewhere.&lt;/p&gt;

&lt;p&gt;That’s where GEO comes in.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is GEO?
&lt;/h2&gt;

&lt;p&gt;GEO stands for Generative Engine Optimization.&lt;/p&gt;

&lt;p&gt;It means structuring your content so AI tools can understand it and use it inside their generated answers.&lt;/p&gt;

&lt;p&gt;Earlier, the goal was to rank on search engines.&lt;/p&gt;

&lt;p&gt;Now, the goal is to be part of the answer itself.&lt;/p&gt;

&lt;p&gt;So instead of optimizing just for clicks, you’re optimizing for visibility inside AI responses.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why GEO Matters
&lt;/h2&gt;

&lt;p&gt;When someone asks a question to an AI tool, they usually get a complete answer instantly.&lt;/p&gt;

&lt;p&gt;Most users don’t click further.&lt;/p&gt;

&lt;p&gt;If your content is not included in that answer, it doesn’t get seen.&lt;/p&gt;

&lt;p&gt;That’s the main shift.&lt;/p&gt;

&lt;p&gt;It’s no longer just about ranking. It’s about being referenced.&lt;/p&gt;




&lt;h2&gt;
  
  
  How GEO is Different
&lt;/h2&gt;

&lt;p&gt;Traditional SEO focuses on ranking pages.&lt;/p&gt;

&lt;p&gt;GEO focuses on clarity and structure.&lt;/p&gt;

&lt;p&gt;AI systems don’t care about keyword stuffing. They care about how clearly you explain something.&lt;/p&gt;

&lt;p&gt;The better your explanation, the higher the chance it gets picked.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Implement GEO in Next.js
&lt;/h2&gt;

&lt;p&gt;You don’t need complex setups. Most of it comes down to how you write and structure content.&lt;/p&gt;

&lt;p&gt;Here’s how you can do it.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. Add Structured Data (JSON-LD)
&lt;/h3&gt;

&lt;p&gt;Structured data helps machines understand your content.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Page&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;schema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SoftwareApplication&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your App Name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Short explanation of what your app does&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;applicationCategory&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DeveloperApplication&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;offers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Offer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;price&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;
        &lt;span class="na"&gt;dangerouslySetInnerHTML&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;__html&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Write Answer-First Content
&lt;/h3&gt;

&lt;p&gt;Start with the answer.&lt;/p&gt;

&lt;p&gt;Don’t delay it with long introductions.&lt;/p&gt;

&lt;p&gt;AI tools prefer content that gives clear, direct answers immediately.&lt;/p&gt;


&lt;h3&gt;
  
  
  3. Use FAQ Sections
&lt;/h3&gt;

&lt;p&gt;FAQ format works well because it matches how people ask questions.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;faqs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;q&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;How do I generate a PDF in Next.js?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You can use Puppeteer or jsPDF depending on your use case.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Add llms.txt
&lt;/h3&gt;

&lt;p&gt;Create a simple file in your public folder:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Your Website&lt;/span&gt;
&lt;span class="gt"&gt;
&amp;gt; Short explanation&lt;/span&gt;

&lt;span class="gu"&gt;## Features&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Feature one
&lt;span class="p"&gt;-&lt;/span&gt; Feature two

&lt;span class="gu"&gt;## Use cases&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Example one
&lt;span class="p"&gt;-&lt;/span&gt; Example two
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This helps AI tools understand your site faster.&lt;/p&gt;


&lt;h3&gt;
  
  
  5. Create “What is” and Comparison Content
&lt;/h3&gt;

&lt;p&gt;Write content that answers real questions.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is something&lt;/li&gt;
&lt;li&gt;How something works&lt;/li&gt;
&lt;li&gt;Comparison between tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly what AI tools look for.&lt;/p&gt;


&lt;h3&gt;
  
  
  6. Use Static Generation
&lt;/h3&gt;

&lt;p&gt;Make your pages easy to crawl.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateStaticParams&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;posts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;slug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slug&lt;/span&gt; &lt;span class="p"&gt;}))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  7. Keep Language Simple
&lt;/h3&gt;

&lt;p&gt;Write like you speak.&lt;/p&gt;

&lt;p&gt;Avoid complex words and long sentences.&lt;/p&gt;

&lt;p&gt;Clear and simple explanations work better.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Actually Matters
&lt;/h2&gt;

&lt;p&gt;A few things make the biggest difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear answers at the start&lt;/li&gt;
&lt;li&gt;Simple language&lt;/li&gt;
&lt;li&gt;Structured content&lt;/li&gt;
&lt;li&gt;Real examples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need tricks. You need clarity.&lt;/p&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;GEO is not replacing SEO.&lt;/p&gt;

&lt;p&gt;It’s building on top of it.&lt;/p&gt;

&lt;p&gt;Search is moving toward answers instead of links.&lt;/p&gt;

&lt;p&gt;That changes how content gets discovered.&lt;/p&gt;

&lt;p&gt;If your content explains things clearly, it has a higher chance of being used.&lt;/p&gt;

&lt;p&gt;That’s the core idea.&lt;/p&gt;


&lt;h2&gt;
  
  
  Original Blog
&lt;/h2&gt;

&lt;p&gt;Read the full version here:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://www.jigz.dev/blogs/what-is-geo-how-to-implement-it-in-nextjs" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjmooenpadbidpkpgwgqu.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fblogs%2Fwhat-is-geo-how-to-implement-it-in-nextjs-1774442640007.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://www.jigz.dev/blogs/what-is-geo-how-to-implement-it-in-nextjs" rel="noopener noreferrer" class="c-link"&gt;
            What is GEO? How to Implement It in Next.js
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            If you search something today, you might notice a shift.Instead of just seeing links, you often get a direct answer.Tools like ChatGPT, Perplexity, and Google AI Overviews don’t just show results, the...
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.jigz.dev%2Ffavicon.svg"&gt;
          jigz.dev
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



</description>
      <category>ai</category>
      <category>seo</category>
      <category>nextjs</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
