Files
aitu/apps/web/index.html
T

108 lines
8.2 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<!-- 权限策略:禁止 unload 事件(不影响 beforeunload) -->
<!-- 基本 SEO Meta 标签 (中文) -->
<title>爱图 - AI图片视频创作</title>
<meta name="description" content="爱图是一款强大的AI图片视频创作工具(https://github.com/ljquan/aitu),集成思维导图、流程图等功能。基于 Plait 框架开发,支持插件扩展,提供自动保存、无限画布等特性。爱创作,图未来。">
<meta name="keywords" content="爱图,Aitu,白板工具,白板,思维导图,流程图,开源白板,开源思维导图,在线绘图,在线白板,协作工具,协作白板,Plait 框架">
<!-- 基本 SEO Meta 标签 (英文) -->
<meta name="description" lang="en" content="Aitu is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more. Love Creation, Visualize the Future.">
<meta name="keywords" lang="en" content="Aitu,whiteboard tool, whiteboard,mind mapping,flowchart,open source whiteboard, open source mind mapping,online drawing,collaboration tool, collaboration whiteboard,Plait framework">
<!-- Open Graph Meta 标签 (中文) -->
<meta property="og:title" content="爱图 - AI图片视频创作 | 思维导图 | 流程图 | 白板 | 协作白板">
<meta property="og:description" content="爱图一体化AI图片视频创作工具(在线白板 | 协作白板),支持思维导图、流程图,基于 Plait 框架开发">
<meta property="og:type" content="website">
<meta property="og:url" content="https://opentu.ai">
<meta property="og:site_name" content="爱图">
<!-- Open Graph Meta 标签 (英文) -->
<meta property="og:title" lang="en" content="Aitu - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard">
<meta property="og:description" lang="en" content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework">
<!-- Twitter Card Meta 标签 (英文) -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Aitu - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard">
<meta name="twitter:description" content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework">
<!-- 其他重要 Meta 标签 -->
<meta name="robots" content="index, follow">
<meta name="author" content="Aitu Team">
<link rel="canonical" href="https://opentu.ai">
<!-- 语言替代链接 -->
<link rel="alternate" hreflang="zh-CN" href="https://opentu.ai">
<!-- <link rel="alternate" hreflang="en" href="https://drawnix.com/en"> -->
<link rel="alternate" hreflang="x-default" href="https://opentu.ai">
<!-- 结构化数据 (JSON-LD) - 中英双语 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Aitu",
"alternateName": ["爱图", "AI图片视频创作", "Open Source Whiteboard Tool"],
"description": {
"zh-CN": "爱图是一款强大的AI图片视频创作工具,集成思维导图、流程图等功能。基于 Plait 框架开发,支持插件扩展,提供自动保存、无限画布等特性。",
"en": "Aitu is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more."
},
"url": "https://opentu.ai",
"applicationCategory": "DesignApplication",
"operatingSystem": "Any",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"creator": {
"@type": "Organization",
"name": "Aitu Team"
},
"keywords": ["whiteboard", "mind mapping", "flowchart", "open source", "思维导图", "流程图", "白板"],
"inLanguage": ["zh-CN", "en"],
"license": "https://github.com/ljquan/aitu/blob/master/LICENSE"
}
</script>
<!-- base href 由构建工具处理,CDN 模式下使用相对路径 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="app-version" content="0.5.25" />
<link rel="icon" type="image/svg+xml" sizes="16x16" href="./icons/favicon-16x16.svg" />
<link rel="icon" type="image/svg+xml" sizes="32x32" href="./icons/favicon-32x32.svg" />
<link rel="icon" type="image/svg+xml" href="./icons/favicon-new.svg" />
<link rel="icon" type="image/ico" href="./favicon.ico" />
<!-- PWA Manifest -->
<link rel="manifest" href="./manifest.json?v=0.1.0" />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#ffffff" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="爱图" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="msapplication-tap-highlight" content="no" />
<!-- Apple Touch Icons -->
<link rel="apple-touch-icon" sizes="192x192" href="./icons/icon-192x192.svg" />
<!-- Windows Tiles -->
<meta name="msapplication-TileImage" content="./icons/icon-192x192.svg" />
<meta name="msapplication-square310x310logo" content="./icons/icon-512x512.svg" />
<link rel="stylesheet" href="./src/styles.scss" />
<!-- CDN 智能选择器(可选,用于提前检测最佳 CDN) -->
<script src="./cdn-config.js" defer></script>
</head>
<body>
<div id="root"></div>
<script type="module" src="./src/main.tsx"></script>
</body>
<!-- PostHog Analytics -->
<script>
!function(t,e){var o,n,p,r;e.__SV||(window.posthog && window.posthog.__loaded)||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init Dr Ur fi Lr zr ci Or jr capture Ai calculateEventProperties qr register register_once register_for_session unregister unregister_for_session Jr getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey displaySurvey cancelPendingSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty Gr Br createPersonProfile Vr Cr Kr opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing get_explicit_consent_status is_capturing clear_opt_in_out_capturing Hr debug O Wr getPageViewId captureTraceFeedback captureTraceMetric Rr".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]);
posthog.init('phc_13URtidKwTR9POlwnB153NsN99shRykvPguKWf3vZVn', {
api_host: 'https://us.i.posthog.com',
defaults: '2025-11-30',
person_profiles: 'identified_only'
})
</script>
</html>