Skip to content

improvement(integrations): overhaul landing FAQs for SEO/GEO and fix dynamic OG images#4985

Merged
waleedlatif1 merged 5 commits into
stagingfrom
integrations-faq-geo
Jun 12, 2026
Merged

improvement(integrations): overhaul landing FAQs for SEO/GEO and fix dynamic OG images#4985
waleedlatif1 merged 5 commits into
stagingfrom
integrations-faq-geo

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

  • Server-render every FAQ answer on landing pages (collapsed via CSS, always in the DOM) — AI crawlers (GPTBot, ClaudeBot, PerplexityBot) don't execute JS, so answers were invisible to them and the FAQPage JSON-LD didn't match visible content
  • Rewrite per-integration FAQ generation: every answer now leads with a direct answer and carries integration-specific facts (tool counts/names, trigger events, auth mode, related integrations); fully-generic Q&As (pricing, agent tool use) moved to a single catalog FAQ on /integrations instead of repeating across all 207 pages
  • Questions render as h3 headings; fixed grammar edge cases (a/an articles, trigger-only and zero-op integrations, long trigger lists)
  • Add freshness signals: catalog last-updated date stamped by generate-docs only on real content changes, wired into sitemap lastModified, JSON-LD dateModified, and a visible last-updated line
  • Drop deprecated HowTo schema; add applicationSubCategory + tags to SoftwareApplication; add category/tags/trigger keywords and an sr-only atomic summary; related-integrations scoring now also weighs same category
  • Add dynamic OG images for /integrations and /integrations/[slug]; fix models OG images which were broken in prod (hardcoded /opengraph-image URLs 404 — Next serves file-convention images at hash-suffixed URLs, so explicit images: overrides are removed and the deprecated edge runtime dropped)

Type of Change

  • Improvement

Testing

Tested manually — verified with JS-disabled curl that FAQ answers, h3 questions, JSON-LD (FAQPage/SoftwareApplication/Breadcrumb), last-updated line, and sr-only summary are all in the served HTML; all five OG image routes return valid PNGs; sitemap emits lastmod; typecheck and lint pass

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
docs Ready Ready Preview, Comment Jun 12, 2026 12:58am

Request Review

@cursor

cursor Bot commented Jun 12, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Marketing/SEO and static landing metadata only; no auth, billing, or runtime workflow logic changes.

Overview
Landing FAQ accordion now keeps every answer in the DOM (height animation instead of unmounting) so crawlers and FAQPage JSON-LD see full Q&A text; questions are wrapped in h3 with aria-controls wiring.

Integrations SEO: Per-slug FAQs are rewritten with integration-specific facts and related pairings; generic questions move to a single catalog FAQ on /integrations with FAQPage JSON-LD. Integration pages gain INTEGRATIONS_UPDATED_AT (sitemap lastModified, visible last-updated, JSON-LD dateModified), richer metadata/keywords, sr-only summary, expanded SoftwareApplication schema (category, tags), and HowTo JSON-LD is removed. Related integrations scoring adds same category. Catalog JSON shape is integrations + updatedAt.

OG images: createLandingOgImage in shared og-utils replaces models-only helpers; new dynamic PNG routes for /integrations and /integrations/[slug]. Models and integrations pages drop hardcoded openGraph/twitter images (they 404’d vs Next’s hash-suffixed file convention) and remove runtime = 'edge' on OG routes.

Reviewed by Cursor Bugbot for commit 1260c1d. Configure here.

Comment thread scripts/generate-docs.ts
Comment thread apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx
@greptile-apps

greptile-apps Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR overhauls the landing integration pages for SEO/GEO: FAQ answers are now always in the DOM (collapsed via CSS/framer-motion height animation instead of conditional mounting), making them visible to non-JS AI crawlers; per-integration FAQs are rewritten with integration-specific facts; and dynamic OG images are added for /integrations and /integrations/[slug] while broken hardcoded opengraph-image URL overrides are removed across all model and integration pages.

  • FAQ & schema improvements: answers always server-rendered with aria-hidden toggling visibility; h3 headings for questions; HowTo schema dropped; SoftwareApplication gains applicationSubCategory, keywords, and dateModified; catalog-generic FAQs (pricing, agent tool use) consolidated onto /integrations instead of repeating across 207 pages.
  • OG image fixes: edge runtime dropped; explicit images: overrides (which 404 in prod because Next serves file-convention images at hash-suffixed URLs) removed from all model and integration metadata; new opengraph-image.tsx files added for /integrations and /integrations/[slug].
  • Freshness signals: integrations.json gains a top-level updatedAt field stamped only on real content changes by generate-docs.ts; wired into sitemap lastModified, JSON-LD dateModified, and a visible "Last updated" line on every integration page.

