Course Details
A 2-day hands-on workshop, 6 hours per day (12 hours in total). Throughout both days, you will build one continuous project: GeniusCorp - a simulated corporate website for a software company with all the standard corporate menus (Home, About Us, Services, Portfolio, Blog/News, Team, Contact). All data is stored in MySQL/MariaDB, served through a Laravel API, and rendered as static HTML with Astro. By the end of the course you will have a fully deployed, GEO-ready website.
Day 1: Full Stack Foundation + GEO Core Engineering
Section 1: From SEO to GEO/AEO - Why Developers Must Adapt in 2026
- The new search landscape: how ChatGPT Search, Perplexity, Claude, Gemini and Google AI Overviews are changing user behavior
- GEO vs AEO vs SEO: how they differ and what they still share
- How AI crawlers read your website: GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended and the effect of robots.txt
- Factors that increase your chance of being cited by AI: findings from the Princeton GEO research - statistics, numbers and sources increase citation chances by around 30-40%
- Case study: a real website audit - strengths, weaknesses and the priority roadmap used as the challenge for this course
Section 2: The AI-Findable Full Stack Architecture
- Why Static Site Generation (SSG) is the answer for GEO: 100% complete HTML without running JavaScript
- Architecture overview: Astro SSG + Laravel API (Sanctum) + MySQL/MariaDB deployed on Apache/Nginx without Node.js on the server
- Comparing SSG vs SSR vs SPA from the perspective of AI crawlers and performance
Section 3: Laravel API Foundation
- Designing a GEO-ready corporate website database: services, portfolios, articles, team_members and faqs tables with key fields (updated_at, published_at, author_id)
- Creating Migrations, Models, Seeders and table relationships
- Building a REST API with API Resources: sending only the data Astro needs, in a format that is easy to consume
- Securing the API with Laravel Sanctum: creating a token for the Astro build process
Section 4: Astro Fundamentals for SSG
- Astro project structure, .astro files, Layouts and Components
- Zero-JS by Default and the Islands Architecture (JavaScript only where needed)
- Fetching data from the Laravel API at build time and creating detail pages with Dynamic Routes + getStaticPaths
- The output of astro build: static HTML ready to upload to Apache/Nginx immediately
Section 5: Correct Metadata in the AI Search Era
- Anatomy of a good Title (~50-60 characters) and per-page Meta Description (~150-160 characters) that summarizes real content, not boilerplate
- What to stop doing: meta keywords stuffing, 400+ character titles - lessons from a real audit
- Complete Open Graph for articles: og:type=article, article:published_time, article:modified_time, article:author
- Building a SeoHead Component in Astro: one place to manage metadata for every page, receiving props from real database content
Section 6: Canonical, hreflang & Heading Hierarchy
- Canonical tags to prevent duplicate content from query strings - implemented in the Astro Layout with Astro.url
- Decision guidelines for multilingual websites and correct hreflang usage (th / en / x-default)
- A heading hierarchy AI can understand: one H1 per page, H2 as main topics (or questions), no H2 abuse in card lists
Section 7: JSON-LD Structured Data - the Heart of GEO
- Schema.org and JSON-LD: why it is the format recommended by Google and AI engines
- Building a central JsonLd Component in Astro and assembling each schema step by step
- Organization / LocalBusiness - company info, logo, telephone, address, sameAs (social profiles)
- WebSite + SearchAction - the site internal search box
- Service + Offer - company products and services with prices (priceCurrency: THB) from real database content
- Article / NewsArticle - headline, datePublished, dateModified, author, image, inLanguage
- Person - team member / article author profiles with jobTitle, worksFor and sameAs
- BreadcrumbList - machine-readable page paths
- Adapting the same schema patterns to other businesses such as Product, Course and Event (same pattern, just change @type and fields)
- Caveats for Thai-language content in JSON-LD and character escaping
Section 8: FAQ System + FAQPage Schema
- Designing the faqs table (service_id, question, answer, sort_order) in MySQL + a Laravel API endpoint
- Writing answer-ready FAQs: the questions users actually ask AI, such as who is this service for, what is the starting price, how many days does it take, is there after-sales support
- Rendering the FAQ section on service pages in Astro with the FAQPage schema attached automatically
Section 9: Validation Workflow
- Validating structured data with validator.schema.org and the Google Rich Results Test
- Making validation part of the workflow before every deploy
- Day 1 Workshop (GeniusCorp): build the MySQL database + Laravel API secured with Sanctum, build the corporate website with Astro covering every main menu from real data, then install the full GEO layer - SeoHead, Canonical, complete JSON-LD schemas, a database-driven FAQ system with FAQPage schema, and validate every page
Day 2: E-E-A-T, llms.txt, Deployment & Measurement
Section 10: E-E-A-T - Building Trust That AI Can Verify
- Why E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) matters for GEO
- Author box on article pages: photo, name, position, link to the team profile page - connected with the Person schema
- Machine-readable published/modified dates with
Section 11: Answer-Ready Content Guidelines
- The Inverted Pyramid principle: the first paragraph answers the main question in 2-3 sentences before expanding into details
- Using question-style H2 headings, adding numbers/statistics/sources, using tables and bullets for comparison data
- Handing these guidelines over to content teams so they can work together with developers
Section 12: Sitemap, robots.txt & llms.txt
- Generating sitemap.xml at build time with real lastmod data from MySQL (through the Laravel API) - lessons from an outdated 30,000-URL sitemap
- Sitemap Index strategy when you have more than 50,000 URLs
- Writing a robots.txt that correctly welcomes AI crawlers and points to your sitemap
- Creating llms.txt following the llmstxt.org spec: a site map for AI, generated automatically from real data at build time
Section 13: Performance for GEO
- Astro strengths: Zero-JS by Default keeps HTML light and fast from the start
- Image optimization with astro:assets: WebP, properly sized images, loading="lazy"
- Enabling gzip/brotli on Apache/Nginx with measurable targets: TTFB < 0.4s, HTML < 150KB
Section 14: Production Deployment on Apache/Nginx
- Deployment structure: static files from astro build + Laravel API + MySQL on a single server or separate servers
- Setting up Virtual Hosts, HTTPS and redirects (http to https, non-www to www) correctly
- Automatic rebuild system: a webhook / deploy script that triggers a new build when database content changes - fixing the key weakness of SSG
Section 15: Measurement & Monitoring - How Do You Know AI Has Found You
- Setting up Google Search Console and Bing Webmaster Tools (Bing matters because it feeds ChatGPT Search / Copilot)
- Checking server logs for AI crawler user agents: GPTBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended
- A monthly testing plan: ask ChatGPT / Perplexity / Claude / Gemini your target questions and record whether your website gets cited
- The complete GEO-Ready Checklist to apply to your own real projects
- Day 2 Workshop (Master Workshop - GeniusCorp): add the Author Box + E-E-A-T signals, generate sitemap.xml and llms.txt from real data, deploy to Apache/Nginx with HTTPS + gzip, set up the automatic rebuild webhook, and pass every item on the GEO-Ready Checklist