AeroModel

AeroModel

Documentation

SEO & GEO — search engine and generative-AI optimization

This page explains how to integrate the API images so they are indexable (Google Images, Bing) and understandable by LLMs (ChatGPT, Perplexity, Gemini, Copilot).

SEO: HTML tags

Image with descriptive alt and dimensions

<img
  src="https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=airbus-a320-200&airline=air-france&resolution=hd"
  alt="Airbus A320-200 in Air France livery, right profile view"
  width="1280"
  height="1280"
  loading="lazy"
  decoding="async"
/>

<picture> with WebP + PNG fallback

<picture>
  <source
    type="image/webp"
    srcset="https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=A320&airline=AF&filetype=webp&resolution=hd"
  />
  <img
    src="https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=A320&airline=AF&filetype=png&resolution=hd"
    alt="Airbus A320 — Air France"
    width="1280"
    height="1280"
    loading="lazy"
  />
</picture>

Schema.org structured data

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Flight Paris → Nice — Airbus A320 Air France",
  "image": [
    "https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=A320&airline=AF&resolution=hd&align=bottom"
  ],
  "brand": { "@type": "Brand", "name": "Air France" }
}
</script>

Image sitemap

<url>
  <loc>https://example.com/flights/airbus-a320</loc>
  <image:image>
    <image:loc>https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=A320&amp;airline=AF&amp;resolution=hd</image:loc>
    <image:caption>Airbus A320 Air France, right profile view</image:caption>
  </image:image>
</url>

GEO: Generative Engine Optimization

LLMs consume HTML to cite sources. To get them to understand and reference your aircraft pages:

1. Plain-text captions

Put the aircraft + airline full name in the DOM, not just in the image. An LLM doesn't read images.

<figure>
  <img src="..." alt="..." />
  <figcaption>
    <strong>Airbus A320-200</strong> — Air France (typical registration, current livery)
  </figcaption>
</figure>

2. Specs table

LLMs love structured tables. Add:

<table>
  <caption>Specifications</caption>
  <tr><th>Manufacturer</th><td>Airbus</td></tr>
  <tr><th>Family</th><td>A320</td></tr>
  <tr><th>Capacity</th><td>150–180 passengers</td></tr>
  <tr><th>Airline</th><td>Air France</td></tr>
</table>

3. Canonical, readable URL

The image URL itself should be readable by a crawler:

✅ /v1/images/plane?plane=airbus-a320-200&airline=air-france&angle=90
❌ /v1/images/plane?plane=320&airline=AF&angle=90  (opaque IATA codes)

Prefer slugs in public URLs for SEO; keep IATA/ICAO codes for backend calls.

4. og:image and twitter:card

<meta property="og:image" content="https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=A320&airline=AF&resolution=hd&align=bottom" />
<meta property="og:image:width" content="1280" />
<meta property="og:image:height" content="1280" />
<meta property="og:image:alt" content="Airbus A320 Air France" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://api.aeromodel.dash-systems.fr/v1/images/plane?plane=A320&airline=AF&resolution=hd" />

5. Robots and indexing

API-served images are public and indexable. To disallow direct indexing, add on your site side:

X-Robots-Tag: noindex

(The API itself doesn't send this header — it's up to you if you proxy.)

Performance = SEO

Google weighs LCP (Largest Contentful Paint). The API helps via:

  • Cloudflare edge cache (cf-cache-status: HIT after the 1st call).
  • WebP format (–30 to –50% vs PNG).
  • Preload: <link rel="preload" as="image" imagesrcset="..." /> for the hero image.

See also