diff --git a/components/IndustriesGrid.js b/components/IndustriesGrid.js index f0f5f18..166acc2 100644 --- a/components/IndustriesGrid.js +++ b/components/IndustriesGrid.js @@ -700,13 +700,13 @@ export default function IndustriesGrid({ rel="nofollow" className="opacity-70 hover:opacity-100 transition-opacity duration-200" > - + Featured on There's An AI For That
-

+

Transform Your Industry with OpenAdapt -

+

From demonstration to automation in minutes. Just do the task once and OpenAdapt learns from watching. No prompt engineering. No scripting. No brittle selectors. diff --git a/netlify.toml b/netlify.toml index 6c24b2f..ccbc64b 100644 --- a/netlify.toml +++ b/netlify.toml @@ -14,3 +14,12 @@ [[plugins]] package = "netlify-plugin-cypress" + +[[headers]] + for = "/*" + [headers.values] + X-Frame-Options = "SAMEORIGIN" + X-Content-Type-Options = "nosniff" + Referrer-Policy = "strict-origin-when-cross-origin" + Permissions-Policy = "camera=(), microphone=(), geolocation=()" + Strict-Transport-Security = "max-age=31536000; includeSubDomains" diff --git a/pages/_app.js b/pages/_app.js index 3c1f4a2..399c622 100644 --- a/pages/_app.js +++ b/pages/_app.js @@ -13,16 +13,13 @@ const raleway = Raleway({ export default function MyApp({ Component, pageProps }) { return ( <> + {/* New pages must add their own with unique title, description, canonical, and og:* tags */} - OpenAdapt.AI + OpenAdapt.AI — AI-Powered Desktop Automation Platform - - {/* Social media preview images */} - - + {/* Open Graph */} + + + + + + + {/* Twitter Card */} + + + {/* Google tag (gtag.js) */} diff --git a/pages/_document.js b/pages/_document.js new file mode 100644 index 0000000..138cd8d --- /dev/null +++ b/pages/_document.js @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from 'next/document' + +export default function Document() { + return ( + + + +

+ + + + ) +} diff --git a/pages/book.js b/pages/book.js index f1908b5..06ba3f8 100644 --- a/pages/book.js +++ b/pages/book.js @@ -1,4 +1,5 @@ import Link from 'next/link' +import Head from 'next/head' import { useRouter } from 'next/router' import BookingEmbed from '@components/BookingEmbed' @@ -11,6 +12,17 @@ export default function BookPage() { return (
+ + Book a Call | OpenAdapt.AI + + + + + +

Book a 15-minute automation fit call diff --git a/pages/contact.js b/pages/contact.js index cc10fac..38cad50 100644 --- a/pages/contact.js +++ b/pages/contact.js @@ -1,9 +1,21 @@ +import Head from 'next/head' import ContactBookingSection from '@components/ContactBookingSection' import Footer from '@components/Footer' export default function ContactPage() { return (
+ + Contact | OpenAdapt.AI + + + + + +
diff --git a/pages/index.js b/pages/index.js index 4a24974..a935e77 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,4 +1,5 @@ import { useRef, useState } from 'react' +import Head from 'next/head' import BenchmarkSection from '@components/BenchmarkSection' import ContactBookingSection from '@components/ContactBookingSection' @@ -10,6 +11,90 @@ import IndustriesGrid from '@components/IndustriesGrid' import MastHead from '@components/MastHead' // import SocialSection from '@components/SocialSection' // Temporarily disabled - feeds not working +const organizationSchema = { + '@context': 'https://schema.org', + '@type': 'Organization', + name: 'OpenAdapt.AI', + alternateName: ['OpenAdapt', 'MLDSAI Inc.'], + url: 'https://openadapt.ai', + logo: { + '@type': 'ImageObject', + url: 'https://openadapt.ai/android-chrome-512x512.png', + width: 512, + height: 512, + }, + description: + 'Open-source platform for GUI automation with AI. Record human demonstrations, train models, and deploy agents that can operate any software.', + foundingDate: '2023', + sameAs: [ + 'https://github.com/OpenAdaptAI/OpenAdapt', + 'https://x.com/OpenAdaptAI', + 'https://www.linkedin.com/company/openadapt-ai', + 'https://discord.gg/yF527cQbDG', + 'https://pypi.org/project/openadapt/', + ], + knowsAbout: [ + 'GUI Automation', + 'Robotic Process Automation', + 'AI Agents', + 'Desktop Automation', + 'Machine Learning', + 'Large Language Models', + ], + slogan: 'Teach AI to use any software', +} + +const softwareSchema = { + '@context': 'https://schema.org', + '@type': 'SoftwareApplication', + name: 'OpenAdapt', + alternateName: 'OpenAdapt.AI', + applicationCategory: 'DeveloperApplication', + operatingSystem: 'Windows, macOS, Linux', + description: + 'Open-source AI-powered desktop automation platform. Record human demonstrations of GUI workflows, train models, and deploy AI agents that replicate those workflows autonomously. Compatible with Claude, GPT-4V, and Gemini.', + url: 'https://openadapt.ai', + downloadUrl: 'https://pypi.org/project/openadapt/', + author: { + '@type': 'Organization', + name: 'OpenAdapt.AI', + url: 'https://openadapt.ai', + }, + license: 'https://opensource.org/licenses/MIT', + codeRepository: 'https://github.com/OpenAdaptAI/OpenAdapt', + programmingLanguage: 'Python', + offers: { + '@type': 'Offer', + price: '0', + priceCurrency: 'USD', + }, + featureList: [ + 'Record human demonstrations of desktop workflows', + 'Train AI models on recorded task data', + 'Deploy autonomous AI agents for GUI automation', + 'PII/PHI data scrubbing for privacy compliance', + 'Model agnostic — works with Claude, GPT-4V, Gemini', + 'Benchmark evaluation with Windows Agent Arena', + ], + isAccessibleForFree: true, +} + +const websiteSchema = { + '@context': 'https://schema.org', + '@type': 'WebSite', + name: 'OpenAdapt.AI', + alternateName: 'OpenAdapt', + url: 'https://openadapt.ai', + description: + 'Open-source AI-powered GUI automation platform. Teach AI to use any software.', + publisher: { + '@type': 'Organization', + name: 'OpenAdapt.AI', + url: 'https://openadapt.ai', + }, + inLanguage: 'en', +} + export default function Home() { const [feedbackData, setFeedbackData] = useState({ email: '', @@ -20,6 +105,27 @@ export default function Home() { return (
+ + +