Confidence Score: 5/5

Safe to merge — all changes are landing-page/SEO-layer with no writes to user data, auth, or execution paths.

The diff touches only landing page rendering, FAQ copy generation, OG image routes, sitemap output, and the integrations.json catalog file. The generate-docs.ts change is additive and the early-return/stamp logic is sound. No data-path, auth, or executor code is modified.

No files require special attention.

Important Files Changed

Filename Overview
apps/sim/app/(landing)/components/landing-faq.tsx Replaces AnimatePresence/conditional-mount with always-mounted m.div using height animation; adds aria-controls/aria-hidden, wraps questions in h3, and uses useId for stable panel IDs.
apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx Substantial FAQ rewrite with integration-specific prose, article/grammar helpers, category-weighted related-integration scoring, dateModified/updatedAt wiring, sr-only atomic summary, and OG image override removal.
apps/sim/app/(landing)/integrations/(shell)/[slug]/opengraph-image.tsx New dynamic OG image for per-integration pages; reads directly from integrations.json to keep @/blocks/registry out of the OG bundle.
apps/sim/app/(landing)/integrations/(shell)/opengraph-image.tsx New dynamic OG image for /integrations catalog; computes TOTAL_TOOL_COUNT, OAUTH_COUNT, and TRIGGER_INTEGRATION_COUNT from the JSON at module level.
apps/sim/app/(landing)/integrations/(shell)/page.tsx Adds catalog-level FAQ with FAQPage JSON-LD; removes hardcoded OG image URL overrides.
apps/sim/app/(landing)/og-utils.tsx Renamed from models/og-utils.tsx; function renamed to createLandingOgImage; all model OG image files updated to match.
apps/sim/app/sitemap.ts Wires INTEGRATIONS_UPDATED_AT into both the /integrations index and all per-integration sitemap entries as lastModified.
apps/sim/lib/integrations/index.ts Adapts INTEGRATIONS read from the new object shape; exports INTEGRATIONS_UPDATED_AT.
apps/sim/lib/integrations/integrations.json Reformatted from a bare array to an object with updatedAt and integrations array; each entry gains operationCount, triggerCount, integrationType, and tags.
scripts/generate-docs.ts Stamps updatedAt only when integration content actually changes, avoiding sitemap churn on no-op regenerations.
apps/sim/lib/integrations/oauth-service.ts Updated to read INTEGRATIONS_DATA from integrationsJson.integrations to match the new JSON object shape.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[generate-docs.ts] -->|content hash diff| B{Content changed?}
    B -- No --> C[Skip write, keep existing updatedAt]
    B -- Yes --> D["Write integrations.json with updatedAt + integrations array"]
    D --> E["lib/integrations/index.ts"]
    E --> F["sitemap.ts lastModified"]
    E --> G["integrations/slug/page.tsx buildFAQs + dateModified"]
    E --> H["integrations/page.tsx catalog FAQ"]
    G --> I["opengraph-image.tsx /slug"]
    H --> J["opengraph-image.tsx /integrations"]
    G --> K["LandingFAQ always-in-DOM answers"]
    H --> K
Loading

Reviews (3): Last reviewed commit: "Merge remote-tracking branch 'origin/sta..." | Re-trigger Greptile

Comment thread scripts/generate-docs.ts Outdated
Comment thread apps/sim/app/(landing)/integrations/(shell)/[slug]/page.tsx Outdated
Comment thread apps/sim/app/(landing)/components/landing-faq.tsx
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

1 issue from previous review remains unresolved.

Fix All in Cursor

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit a4c10cd. Configure here.

# Conflicts:
#	apps/sim/lib/integrations/integrations.json
# Conflicts:
#	apps/sim/lib/integrations/integrations.json
@waleedlatif1 waleedlatif1 merged commit 9774679 into staging Jun 12, 2026
8 of 9 checks passed
@waleedlatif1 waleedlatif1 deleted the integrations-faq-geo branch June 12, 2026 00:55
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 1260c1d. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant