Compare commits
13
Commits
e93b48345c
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
06f694fe70 | ||
|
|
b41eeb9ce0 | ||
|
|
585a91e895 | ||
|
|
c754d886c5 | ||
|
|
d2fae59c2c | ||
|
|
9030d98fcd | ||
|
|
b401940c4e | ||
|
|
b31fee0a14 | ||
|
|
97a3a007e6 | ||
|
|
d06b4cf629 | ||
|
|
efef260de6 | ||
|
|
8076fc8dd1 | ||
|
|
506989660b |
@@ -1 +1,2 @@
|
||||
.DS_Store
|
||||
.omo/
|
||||
|
||||
@@ -7,11 +7,6 @@ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
RewriteCond %{HTTP_HOST} ^www\.amipro\.me$ [NC]
|
||||
RewriteRule ^(.*)$ https://amipro.me/$1 [L,R=301]
|
||||
|
||||
# === Serve static robots.txt and sitemap.xml directly (bypass WordPress) ===
|
||||
RewriteRule ^robots\.txt$ /robots.txt [L]
|
||||
RewriteRule ^sitemap\.xml$ /sitemap.xml [L]
|
||||
RewriteRule ^llms\.txt$ /llms.txt [L]
|
||||
|
||||
# === Security Headers ===
|
||||
<IfModule mod_headers.c>
|
||||
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" env=HTTPS
|
||||
|
||||
@@ -0,0 +1,236 @@
|
||||
AI ASSISTANT INSTRUCTION: UPDATE HTML FOR GENERATIVE ENGINE OPTIMIZATION (GEO)
|
||||
[ROLE & TASK]
|
||||
You are an expert Frontend Engineer and SEO/GEO (Generative Engine Optimization) Specialist.
|
||||
Your task is to refactor the landing page HTML code for a local-first Chrome extension called "ContextWizard". The goal is to make the content highly structured, explicit, and declarative so that AI search engines (like ChatGPT Browse, Perplexity, Claude, and Gemini) can perfectly parse, summarize, and cite this tool when users ask production-related questions.
|
||||
|
||||
Please apply the following four specific updates to the target HTML file (contextwizard_top.html):
|
||||
|
||||
UPDATE 1: Add Structured Schema Markup in
|
||||
Insert this standard JSON-LD Schema snippet into the <head> section of the HTML to help AI bots understand the exact category, capabilities, and system requirements of the application instantly.
|
||||
|
||||
HTML
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
"name": "ContextWizard",
|
||||
"operatingSystem": "Windows, macOS, Linux",
|
||||
"applicationCategory": "BrowserApplication",
|
||||
"browserRequirements": "Requires Google Chrome, Microsoft Edge, or Chromium-based browsers",
|
||||
"description": "A local-first browser extension designed for multitaskers and information workers to seamlessly capture, search, bookmark, and transfer AI chat histories across 10+ major platforms locally.",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"price": "0",
|
||||
"priceCurrency": "USD"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
UPDATE 2: Refactor Hero Section H1 & Subtitle for Explicit Category Anchor
|
||||
Locate the main Hero Section. Keep the poetic tagline but inject explicit product category keywords ("AI Chat Manager", "Prompt Organizer Extension") so AI crawlers can match user intent.
|
||||
|
||||
[Old H1/Subtitle Area (Approximate)]:
|
||||
H1: ContextWizard
|
||||
Subtitle: The universal context layer for your AI chats. Capture, bookmark, search, and transfer knowledge across platforms.
|
||||
|
||||
[Replace With]:
|
||||
|
||||
HTML
|
||||
<h1>ContextWizard</h1>
|
||||
<h2>The Ultimate All-in-One AI Chat Manager & Prompt Organizer Extension</h2>
|
||||
<p>The universal context layer for your AI chats. Automatically capture, bookmark, search, and transfer knowledge across 10+ AI platforms seamlessly with zero configuration.</p>
|
||||
UPDATE 3: Enhance "Local-First / Privacy" Section with Structured Assertions
|
||||
Locate the section talking about "Local-first: A unified conversation manager...". Refactor the text or bullet points into highly explicit, declarative statements that match user privacy-focused queries.
|
||||
|
||||
[Replace or Append to the Privacy/Local-first Section]:
|
||||
|
||||
HTML
|
||||
<div class="geo-privacy-assertions">
|
||||
<h3>Local-First & Privacy-Centric Architecture</h3>
|
||||
<ul>
|
||||
<li><strong>Zero Cloud Uploads:</strong> All captured AI chat logs, transcripts, and custom prompt templates are fully encrypted and saved strictly inside your browser's local storage (<code>chrome.storage.local</code>).</li>
|
||||
<li><strong>No Cloud Account & No API Keys Required:</strong> ContextWizard runs entirely out of the box via native DOM mutation observers. It does not require any third-party registration or OpenAI/Anthropic/DeepSeek API keys.</li>
|
||||
<li><strong>100% GDPR & Privacy Compliant:</strong> Your confidential prompts, proprietary source codes, and business contexts remain completely offline and never touch external synchronization servers.</li>
|
||||
</ul>
|
||||
</div>
|
||||
UPDATE 4: Rewrite FAQ Section into Direct Answer Blocks
|
||||
Locate the "Frequently Asked Questions" section at the bottom of the page. Rewrite the answers into "Direct Assertion + Specific Features" format. This allows AI bots to directly extract these text blocks for "Direct Answers / Snippets" in AI search results.
|
||||
|
||||
[Replace the existing FAQ list with the following updated Q&A blocks]:
|
||||
|
||||
HTML
|
||||
<div class="faq-section">
|
||||
<h2>Frequently Asked Questions</h2>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>How to copy a long ChatGPT thread into Claude without formatting issues?</h3>
|
||||
<p><strong>To copy a long ChatGPT thread into Claude without markdown or UI formatting clutter, you can use ContextWizard's Context Copy feature.</strong> It automatically strips out platform-specific UI artifacts, extracts clean raw text transcripts from ChatGPT, and allows one-step copying, exporting, or transferring of full conversation contexts into Claude, Manus, Gemini, or other assistants.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>What is the best way to search through multiple AI platform histories at once?</h3>
|
||||
<p><strong>The most efficient way to search through multiple AI platform histories at once is by using a local-first browser tool like ContextWizard.</strong> It builds a unified local index that allows full-text search across titles, summaries, and message bodies across 10+ major platforms (including ChatGPT, Claude, Gemini, Grok, DeepSeek, and Perplexity) simultaneously with granular platform filters.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>How to build a local knowledge base from AI chats safely?</h3>
|
||||
<p><strong>ContextWizard turns your daily browsing history into a secure, searchable local text database.</strong> By capturing real-time conversations using platform-specific selectors, it aggregates scattered insights into a unified workspace on your PC, enabling power users to build an offline second brain from their AI interactions.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>How do I keep track of important conversations across different AI models?</h3>
|
||||
<p><strong>ContextWizard's cross-platform bookmark feature allows you to link and save key moments across ChatGPT, Claude, and Gemini in a single place.</strong> It supports organizing bookmarks into draggable custom groups with full instant undo support, making it easy for multitaskers to jump back to any bookmarked conversation in its original web context with a single click.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item">
|
||||
<h3>How can I safely reuse prompts without exposing sensitive data?</h3>
|
||||
<p><strong>The built-in Prompt Editor in ContextWizard allows you to manage reusable prompt templates while safeguarding your privacy through auto-redaction.</strong> You can define custom redaction rules that automatically replace sensitive information—such as API keys, passwords, and private tokens—with placeholders before sending the prompt to any AI platform.</p>
|
||||
</div>
|
||||
</div>
|
||||
[EXECUTION LOGIC]
|
||||
|
||||
Parse the existing contextwizard_top.html file.
|
||||
|
||||
Carefully merge the above updates into their respective blocks while preserving the existing CSS class names, tailwind utilities, and layout structures.
|
||||
|
||||
Ensure no original styling breaks. Output the updated clean HTML code.
|
||||
|
||||
================================================================================
|
||||
VERIFICATION: GEO IMPACT ANALYSIS (2026-06-10)
|
||||
================================================================================
|
||||
|
||||
DATA SOURCE: GA4 (Google Analytics 4) - chatgpt.com (ChatGPT 引用推荐)
|
||||
- ChatGPT referral visits: 11 (占整体流量 6.8%)
|
||||
- May 2026 spike: 从 0-1 跳升至 9 次
|
||||
- 累计占比排名前列
|
||||
|
||||
GIT HISTORY: contextwizard_top.html
|
||||
- 531021f (2025-11-18) New style and added ContextWizard pages ← 页面创建
|
||||
- e0fe7b8 (2025-11-23) ContextWizard landing page done
|
||||
- 82a8be4 (2026-04-02) GEO ← ★★★ 首次GEO优化
|
||||
- 024ba06 (2026-06-10) GEO improved
|
||||
- 5e3001a (2026-06-10) GEO improve v2
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
TIMELINE CORRELATION
|
||||
--------------------------------------------------------------------------------
|
||||
2025-11 ~ 2026-03 无GEO → ChatGPT推荐 ≈ 0
|
||||
2026-04-02 首次GEO优化提交 (82a8be4)
|
||||
2026-05 ChatGPT推荐从0-1跳升至9次 ← ★★★ 效果显现
|
||||
2026-06-10 今天继续强化GEO (GEO improved + GEO improve v2)
|
||||
|
||||
结论:约4周索引延迟后,ChatGPT推荐与GEO优化呈因果关联。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
WHAT THE INITIAL GEO COMMIT (82a8be4, Apr 2) DID
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
1. TITLE改写
|
||||
Old: "ContextWizard - amiPro"
|
||||
New: "ContextWizard | AI Chat Backup & Search - Local-First Privacy | amiPro"
|
||||
→ 明确包含产品类别关键词 "AI Chat Backup & Search"
|
||||
|
||||
2. META DESCRIPTION重写
|
||||
Old: 单句描述
|
||||
New: "ContextWizard automatically captures and organizes AI conversations
|
||||
across ChatGPT, Claude, Gemini, Perplexity, and more. Local-first
|
||||
encryption, full-text search, zero configuration. Free Chrome and
|
||||
Edge extension by amiPro."
|
||||
→ 显式列出支持的AI平台(ChatGPT排首位),含特性关键词和CTA
|
||||
|
||||
3. 结构化数据(Schema.org JSON-LD)
|
||||
- FAQPage(3个问题,均含"ChatGPT"关键词问答)
|
||||
- SoftwareApplication(类别、价格0、installUrl、特性列表)
|
||||
→ ChatGPT搜索底层(Bing index)对FAQPage和SoftwareApplication
|
||||
有高优先级抓取,直接用于生成推荐卡片
|
||||
|
||||
4. Open Graph / Twitter Card
|
||||
→ 社交分享时展示完整标题+描述+图片,间接增强外链CTR
|
||||
|
||||
5. Canonical URL + hreflang(en, ja, x-default)
|
||||
→ 明确语言版本,避免多语言重复内容扣分
|
||||
|
||||
6. Script标签添加 defer
|
||||
→ 性能优化,提升Core Web Vitals(LCP/FID)
|
||||
|
||||
7. HERO标题重构
|
||||
From: "Never lose an AI conversation again."
|
||||
To: "The universal context indexer for your AI chats..."
|
||||
→ 功能导向,含"context indexer"等关键词
|
||||
|
||||
8. 新增安装按钮(Chrome Store + Edge Store + 视频)
|
||||
→ 降低用户行动成本,提高转化
|
||||
|
||||
9. 移除技术细节section → 替换为FAQ可视区块
|
||||
→ 内容用户友好化,同时FAQ文本也被AI引擎索引
|
||||
|
||||
10. 新增footer(Privacy / Tokushoho / Contact)
|
||||
→ 站点完整性信号
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
WHY CHATGPT STARTED RECOMMENDING
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
核心杠杆 - 三要素对齐了ChatGPT搜索的推荐偏好:
|
||||
|
||||
[1] FAQPage Schema + "ChatGPT"关键词
|
||||
Question: "How to copy a long ChatGPT thread into Claude..."
|
||||
→ ChatGPT搜索会优先索引FAQPage,且问题/答案中显式包含
|
||||
"ChatGPT",触发相关性匹配
|
||||
|
||||
[2] SoftwareApplication Schema
|
||||
- price: 0(免费工具优先推荐)
|
||||
- installUrl: chrome.google.com(可直接安装)
|
||||
- browserRequirements / applicationCategory(明确使用场景)
|
||||
→ ChatGPT会把这类数据渲染为推荐卡片
|
||||
|
||||
[3] Meta description + 正文高频出现"ChatGPT"
|
||||
description + hero + FAQ + feature list 中反复出现ChatGPT
|
||||
→ 语义相关性信号强化
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
"GEO improved" (024ba06, Jun 10) 做了什么
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
1. FAQ答案从短句→长段(200+字符),提高摘录概率
|
||||
2. FAQ从3题→5题,新增:
|
||||
- "How do I keep track of important conversations across different AI models?"
|
||||
- "How can I safely reuse prompts without exposing sensitive data?"
|
||||
3. FAQ答案开头加粗(如 "<strong>To copy a long ChatGPT thread...</strong>")
|
||||
→ 便于AI引擎提取direct answer
|
||||
4. HERO结构微调(H1改回"ContextWizard" + 独立subtitle)
|
||||
5. 隐私callout扩展为详细三条文(Zero Cloud, No API Keys, GDPR)
|
||||
6. 增加强调结构(FAQ每个item的strong开头)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
"GEO improve v2" (5e3001a, Jun 10) 做了什么
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
1. i18n消息新增Bookmark特性和Prompt Editor特性(中英日三语)
|
||||
2. 新增两个特性卡片:
|
||||
- Cross-Platform Bookmarks(书签跨平台管理)
|
||||
- Prompt Editor & Privacy(提示词编辑与隐私保护)
|
||||
3. 特性卡片在页面中间位置展示,增加内容密度和实体锚点
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
EXPECTED NEXT WAVE (from today's GEO improve v2)
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
- 索引延迟约2-4周 → 效果预计在 2026-07 上旬 GA4 数据中显现
|
||||
- 新增的两个FAQ问题(bookmarks / prompt privacy)可能带来新的
|
||||
长尾query匹配
|
||||
- 中英日i18n字符串可能被多语言索引
|
||||
|
||||
================================================================================
|
||||
SUMMARY
|
||||
================================================================================
|
||||
|
||||
ChatGPT推荐从0-1跳升至9/11次(6.8%)的跃升可直接归因于
|
||||
2026-04-02的首次GEO优化commit(82a8be4),核心杠杆是:
|
||||
|
||||
FAQPage Schema中"ChatGPT"显式问句
|
||||
+ SoftwareApplication Schema标明免费工具属性
|
||||
+ Meta/Hero高频平台关键词
|
||||
|
||||
三者对齐了ChatGPT联网搜索的推荐偏好,经过约4周的索引延迟后,
|
||||
在5月触发流量跃升。这是GEO(Generative Engine Optimization)
|
||||
在AI搜索渠道上的已验证有效案例。
|
||||
@@ -0,0 +1,169 @@
|
||||
# amiPro 品牌外部存在创建指南
|
||||
|
||||
## 目标
|
||||
在主要平台建立品牌账号,然后在网站 Organization schema 的 sameAs 中添加链接,提升品牌权威信号(GEO 审计中此项权重 20%)。
|
||||
|
||||
---
|
||||
|
||||
## 1. GitHub Organization(优先级最高)
|
||||
|
||||
**为什么重要**:amiPro 有开源 SDK,GitHub 是技术品牌的核心阵地。
|
||||
|
||||
**步骤**:
|
||||
1. 登录 GitHub → 右上角 "+" → "New organization"
|
||||
2. 选择 Free 计划
|
||||
3. Organization name: `amipro-llc`
|
||||
4. 组织邮箱: `sales@amipro.me`
|
||||
5. 上传 logo(favicon.ico 或专门的品牌 logo)
|
||||
6. 填写 Description: "FIDO2 passkey infrastructure & AI privacy tooling. Open-source SDKs for JavaScript, iOS, Android."
|
||||
7. 填写 Website: `https://amipro.me`
|
||||
8. 创建后将现有开源仓库(dFido2Lib-ios 等)转移到此 organization
|
||||
9. 在 README 中添加指向 amipro.me 的链接
|
||||
|
||||
**完成后在网站添加**:
|
||||
```json
|
||||
"https://github.com/amipro-llc"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. LinkedIn Company Page(优先级高)
|
||||
|
||||
**为什么重要**:LinkedIn 是 B2B 品牌最权威的外部信号。
|
||||
|
||||
**步骤**:
|
||||
1. 登录 LinkedIn → 左上角 "Work" 图标 → "Create a Company Page"
|
||||
2. 选择 "Company" 类型
|
||||
3. 填写:
|
||||
- Company name: `amiPro, LLC`
|
||||
- LinkedIn public URL: `amipro`
|
||||
- Industry: `Computer Software`
|
||||
- Company size: `2-10 employees`
|
||||
- Company type: `Privately Held`
|
||||
4. 上传 logo 和 banner 图
|
||||
5. 填写 About: "amiPro builds FIDO2-certified passkey infrastructure and privacy-first AI tooling. Founded 2023, based in Tokyo, Japan."
|
||||
6. 填写 Website: `https://amipro.me`
|
||||
7. 添加公司位置: Shibuya-ku, Tokyo, Japan
|
||||
8. 发布几条关于 Passkey 和 ContextWizard 的帖子
|
||||
|
||||
**完成后**:网站已有此链接 ✅
|
||||
|
||||
---
|
||||
|
||||
## 3. Crunchbase(优先级中)
|
||||
|
||||
**为什么重要**:Crunchbase 是 AI 系统识别公司实体的主要数据源。
|
||||
|
||||
**步骤**:
|
||||
1. 访问 `https://www.crunchbase.com/` → "Claim Profile"
|
||||
2. 搜索 "amiPro" 或 "amiPro LLC"
|
||||
3. 如果没有,点击 "Add Organization"
|
||||
4. 填写:
|
||||
- Organization name: `amiPro, LLC`
|
||||
- Short description: "B2B identity infrastructure and AI privacy platform"
|
||||
- Headquarters: Tokyo, Japan
|
||||
- Founded date: March 3, 2023
|
||||
- Founders: (填写创始人姓名)
|
||||
- Categories: Identity Management, Cybersecurity, AI
|
||||
- Website: `https://amipro.me`
|
||||
5. 验证邮箱(需要使用公司域名邮箱)
|
||||
6. 完善公司详情:融资信息(如有)、员工数、技术栈
|
||||
|
||||
**完成后在网站添加**:
|
||||
```json
|
||||
"https://crunchbase.com/organization/amipro"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Product Hunt(优先级中)
|
||||
|
||||
**为什么重要**:技术产品的权威发布平台,AI 系统会引用。
|
||||
|
||||
**步骤**:
|
||||
1. 访问 `https://www.producthunt.com/` → 登录
|
||||
2. 点击 "Submit" → "Product"
|
||||
3. 提交 ContextWizard:
|
||||
- Product name: `ContextWizard`
|
||||
- Tagline: "Local-first AI chat backup & search across 10+ platforms"
|
||||
- Website: `https://contextwizard.site/`
|
||||
- Description: 详细产品描述
|
||||
- Topics: Productivity, AI, Privacy, Browser Extensions
|
||||
- Logo: 上传产品 logo
|
||||
4. 选择发布日期(周二至周四效果最佳)
|
||||
5. 邀请支持者在发布日投票和评论
|
||||
|
||||
**完成后在网站添加**:
|
||||
```json
|
||||
"https://producthunt.com/posts/contextwizard"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. AlternativeTo(优先级中)
|
||||
|
||||
**为什么重要**:软件对比平台,AI 系统在回答"XXX 替代品"时会引用。
|
||||
|
||||
**步骤**:
|
||||
1. 访问 `https://alternativeto.net/` → 登录
|
||||
2. 搜索 ContextWizard
|
||||
3. 如果不存在,点击 "Suggest Alternative"
|
||||
4. 填写产品信息,标记为 "Free" 和 "Open Source"
|
||||
5. 添加到相关替代品列表(如 ChatGPT 导出工具、AI 笔记工具等)
|
||||
|
||||
---
|
||||
|
||||
## 6. G2 / Capterra(优先级低)
|
||||
|
||||
**为什么重要**:B2B 软件评测平台,提升信任信号。
|
||||
|
||||
**步骤**:
|
||||
1. 访问 `https://www.g2.com/` → "Claim Your Profile"
|
||||
2. 搜索 "amiPro" 或 "Passkey Hub"
|
||||
3. 如果不存在,提交新产品
|
||||
4. 填写产品详情、定价、功能列表
|
||||
5. 鼓励早期用户留下评价
|
||||
|
||||
---
|
||||
|
||||
## 7. Hacker News / Reddit(优先级低)
|
||||
|
||||
**为什么重要**:技术社区讨论增加品牌提及。
|
||||
|
||||
**步骤**:
|
||||
- **Hacker News**: 发布产品公告(Show HN 格式)
|
||||
- **Reddit**:
|
||||
- r/netsec(Passkey 安全相关)
|
||||
- r/privacy(ContextWizard 隐私相关)
|
||||
- r/SideProject(产品展示)
|
||||
- 发布有价值的技术内容,不要硬广
|
||||
|
||||
---
|
||||
|
||||
## 实施顺序建议
|
||||
|
||||
| 优先级 | 平台 | 预计时间 | 难度 |
|
||||
|--------|------|---------|------|
|
||||
| P0 | GitHub Organization | 30 分钟 | 低 |
|
||||
| P0 | LinkedIn Company Page | 1 小时 | 低 |
|
||||
| P1 | Crunchbase | 1-2 小时 | 中(需验证) |
|
||||
| P1 | Product Hunt | 1 天(含准备) | 中 |
|
||||
| P2 | AlternativeTo | 30 分钟 | 低 |
|
||||
| P2 | G2 / Capterra | 1 小时 | 低 |
|
||||
| P3 | Hacker News / Reddit | 持续运营 | 中 |
|
||||
|
||||
---
|
||||
|
||||
## 完成后更新网站
|
||||
|
||||
每个平台创建完成后,在 `index.html` 的 Organization schema 中添加 sameAs 链接:
|
||||
|
||||
```json
|
||||
"sameAs": [
|
||||
"https://www.linkedin.com/company/amipro",
|
||||
"https://github.com/amipro-llc",
|
||||
"https://crunchbase.com/organization/amipro",
|
||||
"https://producthunt.com/posts/contextwizard",
|
||||
"https://alternativeto.net/software/contextwizard/"
|
||||
]
|
||||
```
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 668 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
@@ -1,415 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en-US" class="light-style">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
|
||||
<title>Install ContextWizard - amiPro, LLC</title>
|
||||
|
||||
<meta
|
||||
name="description"
|
||||
content="Step-by-step instructions to install the ContextWizard browser extension in Chrome, Edge, and other Chromium-based browsers."
|
||||
/>
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<link rel="stylesheet" href="files/boxicons.css?v=20230405" />
|
||||
<link rel="stylesheet" href="files/core.css" class="template-customizer-core-css" />
|
||||
<link rel="stylesheet" href="files/theme-default.css" class="template-customizer-theme-css" />
|
||||
<link rel="stylesheet" href="files/demo.css" />
|
||||
<link rel="stylesheet" href="files/modern.css" />
|
||||
<link rel="stylesheet" href="files/perfect-scrollbar.css" />
|
||||
|
||||
<script src="files/helpers.js"></script>
|
||||
<script src="files/config.js"></script>
|
||||
<script src="files/jquery.js"></script>
|
||||
<script src="files/popper.js"></script>
|
||||
<script src="files/bootstrap.js"></script>
|
||||
<script src="files/perfect-scrollbar.js"></script>
|
||||
<script src="files/menu.js"></script>
|
||||
<script src="files/main.js"></script>
|
||||
<script src="files/ua-parser.js"></script>
|
||||
<script src="files/amipro_utils.js?v=20230401402"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
color: #0f172a;
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #ffffff 40%, #f5f7fb 100%);
|
||||
}
|
||||
|
||||
.hero__title {
|
||||
font-size: clamp(2rem, 3.25vw, 3rem);
|
||||
}
|
||||
|
||||
.hero__lead {
|
||||
max-width: 620px;
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
.nav-brand-logo {
|
||||
height: 48px;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.step-card {
|
||||
border: none;
|
||||
border-radius: 1.25rem;
|
||||
box-shadow: 0 18px 48px rgba(15, 23, 42, 0.08);
|
||||
}
|
||||
|
||||
.step-number {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 999px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #eff6ff;
|
||||
color: #1d4ed8;
|
||||
font-weight: 600;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
.browser-pill {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.25rem 0.75rem;
|
||||
border-radius: 999px;
|
||||
background: #eff6ff;
|
||||
color: #1e293b;
|
||||
font-size: 0.875rem;
|
||||
margin-right: 0.5rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
.browser-pill i {
|
||||
font-size: 1rem;
|
||||
margin-right: 0.25rem;
|
||||
}
|
||||
|
||||
.hero-chip {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 0.35rem 0.9rem;
|
||||
border-radius: 999px;
|
||||
background: #eff6ff;
|
||||
color: #1e293b;
|
||||
font-size: 0.9rem;
|
||||
margin-right: 0.5rem;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.hero__actions {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
window.onload = function () {
|
||||
if (typeof initRevealAnimations === 'function') {
|
||||
initRevealAnimations();
|
||||
} else {
|
||||
// Fallback: ensure content is visible even if animations aren't loaded
|
||||
document.querySelectorAll('.reveal [data-animate]').forEach(function (el) {
|
||||
el.style.opacity = '1';
|
||||
el.style.transform = 'none';
|
||||
});
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="layout-wrapper layout-content-navbar">
|
||||
<div class="layout-container">
|
||||
<div class="layout-page">
|
||||
<nav
|
||||
class="layout-navbar container-xxl navbar navbar-expand-xl navbar-detached align-items-center bg-navbar-theme"
|
||||
id="layout-navbar"
|
||||
>
|
||||
<div class="navbar-nav-right d-flex align-items-center w-100" id="navbar-collapse">
|
||||
<div class="navbar-nav align-items-center">
|
||||
<div class="nav-item d-flex align-items-center">
|
||||
<img
|
||||
src="files/favicon.ico"
|
||||
alt="amiPro"
|
||||
width="64"
|
||||
height="64"
|
||||
class="nav-brand-logo"
|
||||
style="margin-right: 16px;"
|
||||
/>
|
||||
<div>
|
||||
<div style="font-weight: 700; font-size: 1.25rem; color: #0f172a;">amiPro, LLC</div>
|
||||
<small style="color: #64748b;">Privacy-first identity & AI products</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a href="contextwizard_top.html" class="btn btn-link ms-auto me-3">Back to ContextWizard</a>
|
||||
<a
|
||||
href="mailto:sales@amipro.me?subject=ContextWizard%20support"
|
||||
class="btn btn-outline-primary"
|
||||
>Contact support</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="content-wrapper">
|
||||
<div class="container-xxl" style="padding: 32px 24px 72px;">
|
||||
<section class="hero reveal">
|
||||
<div class="hero__text" data-animate>
|
||||
<span class="hero__eyebrow">ContextWizard</span>
|
||||
<h1 class="hero__title">Install ContextWizard in your browser</h1>
|
||||
<p class="hero__lead">
|
||||
Follow this guide to install the unpackaged ContextWizard extension in Chrome, Microsoft Edge,
|
||||
Brave, or any Chromium-based browser that supports developer mode extensions.
|
||||
</p>
|
||||
<div style="margin-top: 1.5rem;" class="hero__chips">
|
||||
<span class="hero-chip">Works offline on your machine</span>
|
||||
<span class="hero-chip">No account required</span>
|
||||
</div>
|
||||
<div
|
||||
class="hero__actions"
|
||||
style="margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 1rem;"
|
||||
>
|
||||
<a
|
||||
href="https://amipro.me/contextwizard-files/ContextWizard-crx-latest.zip"
|
||||
class="btn btn-primary"
|
||||
style="flex: 1 0 220px;"
|
||||
>Download ContextWizard ZIP</a>
|
||||
<a
|
||||
href="contextwizard_privacy_policy.html"
|
||||
class="btn btn-outline-secondary"
|
||||
style="flex: 1 0 220px;"
|
||||
>Read privacy policy</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="reveal" data-animate style="margin-top: 48px;">
|
||||
<div class="row g-4 align-items-start">
|
||||
<div class="col-lg-7">
|
||||
<article class="card step-card">
|
||||
<div class="card-body">
|
||||
<h2 style="font-weight: 600; color: #0f172a; margin-bottom: 1rem;">
|
||||
Step-by-step installation
|
||||
</h2>
|
||||
|
||||
<ol class="list-unstyled" style="margin: 0; padding: 0;">
|
||||
<li style="margin-bottom: 1.5rem;">
|
||||
<div style="display: flex; align-items: flex-start;">
|
||||
<div class="step-number">1</div>
|
||||
<div>
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.35rem;">Download the ZIP file</h3>
|
||||
<p style="margin-bottom: 0.5rem; color: #475569;">
|
||||
Click <strong>Download ContextWizard ZIP</strong> above and save the file to a
|
||||
location you can find, such as your <em>Downloads</em> folder.
|
||||
</p>
|
||||
<p style="margin-bottom: 0; color: #64748b; font-size: 0.9rem;">
|
||||
The ZIP contains the full extension source so your browser can run it in
|
||||
developer mode.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li style="margin-bottom: 1.5rem;">
|
||||
<div style="display: flex; align-items: flex-start;">
|
||||
<div class="step-number">2</div>
|
||||
<div>
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.35rem;">Unzip the archive</h3>
|
||||
<p style="margin-bottom: 0.5rem; color: #475569;">
|
||||
Locate the downloaded ZIP file, then unzip it:
|
||||
</p>
|
||||
<ul style="padding-left: 1.1rem; margin-bottom: 0.5rem; color: #475569;">
|
||||
<li>On macOS: double-click the ZIP file in Finder.</li>
|
||||
<li>On Windows: right-click the ZIP and choose <em>Extract All…</em>.</li>
|
||||
</ul>
|
||||
<p style="margin-bottom: 0; color: #64748b; font-size: 0.9rem;">
|
||||
You should end up with a folder named something like
|
||||
<code>ContextWizard-crx-latest</code>. Keep this folder in a permanent location
|
||||
(not inside your browser cache or trash).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li style="margin-bottom: 1.5rem;">
|
||||
<div style="display: flex; align-items: flex-start;">
|
||||
<div class="step-number">3</div>
|
||||
<div style="width: 100%;">
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.35rem;">Open the extensions page</h3>
|
||||
<p style="margin-bottom: 0.5rem; color: #475569;">
|
||||
In Chrome, open <code>chrome://extensions</code> in the address bar. In Edge, use
|
||||
<code>edge://extensions</code>. You will see the extensions management screen.
|
||||
</p>
|
||||
<div style="margin: 0.5rem 0 0.75rem;">
|
||||
<img
|
||||
src="files/01-ChromeExtension-nonDev.png"
|
||||
alt="Chrome extensions page highlighting chrome://extensions in the address bar"
|
||||
style="max-width: 100%; border-radius: 0.75rem; box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);"
|
||||
/>
|
||||
</div>
|
||||
<p style="margin-bottom: 0; color: #64748b; font-size: 0.9rem;">
|
||||
This is where you manage, enable, and remove extensions in your browser.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li style="margin-bottom: 1.5rem;">
|
||||
<div style="display: flex; align-items: flex-start;">
|
||||
<div class="step-number">4</div>
|
||||
<div style="width: 100%;">
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.35rem;">Enable developer mode</h3>
|
||||
<p style="margin-bottom: 0.5rem; color: #475569;">
|
||||
Turn on <strong>Developer mode</strong> using the toggle in the top-right corner of
|
||||
the extensions page.
|
||||
</p>
|
||||
<div style="margin: 0.5rem 0 0.75rem;">
|
||||
<img
|
||||
src="files/02-ChromeExtension-enabledDev.png"
|
||||
alt="Chrome extensions page with Developer mode toggle turned on and Load unpacked button visible"
|
||||
style="max-width: 100%; border-radius: 0.75rem; box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);"
|
||||
/>
|
||||
</div>
|
||||
<p style="margin-bottom: 0; color: #64748b; font-size: 0.9rem;">
|
||||
When Developer mode is on, you should see a <strong>Load unpacked</strong> button
|
||||
near the top of the page.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li style="margin-bottom: 1.5rem;">
|
||||
<div style="display: flex; align-items: flex-start;">
|
||||
<div class="step-number">5</div>
|
||||
<div style="width: 100%;">
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.35rem;">Load the unpacked extension</h3>
|
||||
<p style="margin-bottom: 0.5rem; color: #475569;">
|
||||
Click <strong>Load unpacked</strong> and choose the folder you unzipped in Step 2.
|
||||
</p>
|
||||
<div style="margin: 0.5rem 0 0.75rem;">
|
||||
<img
|
||||
src="files/03-ChromeExtension-select-unpackaged-folder.png"
|
||||
alt="Chrome extensions page with Load unpacked button highlighted and ContextWizard folder selected in Finder"
|
||||
style="max-width: 100%; border-radius: 0.75rem; box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);"
|
||||
/>
|
||||
</div>
|
||||
<p style="margin-bottom: 0.25rem; color: #475569; font-size: 0.9rem;">
|
||||
In the file picker, select the <strong>folder</strong> (for example,
|
||||
<code>ContextWizard-crx-latest</code>), not the ZIP file.
|
||||
</p>
|
||||
<p style="margin-bottom: 0; color: #64748b; font-size: 0.9rem;">
|
||||
After loading, your browser will add ContextWizard to the list of installed
|
||||
extensions.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div style="display: flex; align-items: flex-start;">
|
||||
<div class="step-number">6</div>
|
||||
<div>
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.35rem;">Pin and open ContextWizard</h3>
|
||||
<p style="margin-bottom: 0.5rem; color: #475569;">
|
||||
Pin the extension so it is easy to reach, then open it in a new tab.
|
||||
</p>
|
||||
<div style="margin: 0.5rem 0 0.75rem;">
|
||||
<img
|
||||
src="files/04-ChromeExtension-installed.png"
|
||||
alt="Chrome extensions page showing ContextWizard installed in the All Extensions list"
|
||||
style="max-width: 100%; border-radius: 0.75rem; box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);"
|
||||
/>
|
||||
</div>
|
||||
<ul style="padding-left: 1.1rem; margin-bottom: 0.5rem; color: #475569;">
|
||||
<li>Click the puzzle icon (Chrome/Edge), then pin <strong>ContextWizard</strong>.</li>
|
||||
<li>Click the ContextWizard icon or open the extension's page to start using it.</li>
|
||||
</ul>
|
||||
<p style="margin-bottom: 0; color: #64748b; font-size: 0.9rem;">
|
||||
Your conversations stay local on your machine. You can remove the unpacked
|
||||
extension at any time from the extensions page.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-5">
|
||||
<article
|
||||
class="card h-100"
|
||||
style="border-radius: 1.25rem; box-shadow: 0 16px 50px rgba(15, 23, 42, 0.08);"
|
||||
>
|
||||
<div class="card-body">
|
||||
<h3 style="font-size: 1.15rem; margin-bottom: 0.75rem;">Supported browsers</h3>
|
||||
<p style="color: #475569;">
|
||||
ContextWizard works in most Chromium-based desktop browsers that support loading
|
||||
unpacked extensions:
|
||||
</p>
|
||||
<div style="margin-bottom: 0.75rem;">
|
||||
<span class="browser-pill"><i class="bx bxl-chrome"></i>Chrome (latest)</span>
|
||||
<span class="browser-pill"><i class="bx bxl-microsoft"></i>Microsoft Edge</span>
|
||||
<span class="browser-pill"><i class="bx bxs-ship"></i>Brave / Vivaldi / Opera</span>
|
||||
</div>
|
||||
<p style="color: #64748b; font-size: 0.9rem;">
|
||||
Mobile browsers and Safari do not support this unpacked extension flow.
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
|
||||
<h3 style="font-size: 1.05rem; margin-bottom: 0.5rem;">If something doesnt work</h3>
|
||||
<ul style="padding-left: 1.1rem; color: #475569;">
|
||||
<li>Make sure <strong>Developer mode</strong> is enabled on the extensions page.</li>
|
||||
<li>Confirm you selected the <strong>uncompressed folder</strong>, not the ZIP file.</li>
|
||||
<li>Try restarting the browser after loading the extension.</li>
|
||||
</ul>
|
||||
<p style="color: #64748b; font-size: 0.9rem; margin-bottom: 0.75rem;">
|
||||
If you are still stuck, reach out and well help you get set up.
|
||||
</p>
|
||||
<a href="mailto:support@amipro.me?subject=ContextWizard%20installation%20help" class="btn btn-sm btn-outline-primary">
|
||||
Email support
|
||||
</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<footer class="content-footer footer bg-footer-theme">
|
||||
<div class="container-xxl d-flex flex-wrap justify-content-between py-2 flex-md-row flex-column">
|
||||
<div class="mb-2 mb-md-0">
|
||||
©
|
||||
<script>
|
||||
document.write(new Date().getFullYear());
|
||||
</script>
|
||||
<a href="https://www.amipro.me" target="_blank" class="footer-link fw-bolder">amiPro, LLC</a>
|
||||
</div>
|
||||
<div>
|
||||
<a href="contextwizard_top.html" class="footer-link me-4">ContextWizard overview</a>
|
||||
<a href="contextwizard_privacy_policy.html" class="footer-link">Privacy policy</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<div class="content-backdrop fade"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layout-overlay layout-menu-toggle"></div>
|
||||
</div>
|
||||
|
||||
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -1,458 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html
|
||||
lang="en-US"
|
||||
class="light-style"
|
||||
>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title> ContextWizard Privacy Policy - amiPro </title>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
<script>
|
||||
globalThis.dataLayer = globalThis.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="ContextWizard privacy policy and data handling disclosures" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- Icons. Uncomment required icon fonts -->
|
||||
<link rel="stylesheet" href="files/boxicons.css?v=20230405" />
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link rel="stylesheet" href="files/core.css" class="template-customizer-core-css" />
|
||||
<link rel="stylesheet" href="files/theme-default.css" class="template-customizer-theme-css" />
|
||||
<link rel="stylesheet" href="files/demo.css" />
|
||||
<link rel="stylesheet" href="files/modern.css" />
|
||||
|
||||
<!-- Vendors CSS -->
|
||||
<link rel="stylesheet" href="files/perfect-scrollbar.css" />
|
||||
|
||||
<!-- Page CSS -->
|
||||
|
||||
<!-- Helpers -->
|
||||
<script src="files/helpers.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
color: #1f2a37;
|
||||
background-color: #f5f7fb;
|
||||
}
|
||||
|
||||
.privacy-content .card {
|
||||
border: none;
|
||||
border-radius: 1rem;
|
||||
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.privacy-content .card-header {
|
||||
background: transparent;
|
||||
border-bottom: 1px solid rgba(15, 23, 42, 0.08);
|
||||
}
|
||||
|
||||
.privacy-content .card-title {
|
||||
color: #0f172a;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.privacy-content .card-body,
|
||||
.privacy-content .card-body p,
|
||||
.privacy-content .card-body li,
|
||||
.privacy-content .card-body td,
|
||||
.privacy-content .card-body th {
|
||||
color: #1f2937;
|
||||
font-size: 1rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.privacy-content .card-body ul {
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
|
||||
.privacy-content .card-body code {
|
||||
color: #c026d3;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.privacy-content table {
|
||||
border-color: rgba(15, 23, 42, 0.1);
|
||||
}
|
||||
|
||||
.hero__text,
|
||||
.hero__text .hero__title,
|
||||
.hero__text p,
|
||||
.hero__eyebrow,
|
||||
.hero__chips .hero-chip {
|
||||
color: #f8fafc;
|
||||
}
|
||||
|
||||
.hero__text .hero__title {
|
||||
text-shadow: 0 4px 24px rgba(15, 23, 42, 0.35);
|
||||
}
|
||||
|
||||
.hero__chips .hero-chip {
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
border-color: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
.hero__device h4,
|
||||
.hero__device p {
|
||||
color: #e2e8f0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section -->
|
||||
<!--? Config: Mandatory theme config file contain global vars & default theme options, Set your preferred theme option in this file. -->
|
||||
<script src="files/config.js"></script>
|
||||
|
||||
<script src="files/jquery.js"></script>
|
||||
<script src="files/popper.js"></script>
|
||||
<script src="files/bootstrap.js"></script>
|
||||
<script src="files/perfect-scrollbar.js"></script>
|
||||
<script src="files/menu.js"></script>
|
||||
<script src="files/main.js"></script>
|
||||
|
||||
<script src="files/ua-parser.js"></script>
|
||||
|
||||
<script src="files/amipro_utils.js?v=20230401402"></script>
|
||||
|
||||
<script>
|
||||
const i18n_messages = new Map();
|
||||
let lang_map = new Map();
|
||||
lang_map.set('en-US', 'amiPro - Trustworthy passkey & privacy tooling');
|
||||
lang_map.set('zh-CN', 'amiPro - 值得信赖的 Passkey 与隐私工具');
|
||||
lang_map.set('ja', 'amiPro - 信頼できるパスキーとプライバシーツール');
|
||||
i18n_messages.set('label_welcome', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Management Portal');
|
||||
lang_map.set('zh-CN', '管理门户');
|
||||
lang_map.set('ja', '管理ポータル');
|
||||
i18n_messages.set('label_portal', lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages);
|
||||
initRevealAnimations();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Layout wrapper -->
|
||||
<div class="layout-wrapper layout-content-navbar">
|
||||
<div class="layout-container">
|
||||
<!-- Layout container -->
|
||||
<div class="layout-page">
|
||||
<!-- Navbar -->
|
||||
|
||||
|
||||
|
||||
<!-- / Navbar -->
|
||||
|
||||
<!-- Content wrapper -->
|
||||
<div class="content-wrapper">
|
||||
<!-- Content -->
|
||||
<div style="margin: 24px;">
|
||||
<section class="hero reveal">
|
||||
<div class="hero__text" data-animate>
|
||||
<span class="hero__eyebrow">ContextWizard · Privacy</span>
|
||||
<h1 class="hero__title">Your AI conversations stay on your device</h1>
|
||||
<p class="hero__lead">
|
||||
ContextWizard by amiPro, LLC captures what is already visible in your AI chat windows,
|
||||
encrypts and stores it locally, and never transmits it to amiPro or third parties.
|
||||
</p>
|
||||
<div class="hero__chips">
|
||||
<span class="hero-chip">Local‑first</span>
|
||||
<span class="hero-chip">Chrome Manifest V3</span>
|
||||
<span class="hero-chip">GDPR & CCPA aligned</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero__media" data-animate>
|
||||
<div class="hero__orb"></div>
|
||||
<div class="hero__device">
|
||||
<h4>ContextWizard Privacy Policy</h4>
|
||||
<p>
|
||||
Learn exactly how data moves (and doesn’t move) inside the extension and how to stay in control.
|
||||
</p>
|
||||
<div class="hero__chips" style="margin-top: 1.5rem;">
|
||||
<span class="hero-chip">No telemetry</span>
|
||||
<span class="hero-chip">Full user control</span>
|
||||
<span class="hero-chip">Offline friendly</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="alert alert-info d-flex align-items-center" role="alert" style="margin-top: 24px;">
|
||||
<i class="bx bx-shield-quarter bx-sm me-2"></i>
|
||||
<div>
|
||||
<strong>Last updated:</strong> 18 November 2025
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<article class="privacy-content" style="margin-top: 24px;">
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">ContextWizard Privacy Policy</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
ContextWizard is a Chrome extension built by amiPro, LLC that helps you capture, search, and revisit
|
||||
AI chat conversations across multiple platforms. This Privacy Policy explains what data the extension
|
||||
processes, how the data stays on your device, and what controls you have. By installing or using
|
||||
ContextWizard you agree to the data practices described below.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">1. Scope & Purpose</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
ContextWizard runs entirely as a browser extension and operates solely within the Chrome profile where it is
|
||||
installed. Its only purpose is to capture the text you already see on supported AI chat platforms, store summaries
|
||||
and metadata locally, and provide search, filtering, and export/import features.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">2. Data We Process</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Category</th>
|
||||
<th>Description</th>
|
||||
<th>Storage Location</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Conversation content</td>
|
||||
<td>Message text, titles, timestamps, participant role (user/assistant), detected platform, and the URL of the conversation you are currently viewing.</td>
|
||||
<td><code>chrome.storage.local</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Platform settings</td>
|
||||
<td>Which built-in platforms are enabled, custom platform URL patterns, color assignments, and per-platform toggles.</td>
|
||||
<td><code>chrome.storage.sync</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>UI preferences</td>
|
||||
<td>Language override, sort order, search filters, onboarding dismissals, and other UX state.</td>
|
||||
<td><code>chrome.storage.local</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p class="mb-0">
|
||||
ContextWizard does <strong>not</strong> collect account credentials, payment data, unrelated browsing history, or telemetry/analytics.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">3. Data Sources & Collection Method</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul>
|
||||
<li>Content is captured only from pages whose URLs match the built-in or user-configured host permissions (e.g., <code>https://chatgpt.com/*</code>).</li>
|
||||
<li>The extension uses MutationObserver and DOM queries to read message containers in the active tab; it does <strong>not</strong> call any platform APIs or intercept network traffic.</li>
|
||||
<li>Data collection begins only after you navigate to a supported page and the recording indicator appears. Closing the tab or disabling the platform stops collection immediately.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">4. How We Use Data</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>All captured data is used exclusively to power the extension’s on-device features:</p>
|
||||
<ol>
|
||||
<li>Build a searchable, unified list of your AI conversations.</li>
|
||||
<li>Provide quick links back to the source page via <code>chrome.tabs.update</code>.</li>
|
||||
<li>Enable exports/imports so you can back up or restore your local archive.</li>
|
||||
<li>Maintain per-platform enable/disable states and custom URL patterns.</li>
|
||||
</ol>
|
||||
<p class="mb-0">We never send this information to amiPro, LLC servers or any third party.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">5. Data Sharing & Transfers</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul>
|
||||
<li>ContextWizard does <strong>not</strong> transmit data outside the local browser environment.</li>
|
||||
<li>We do not share, sell, rent, or trade any user data with third parties.</li>
|
||||
<li>The extension does not embed third-party analytics or advertising scripts.</li>
|
||||
<li>Operating offline is fully supported once the extension is installed.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">6. Permissions & Technical Safeguards</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Permission</th>
|
||||
<th>Reason</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><code>activeTab</code></td>
|
||||
<td>Detects whether the tab you explicitly interact with matches a supported platform so conversations can be listed in the popup.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>tabs</code></td>
|
||||
<td>Opens the saved conversation’s URL in the current window and reads metadata (title/URL) for the active tab only.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>scripting</code></td>
|
||||
<td>Injects the packaged content script (<code>content.js</code>) on supported hosts to observe DOM changes in real time; no remote code is used.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>storage</code></td>
|
||||
<td>Saves conversations, summaries, and user preferences locally using Chrome Storage APIs.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Host permissions</td>
|
||||
<td>Restrict DOM access to specific AI chat domains so we can parse message containers safely.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div>
|
||||
<p><strong>Additional safeguards:</strong></p>
|
||||
<ul>
|
||||
<li>Manifest V3 service worker architecture prevents persistent background execution.</li>
|
||||
<li>All JavaScript injected into pages ships with the extension bundle; no remote code execution or eval of downloaded strings.</li>
|
||||
<li>Obfuscation is applied only during the optional <code>npm run build</code> release process; source review builds remain readable.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">7. User Controls</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ul>
|
||||
<li><strong>Platform Toggles:</strong> Settings (<code>options.html</code>) lets you enable/disable each built-in domain or remove custom domains.</li>
|
||||
<li><strong>Data Management:</strong> Export, import, or delete all stored data from Settings → Data Management. Deleting clears <code>chrome.storage</code> entries.</li>
|
||||
<li><strong>Pause Collection:</strong> Use Chrome’s site access controls or the in-extension platform toggle to stop monitoring a site temporarily. Removing the extension deletes every stored record.</li>
|
||||
<li><strong>Language & UI:</strong> Switch languages via the popup menu; UI choices persist only within your profile.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">8. Data Retention</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
Data stays in your local Chrome profile until you delete it via the Data Management screen, clear Chrome’s site data, or uninstall the extension. We do not maintain server-side backups, so removing the extension permanently erases your archive.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">9. Compliance Statement</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
ContextWizard complies with the Chrome Web Store Developer Program Policies, including the User Data, Limited Use, and Secure Handling requirements. Because all processing occurs locally and no personal data leaves the device, ContextWizard also aligns with major privacy regulations (e.g., GDPR, CCPA) regarding data minimization and user control.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">10. Children’s Privacy</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
ContextWizard is intended for general audiences and does not knowingly collect information from children under 13. If you believe a minor has provided data, remove the extension or clear the storage to delete it immediately.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">11. Changes to This Policy</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
We may update this policy to reflect feature changes or regulatory guidance. When we do, we will update the “Last updated” date above and publish the revised policy at this same URL. Material changes will be summarized in the README and release notes.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-5 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h3 class="card-title" style="margin: 0;">12. Contact Us</h3>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>
|
||||
For privacy questions, requests, or bug reports, email <a href="mailto:support@amipro.me">support@amipro.me</a>.
|
||||
We aim to respond within five business days.
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
|
||||
<div class="content-backdrop fade"></div>
|
||||
</div>
|
||||
<!-- Content wrapper -->
|
||||
</div>
|
||||
<!-- / Layout page -->
|
||||
</div>
|
||||
<!-- / Layout container -->
|
||||
</div>
|
||||
<!-- / Layout wrapper -->
|
||||
|
||||
<!-- Overlay -->
|
||||
<div class="layout-overlay layout-menu-toggle"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,359 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html
|
||||
lang="ja"
|
||||
class="light-style"
|
||||
>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title>特定商取引法に基づく表記 - ContextWizard - amiPro</title>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
<script>
|
||||
globalThis.dataLayer = globalThis.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="ContextWizard Chrome拡張機能の特定商取引法に基づく表記(通信販売に関する表示事項)" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- Icons. Uncomment required icon fonts -->
|
||||
<link rel="stylesheet" href="files/boxicons.css?v=20230405" />
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link rel="stylesheet" href="files/core.css" class="template-customizer-core-css" />
|
||||
<link rel="stylesheet" href="files/theme-default.css" class="template-customizer-theme-css" />
|
||||
<link rel="stylesheet" href="files/demo.css" />
|
||||
<link rel="stylesheet" href="files/modern.css" />
|
||||
|
||||
<!-- Vendors CSS -->
|
||||
<link rel="stylesheet" href="files/perfect-scrollbar.css" />
|
||||
|
||||
<!-- Page CSS -->
|
||||
|
||||
<!-- Helpers -->
|
||||
<script src="files/helpers.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
color: #1f2a37;
|
||||
background-color: #f5f7fb;
|
||||
}
|
||||
|
||||
.tokushoho-content .card {
|
||||
border: none;
|
||||
border-radius: 1rem;
|
||||
box-shadow: 0 12px 30px rgba(15, 23, 42, 0.08);
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.tokushoho-content .card-header {
|
||||
background: transparent;
|
||||
border-bottom: 1px solid rgba(15, 23, 42, 0.08);
|
||||
}
|
||||
|
||||
.tokushoho-content .card-title {
|
||||
color: #0f172a;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.tokushoho-content .card-body,
|
||||
.tokushoho-content .card-body p,
|
||||
.tokushoho-content .card-body li,
|
||||
.tokushoho-content .card-body td,
|
||||
.tokushoho-content .card-body th {
|
||||
color: #1f2937;
|
||||
font-size: 1rem;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.tokushoho-content .card-body ul {
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
|
||||
.tokushoho-content table {
|
||||
border-color: rgba(15, 23, 42, 0.1);
|
||||
}
|
||||
|
||||
.tokushoho-content table th {
|
||||
background-color: #f8fafc;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
.hero__text,
|
||||
.hero__text .hero__title,
|
||||
.hero__text p,
|
||||
.hero__eyebrow,
|
||||
.hero__chips .hero-chip {
|
||||
color: #f8fafc;
|
||||
}
|
||||
|
||||
.hero__text .hero__title {
|
||||
text-shadow: 0 4px 24px rgba(15, 23, 42, 0.35);
|
||||
}
|
||||
|
||||
.hero__chips .hero-chip {
|
||||
background: rgba(255, 255, 255, 0.12);
|
||||
border-color: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
.hero__device h4,
|
||||
.hero__device p {
|
||||
color: #e2e8f0;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section -->
|
||||
<!--? Config: Mandatory theme config file contain global vars & default theme options, Set your preferred theme option in this file. -->
|
||||
<script src="files/config.js"></script>
|
||||
|
||||
<script src="files/jquery.js"></script>
|
||||
<script src="files/popper.js"></script>
|
||||
<script src="files/bootstrap.js"></script>
|
||||
<script src="files/perfect-scrollbar.js"></script>
|
||||
<script src="files/menu.js"></script>
|
||||
<script src="files/main.js"></script>
|
||||
|
||||
<script src="files/ua-parser.js"></script>
|
||||
|
||||
<script src="files/amipro_utils.js?v=20230401402"></script>
|
||||
|
||||
<script>
|
||||
window.onload = async function() {
|
||||
initRevealAnimations();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Layout wrapper -->
|
||||
<div class="layout-wrapper layout-content-navbar">
|
||||
<div class="layout-container">
|
||||
<!-- Layout container -->
|
||||
<div class="layout-page">
|
||||
<!-- Navbar -->
|
||||
|
||||
|
||||
|
||||
<!-- / Navbar -->
|
||||
|
||||
<!-- Content wrapper -->
|
||||
<div class="content-wrapper">
|
||||
<!-- Content -->
|
||||
<div style="margin: 24px;">
|
||||
<section class="hero reveal">
|
||||
<div class="hero__text" data-animate>
|
||||
<span class="hero__eyebrow">ContextWizard · 法的情報</span>
|
||||
<h1 class="hero__title">特定商取引法に基づく表記</h1>
|
||||
<p class="hero__lead">
|
||||
ContextWizard Chrome拡張機能の有料アップグレードに関する、
|
||||
特定商取引法に基づく販売業者情報および取引条件の表示です。
|
||||
</p>
|
||||
<div class="hero__chips">
|
||||
<span class="hero-chip">日本国内向け</span>
|
||||
<span class="hero-chip">安全なカード決済</span>
|
||||
<span class="hero-chip">買い切りプラン</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero__media" data-animate>
|
||||
<div class="hero__orb"></div>
|
||||
<div class="hero__device">
|
||||
<h4>通信販売に関する表示事項</h4>
|
||||
<p>
|
||||
お客様に安心してお取引いただくため、販売条件・返品ポリシー等を明記しています。
|
||||
</p>
|
||||
<div class="hero__chips" style="margin-top: 1.5rem;">
|
||||
<span class="hero-chip">明瞭な価格表示</span>
|
||||
<span class="hero-chip">即時利用可能</span>
|
||||
<span class="hero-chip">安心サポート</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="alert alert-info d-flex align-items-center" role="alert" style="margin-top: 24px;">
|
||||
<i class="bx bx-calendar bx-sm me-2"></i>
|
||||
<div>
|
||||
<strong>最終更新日:</strong>2025年12月29日
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<article class="tokushoho-content" style="margin-top: 24px;">
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">販売業者情報</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>販売業者</th>
|
||||
<td>amiPro合同会社 (法 人 番 号 1 0 1 1 0 0 3 0 1 6 4 0 3)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>運営責任者</th>
|
||||
<td>杜 慶捷</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>所在地</th>
|
||||
<td>〒150-0001<br>東京都渋谷区神宮前六丁目23番4号桑野ビル2階</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>電話番号</th>
|
||||
<td>03-6869-2796<br><small class="text-muted">(受付時間:平日 10:00〜18:00)</small></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>メールアドレス</th>
|
||||
<td><a href="mailto:support@amipro.me">support@amipro.me</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">商品・料金について</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>商品名</th>
|
||||
<td>ContextWizard Pro アップグレード</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>販売価格</th>
|
||||
<td>500円(税込、買い切り型)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>商品代金以外の必要料金</th>
|
||||
<td>なし</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">お支払いについて</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>支払方法</th>
|
||||
<td>クレジットカード(Visa / Mastercard / JCB / American Express)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>支払時期</th>
|
||||
<td>購入時即時決済</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">商品の引渡しについて</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>引渡時期</th>
|
||||
<td>決済完了後即時(拡張機能内でPro機能が自動有効化)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>引渡方法</th>
|
||||
<td>オンラインによるデジタル提供(物理配送なし)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">返品・キャンセルについて</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>返品・キャンセル</th>
|
||||
<td>本商品はデジタルコンテンツの性質上、原則として購入後の返品・キャンセル・返金はお受けできません。ただし、技術的な問題により正常に動作しない場合、サポート(<a href="mailto:support@amipro.me">support@amipro.me</a>)までお問い合わせください。個別に対応いたします。</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-5 reveal" data-animate>
|
||||
<div class="card-header">
|
||||
<h2 class="card-title" style="margin: 0;">動作環境</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>動作環境</th>
|
||||
<td>Google Chrome最新版(Windows / macOS / Linux対応)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</article>
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
|
||||
<div class="content-backdrop fade"></div>
|
||||
</div>
|
||||
<!-- Content wrapper -->
|
||||
</div>
|
||||
<!-- / Layout page -->
|
||||
</div>
|
||||
<!-- / Layout container -->
|
||||
</div>
|
||||
<!-- / Layout wrapper -->
|
||||
|
||||
<!-- Overlay -->
|
||||
<div class="layout-overlay layout-menu-toggle"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,802 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html
|
||||
lang="en-US"
|
||||
class="light-style"
|
||||
>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title>ContextWizard | AI Chat Backup & Search - Local-First Privacy | amiPro</title>
|
||||
<link rel="canonical" href="https://amipro.me/contextwizard_top.html" />
|
||||
<link rel="alternate" hreflang="en" href="https://amipro.me/contextwizard_top.html" />
|
||||
<link rel="alternate" hreflang="ja" href="https://amipro.me/contextwizard_top.html" />
|
||||
<link rel="alternate" hreflang="x-default" href="https://amipro.me/contextwizard_top.html" />
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
<script>
|
||||
globalThis.dataLayer = globalThis.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="ContextWizard automatically captures and organizes AI conversations across ChatGPT, Claude, Gemini, Perplexity, and more. Local-first encryption, full-text search, zero configuration. Free Chrome and Edge extension by amiPro." />
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="ContextWizard | AI Chat Backup & Search - Local-First Privacy" />
|
||||
<meta property="og:description" content="Capture, search, and organize AI conversations across 10+ platforms. Local-first encryption, zero configuration." />
|
||||
<meta property="og:url" content="https://amipro.me/contextwizard_top.html" />
|
||||
<meta property="og:site_name" content="amiPro" />
|
||||
<meta property="og:image" content="https://amipro.me/contextwizard-files/screen-platforms-640-400.jpg" />
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="ContextWizard | AI Chat Backup & Search" />
|
||||
<meta name="twitter:description" content="Capture, search, and organize AI conversations across 10+ platforms with local-first encryption." />
|
||||
<meta name="twitter:image" content="https://amipro.me/contextwizard-files/screen-platforms-640-400.jpg" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- Icons. Uncomment required icon fonts -->
|
||||
<link rel="stylesheet" href="files/boxicons.css?v=20230405" />
|
||||
|
||||
<!-- Core CSS -->
|
||||
<link rel="stylesheet" href="files/core.css" class="template-customizer-core-css" />
|
||||
<link rel="stylesheet" href="files/theme-default.css" class="template-customizer-theme-css" />
|
||||
<link rel="stylesheet" href="files/demo.css" />
|
||||
<link rel="stylesheet" href="files/modern.css" />
|
||||
|
||||
<!-- Vendors CSS -->
|
||||
<link rel="stylesheet" href="files/perfect-scrollbar.css" />
|
||||
|
||||
<!-- Helpers -->
|
||||
<script src="files/helpers.js"></script>
|
||||
|
||||
<style>
|
||||
body {
|
||||
color: var(--text-bright, #f8fafc);
|
||||
background: radial-gradient(circle at top, #0f172a, #040b1f);
|
||||
background-color: #040b1f;
|
||||
}
|
||||
|
||||
.hero__text .hero__title {
|
||||
font-size: clamp(2rem, 4vw, 3.25rem);
|
||||
color: var(--text-bright, #f8fafc);
|
||||
}
|
||||
|
||||
.hero__text .hero__lead {
|
||||
max-width: 560px;
|
||||
color: rgba(248, 250, 252, 0.85);
|
||||
}
|
||||
|
||||
.hero__badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
padding: 0.25rem 0.8rem;
|
||||
border-radius: 999px;
|
||||
background: rgba(248, 250, 252, 0.18);
|
||||
border: 1px solid rgba(248, 250, 252, 0.3);
|
||||
color: var(--text-bright, #f8fafc);
|
||||
font-size: 0.85rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.hero__media img {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-radius: 1.25rem;
|
||||
box-shadow: 0 20px 60px rgba(15, 23, 42, 0.18);
|
||||
}
|
||||
|
||||
.section-heading {
|
||||
margin: 0 0 0.5rem;
|
||||
font-weight: 600;
|
||||
color: var(--text-bright, #f8fafc);
|
||||
}
|
||||
|
||||
.section-lead {
|
||||
color: var(--text-muted, #cbd5f5);
|
||||
max-width: 720px;
|
||||
}
|
||||
|
||||
.feature-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
||||
gap: 1.5rem;
|
||||
}
|
||||
|
||||
.feature-card {
|
||||
border: none;
|
||||
border-radius: 1rem;
|
||||
box-shadow: 0 16px 50px rgba(15, 23, 42, 0.08);
|
||||
transition: transform 200ms ease, box-shadow 200ms ease;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
color: #0f172a;
|
||||
}
|
||||
|
||||
.feature-card:hover {
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 24px 55px rgba(15, 23, 42, 0.12);
|
||||
}
|
||||
|
||||
.feature-icon {
|
||||
display: inline-flex;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 16px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background: #eef2ff;
|
||||
color: #4338ca;
|
||||
font-size: 1.5rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.feature-card ul {
|
||||
padding-left: 1rem;
|
||||
margin-bottom: 0;
|
||||
color: #334155;
|
||||
}
|
||||
|
||||
.checklist {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.checklist li {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
color: var(--text-bright, #f8fafc);
|
||||
}
|
||||
|
||||
.checklist li i {
|
||||
color: #16a34a;
|
||||
}
|
||||
|
||||
.data-callout {
|
||||
border: 1px solid rgba(15, 23, 42, 0.08);
|
||||
border-radius: 1rem;
|
||||
padding: 1.5rem;
|
||||
background: #ffffff;
|
||||
box-shadow: inset 0 0 0 1px rgba(99, 102, 241, 0.1);
|
||||
color: #0f172a;
|
||||
}
|
||||
|
||||
.card {
|
||||
color: #0f172a;
|
||||
background-color: rgba(255, 255, 255, 0.95);
|
||||
}
|
||||
|
||||
.card .checklist li,
|
||||
.data-callout .checklist li {
|
||||
color: #0f172a;
|
||||
}
|
||||
|
||||
.pay-attention {
|
||||
border-left: 4px solid #f97316;
|
||||
background: #fff7ed;
|
||||
color: #7c2d12;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How to copy a long ChatGPT thread into Claude without formatting issues?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "To copy a long ChatGPT thread into Claude without markdown or UI formatting clutter, use ContextWizard's context copy feature. It automatically strips out platform-specific UI artifacts, extracts clean raw text transcripts from ChatGPT, and allows one-step copying, exporting, or transferring of full conversation contexts into Claude, Manus, Gemini, or other assistants."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "What is the best way to search through multiple AI platform histories at once?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "The most efficient way to search through multiple AI platform histories at once is by using a local-first browser tool like ContextWizard. It builds a unified local index that allows full-text search across titles, summaries, and message bodies across 10+ major platforms including ChatGPT, Claude, Gemini, Grok, DeepSeek, and Perplexity simultaneously with granular platform filters."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How to build a local knowledge base from AI chats safely?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "ContextWizard turns your daily browsing history into a secure, searchable local text database. By capturing real-time conversations using platform-specific selectors, it aggregates scattered insights into a unified workspace on your PC, enabling power users to build an offline second brain from their AI interactions."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How do I keep track of important conversations across different AI models?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "ContextWizard's cross-platform bookmark feature lets you save key moments across ChatGPT, Claude, and Gemini in a single place. It supports organizing bookmarks into custom groups with full instant-undo support, making it easy to jump back to any bookmarked conversation in its original web context with one click."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How can I safely reuse prompts without exposing sensitive data?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "The built-in Prompt Editor in ContextWizard allows you to manage reusable prompt templates while safeguarding your privacy through auto-redaction. You can define custom redaction rules that automatically replace sensitive information such as API keys, passwords, and private tokens with placeholders before sending the prompt to any AI platform."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "SoftwareApplication",
|
||||
"name": "ContextWizard",
|
||||
"applicationCategory": "BrowserApplication",
|
||||
"operatingSystem": "Chrome, Edge",
|
||||
"description": "Local-first browser extension that captures, organizes, and encrypts AI conversations across 10+ platforms including ChatGPT, Claude, Gemini, and Perplexity.",
|
||||
"offers": {
|
||||
"@type": "Offer",
|
||||
"price": "0",
|
||||
"priceCurrency": "USD"
|
||||
},
|
||||
"author": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro, LLC",
|
||||
"url": "https://amipro.me"
|
||||
},
|
||||
"installUrl": "https://chromewebstore.google.com/detail/contextwizard/lmhnmmedgmnfggecdalkancllnekofnb",
|
||||
"featureList": "Multi-platform AI chat capture, Full-text search, Local-first encryption, JSON export/import, 12-language UI"
|
||||
}
|
||||
</script>
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "ItemList",
|
||||
"itemListElement": [
|
||||
{
|
||||
"@type": "VideoObject",
|
||||
"@id": "https://youtu.be/_XzSm3txFkg",
|
||||
"name": "Cross-Platform Bookmarks Demo - ContextWizard",
|
||||
"description": "Save key moments across ChatGPT, Claude, and Gemini in one place using ContextWizard's cross-platform bookmark feature. Organize into custom groups and jump back with one click.",
|
||||
"thumbnailUrl": "https://img.youtube.com/vi/_XzSm3txFkg/maxresdefault.jpg",
|
||||
"contentUrl": "https://www.youtube.com/watch?v=_XzSm3txFkg",
|
||||
"embedUrl": "https://www.youtube.com/embed/_XzSm3txFkg",
|
||||
"uploadDate": "2025-01-01",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro",
|
||||
"url": "https://amipro.me"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "VideoObject",
|
||||
"@id": "https://youtu.be/lYbXXWZZMJ0",
|
||||
"name": "Page Context Copy Demo - ContextWizard",
|
||||
"description": "Copy page context from any website and seamlessly use it across your AI platforms with ContextWizard.",
|
||||
"thumbnailUrl": "https://img.youtube.com/vi/lYbXXWZZMJ0/maxresdefault.jpg",
|
||||
"contentUrl": "https://www.youtube.com/watch?v=lYbXXWZZMJ0",
|
||||
"embedUrl": "https://www.youtube.com/embed/lYbXXWZZMJ0",
|
||||
"uploadDate": "2025-01-01",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro",
|
||||
"url": "https://amipro.me"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "VideoObject",
|
||||
"@id": "https://youtu.be/UDKbb1h-NMA",
|
||||
"name": "Cross-Platform Thread Transfer Demo - ContextWizard",
|
||||
"description": "Stop losing formats when shifting from ChatGPT to Claude. ContextWizard transfers long threads locally in 1 click.",
|
||||
"thumbnailUrl": "https://img.youtube.com/vi/UDKbb1h-NMA/maxresdefault.jpg",
|
||||
"contentUrl": "https://www.youtube.com/watch?v=UDKbb1h-NMA",
|
||||
"embedUrl": "https://www.youtube.com/embed/UDKbb1h-NMA",
|
||||
"uploadDate": "2025-01-01",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro",
|
||||
"url": "https://amipro.me"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!--! Template customizer & Theme config files MUST be included after core stylesheets and helpers.js in the <head> section -->
|
||||
<script src="files/config.js"></script>
|
||||
|
||||
<script defer src="files/jquery.js"></script>
|
||||
<script defer src="files/popper.js"></script>
|
||||
<script defer src="files/bootstrap.js"></script>
|
||||
<script defer src="files/perfect-scrollbar.js"></script>
|
||||
<script defer src="files/menu.js"></script>
|
||||
<script defer src="files/main.js"></script>
|
||||
|
||||
<script defer src="files/ua-parser.js"></script>
|
||||
|
||||
<script defer src="files/amipro_utils.js?v=20230401402"></script>
|
||||
|
||||
<script>
|
||||
const i18n_messages = new Map();
|
||||
let lang_map = new Map();
|
||||
lang_map.set('en-US', 'amiPro - Trustworthy passkey & privacy tooling');
|
||||
lang_map.set('zh-CN', 'amiPro - 值得信赖的 Passkey 与隐私工具');
|
||||
lang_map.set('ja', 'amiPro - 信頼できるパスキーとプライバシーツール');
|
||||
i18n_messages.set('label_welcome', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Management Portal');
|
||||
lang_map.set('zh-CN', '管理门户');
|
||||
lang_map.set('ja', '管理ポータル');
|
||||
i18n_messages.set('label_portal', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Cross-Platform Bookmarks');
|
||||
lang_map.set('zh-CN', '跨平台书签');
|
||||
lang_map.set('ja', 'クロスプラットフォームブックマーク');
|
||||
i18n_messages.set('feature_bm_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Save key moments across ChatGPT, Claude, and Gemini in one place.');
|
||||
lang_map.set('zh-CN', '在一个地方保存 ChatGPT、Claude、Gemini 的关键对话。');
|
||||
lang_map.set('ja', 'ChatGPT、Claude、Gemini の重要な会話を一箇所に保存します。');
|
||||
i18n_messages.set('feature_bm_1', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Organize bookmarks into custom groups with instant-undo support.');
|
||||
lang_map.set('zh-CN', '将书签整理到自定义分组,支持即时撤销。');
|
||||
lang_map.set('ja', 'ブックマークをカスタムグループに整理、インスタントアンドゥ対応。');
|
||||
i18n_messages.set('feature_bm_2', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Jump back to any bookmarked conversation in its original context.');
|
||||
lang_map.set('zh-CN', '一键跳回任何已书签的对话原始页面。');
|
||||
lang_map.set('ja', 'ブックマークした会話を元のコンテキストで開きます。');
|
||||
i18n_messages.set('feature_bm_3', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Prompt Editor & Privacy');
|
||||
lang_map.set('zh-CN', '提示词编辑与隐私保护');
|
||||
lang_map.set('ja', 'プロンプトエディターとプライバシー');
|
||||
i18n_messages.set('feature_pe_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Manage reusable prompt templates with the built-in Prompt Editor.');
|
||||
lang_map.set('zh-CN', '使用内置的提示词编辑器管理可复用的模板。');
|
||||
lang_map.set('ja', '内蔵プロンプトエディターで再利用可能なテンプレートを管理。');
|
||||
i18n_messages.set('feature_pe_1', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Auto-redact sensitive info (API keys, passwords, tokens) before sending.');
|
||||
lang_map.set('zh-CN', '发送前自动脱敏 API 密钥、密码、令牌等敏感信息。');
|
||||
lang_map.set('ja', '送信前にAPIキーやパスワードなどの機密情報を自動秘匿化。');
|
||||
i18n_messages.set('feature_pe_2', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Define custom redaction rules to safeguard proprietary data.');
|
||||
lang_map.set('zh-CN', '定义自定义脱敏规则保护专有数据。');
|
||||
lang_map.set('ja', 'カスタム秘匿化ルールで機密データを保護。');
|
||||
i18n_messages.set('feature_pe_3', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Cross-Platform Bookmarks Demo');
|
||||
lang_map.set('zh-CN', '跨平台书签演示');
|
||||
lang_map.set('ja', 'クロスプラットフォームブックマークデモ');
|
||||
i18n_messages.set('video_bm_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'See how ContextWizard saves key moments across ChatGPT, Claude, and Gemini. Organize bookmarks into custom groups and jump back with one click.');
|
||||
lang_map.set('zh-CN', '了解 ContextWizard 如何在 ChatGPT、Claude、Gemini 间保存关键时刻。将书签整理到自定义分组,一键跳回。');
|
||||
lang_map.set('ja', 'ContextWizardがChatGPT、Claude、Gemini間で重要な会話を保存する方法をご覧ください。ブックマークをカスタムグループに整理し、ワンクリックで戻ります。');
|
||||
i18n_messages.set('video_bm_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Watch Bookmark Demo on YouTube →');
|
||||
lang_map.set('zh-CN', '在 YouTube 上观看书签演示 →');
|
||||
lang_map.set('ja', 'YouTubeでブックマークデモを見る →');
|
||||
i18n_messages.set('video_bm_link', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Page Context Copy Demo');
|
||||
lang_map.set('zh-CN', '页面上下文复制演示');
|
||||
lang_map.set('ja', 'ページコンテキストコピーデモ');
|
||||
i18n_messages.set('video_pcc_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Learn how to copy page context from any website and seamlessly use it across your AI platforms with ContextWizard.');
|
||||
lang_map.set('zh-CN', '了解如何从任意网站复制页面上下文,并在 AI 平台间无缝使用。');
|
||||
lang_map.set('ja', '任意のWebサイトからページコンテキストをコピーし、AIプラットフォーム間でシームレスに使用する方法をご紹介します。');
|
||||
i18n_messages.set('video_pcc_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Watch Page Context Demo on YouTube →');
|
||||
lang_map.set('zh-CN', '在 YouTube 上观看页面上下文演示 →');
|
||||
lang_map.set('ja', 'YouTubeでページコンテキストデモを見る →');
|
||||
i18n_messages.set('video_pcc_link', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Cross-Platform Thread Transfer Demo');
|
||||
lang_map.set('zh-CN', '跨平台对话传输演示');
|
||||
lang_map.set('ja', 'クロスプラットフォームスレッド転送デモ');
|
||||
i18n_messages.set('video_act_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Stop losing formats when shifting from ChatGPT to Claude. ContextWizard transfers long threads locally in 1 click.');
|
||||
lang_map.set('zh-CN', '不再在从 ChatGPT 切换到 Claude 时丢失格式。ContextWizard 一键本地传输长对话。');
|
||||
lang_map.set('ja', 'ChatGPTからClaudeに移行する際のフォーマット損失を解消。ContextWizardが1クリックで長いスレッドをローカル転送。');
|
||||
i18n_messages.set('video_act_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Watch 5-sec Workflow Demo on YouTube →');
|
||||
lang_map.set('zh-CN', '在 YouTube 上观看 5 秒工作流演示 →');
|
||||
lang_map.set('ja', 'YouTubeで5秒ワークフローデモを見る →');
|
||||
i18n_messages.set('video_act_link', lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages);
|
||||
initRevealAnimations();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Layout wrapper -->
|
||||
<div class="layout-wrapper layout-content-navbar">
|
||||
<div class="layout-container">
|
||||
<!-- Layout container -->
|
||||
<div class="layout-page">
|
||||
<!-- Navbar -->
|
||||
|
||||
|
||||
|
||||
<!-- / Navbar -->
|
||||
|
||||
<!-- Content wrapper -->
|
||||
<div class="content-wrapper">
|
||||
<!-- Content -->
|
||||
<div style="margin: 24px;">
|
||||
<section class="hero reveal">
|
||||
<div class="hero__text" data-animate>
|
||||
<span class="hero__badge"><i class="bx bx-bot"></i> ContextWizard</span>
|
||||
<h1 class="hero__title">ContextWizard</h1>
|
||||
<p style="font-size: 1.15rem; font-weight: 500; color: var(--text-bright, #f8fafc); line-height: 1.5; margin-bottom: 0.75rem;">The universal context layer for your AI chats. Automatically capture, search, and transfer knowledge across platforms.</p>
|
||||
<p class="hero__lead">
|
||||
Harness each assistant's strengths, one-click backup or migrate every thread, and start immediately with zero configuration.
|
||||
</p>
|
||||
<ul class="checklist" style="margin-top: 1.25rem;">
|
||||
<li><i class="bx bx-check-circle"></i>All your data never leaves your PC</li>
|
||||
<li><i class="bx bx-check-circle"></i>No API keys required</li>
|
||||
<li><i class="bx bx-check-circle"></i>Automatic capture across your favorite AI chat platforms</li>
|
||||
<li><i class="bx bx-check-circle"></i>Search, filter, and relaunch chats instantly</li>
|
||||
</ul>
|
||||
<div style="margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 1rem;">
|
||||
<a
|
||||
href="https://chromewebstore.google.com/detail/contextwizard/lmhnmmedgmnfggecdalkancllnekofnb"
|
||||
class="btn btn-success"
|
||||
style="min-width: 200px;"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>
|
||||
<i class="bx bxl-chrome me-1"></i>Install from Chrome Store
|
||||
</a>
|
||||
<a
|
||||
href="https://microsoftedge.microsoft.com/addons/detail/contextwizard/nknoacgaapoeboehlgelolgbifgcimli"
|
||||
class="btn btn-primary"
|
||||
style="min-width: 200px;"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
>
|
||||
<i class="bx bx-download me-1"></i>Install from Edge store
|
||||
</a>
|
||||
<a href="https://www.youtube.com/watch?v=UDKbb1h-NMA" class="btn btn-outline-primary" style="min-width: 200px;" target="_blank">
|
||||
<i class="bx bx-play-circle me-1"></i>Watch Video
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero__media" data-animate>
|
||||
<div class="hero__orb"></div>
|
||||
<img src="contextwizard-files/screen-platforms-640-400.jpg" alt="ContextWizard platform overview screenshot" loading="lazy" />
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="alert alert-success data-callout reveal" role="alert" data-animate style="margin-top: 24px;">
|
||||
<div style="display: flex; gap: 0.75rem; align-items: flex-start;">
|
||||
<i class="bx bx-lock-alt bx-sm me-2" style="flex-shrink: 0; margin-top: 0.15rem;"></i>
|
||||
<div>
|
||||
<strong>Local-First & Privacy-Centric Architecture</strong>
|
||||
<ul style="margin: 0.5rem 0 0; padding-left: 1.25rem;">
|
||||
<li><strong>Zero Cloud Uploads:</strong> All captured AI chat logs, transcripts, and custom prompt templates are fully encrypted and saved strictly inside your browser's local storage (<code>chrome.storage.local</code>).</li>
|
||||
<li><strong>No Cloud Account & No API Keys Required:</strong> ContextWizard runs entirely out of the box via native DOM observation. It does not require any third-party registration or OpenAI/Anthropic/DeepSeek API keys.</li>
|
||||
<li><strong>100% GDPR & Privacy Compliant:</strong> Your confidential prompts, proprietary source code, and business context remain completely offline and never touch external synchronization servers.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="reveal" data-animate style="margin-top: 40px;">
|
||||
<h2 class="section-heading">Why ContextWizard?</h2>
|
||||
<p class="section-lead">
|
||||
ContextWizard automatically captures and organizes your conversations across multiple AI assistants, making every insight searchable, portable, and ready to revisit.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<div class="feature-grid" style="margin-top: 24px;">
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">🤖</div>
|
||||
<h3 class="card-title">Multi-Platform Support</h3>
|
||||
<ul>
|
||||
<li><strong>10 built-in platforms</strong>: ChatGPT, Claude, Gemini, Copilot, Perplexity, HuggingChat, Poe, Grok, DeepSeek, Qwen.</li>
|
||||
<li><strong>Custom platforms</strong>: Add any AI chat site via URL patterns.</li>
|
||||
<li><strong>Automatic detection</strong> as soon as you land on supported hosts.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">💾</div>
|
||||
<h3 class="card-title">Smart Recording</h3>
|
||||
<ul>
|
||||
<li>Real-time capture using MutationObserver.</li>
|
||||
<li>Platform-specific selectors for accurate transcripts.</li>
|
||||
<li>Debounced saves, visual indicator, and URL-aware logic for clean history.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">🔍</div>
|
||||
<h3 class="card-title">Powerful Search</h3>
|
||||
<ul>
|
||||
<li>Full-text search across titles, summaries, and message bodies.</li>
|
||||
<li>Platform filters plus smart ranking by recency and relevance.</li>
|
||||
<li>Jump back into any conversation with one click.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">📊</div>
|
||||
<h3 class="card-title">Conversation Management</h3>
|
||||
<ul>
|
||||
<li>Unified list for every assistant you use.</li>
|
||||
<li>Quick access, deletion, export, and import workflows.</li>
|
||||
<li>Local storage ensures nothing syncs beyond your machine.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">🌐</div>
|
||||
<h3 class="card-title">Internationalization</h3>
|
||||
<ul>
|
||||
<li>Localized UI across 12 languages.</li>
|
||||
<li>Automatic browser-language detection.</li>
|
||||
<li>Fast language switching with persistent preferences.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">⚙️</div>
|
||||
<h3 class="card-title">Customization</h3>
|
||||
<ul>
|
||||
<li>Enable/disable platforms individually.</li>
|
||||
<li>Add custom URL patterns for new AI sites.</li>
|
||||
<li>Manage data with stats, exports, imports, and clears.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">🔖</div>
|
||||
<h3 class="card-title" id="feature_bm_title">Cross-Platform Bookmarks</h3>
|
||||
<ul>
|
||||
<li id="feature_bm_1">Save key moments across ChatGPT, Claude, and Gemini in one place.</li>
|
||||
<li id="feature_bm_2">Organize bookmarks into custom groups with instant-undo support.</li>
|
||||
<li id="feature_bm_3">Jump back to any bookmarked conversation in its original context.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">✏️</div>
|
||||
<h3 class="card-title" id="feature_pe_title">Prompt Editor & Privacy</h3>
|
||||
<ul>
|
||||
<li id="feature_pe_1">Manage reusable prompt templates with the built-in Prompt Editor.</li>
|
||||
<li id="feature_pe_2">Auto-redact sensitive info (API keys, passwords, tokens) before sending.</li>
|
||||
<li id="feature_pe_3">Define custom redaction rules to safeguard proprietary data.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
|
||||
<section class="reveal" data-animate style="margin-top: 40px;">
|
||||
<h2 class="section-heading" data-i18n="video_section_title">Watch in Action</h2>
|
||||
<p class="section-lead" data-i18n="video_section_lead">Quick video demonstrations of ContextWizard's key features.</p>
|
||||
</section>
|
||||
|
||||
<div class="feature-grid" style="margin-top: 24px;">
|
||||
|
||||
<div id="bookmark-demo" class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">▶️</div>
|
||||
<h3 class="card-title"><span id="video_bm_title">Cross-Platform Bookmarks Demo</span></h3>
|
||||
<p><span id="video_bm_desc">See how ContextWizard saves key moments across ChatGPT, Claude, and Gemini. Organize bookmarks into custom groups and jump back with one click.</span></p>
|
||||
<a href="https://youtu.be/_XzSm3txFkg" target="_blank" id="video_bm_link" style="color: #2563eb; text-decoration: underline; display: inline-flex; align-items: center; gap: 0.35rem;">Watch Bookmark Demo on YouTube →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="page-context-demo" class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">▶️</div>
|
||||
<h3 class="card-title"><span id="video_pcc_title">Page Context Copy Demo</span></h3>
|
||||
<p><span id="video_pcc_desc">Learn how to copy page context from any website and seamlessly use it across your AI platforms with ContextWizard.</span></p>
|
||||
<a href="https://youtu.be/lYbXXWZZMJ0" target="_blank" id="video_pcc_link" style="color: #2563eb; text-decoration: underline; display: inline-flex; align-items: center; gap: 0.35rem;">Watch Page Context Demo on YouTube →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="thread-transfer-demo" class="card feature-card reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<div class="feature-icon">▶️</div>
|
||||
<h3 class="card-title"><span id="video_act_title">Cross-Platform Thread Transfer Demo</span></h3>
|
||||
<p><span id="video_act_desc">Stop losing formats when shifting from ChatGPT to Claude. ContextWizard transfers long threads locally in 1 click.</span></p>
|
||||
<a href="https://youtu.be/UDKbb1h-NMA" target="_blank" id="video_act_link" style="color: #2563eb; text-decoration: underline; display: inline-flex; align-items: center; gap: 0.35rem;">Watch 5-sec Workflow Demo on YouTube →</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<hr class="my-1" />
|
||||
|
||||
<section class="card mb-4 reveal" data-animate>
|
||||
<div class="row g-0 align-items-center">
|
||||
<div class="col-md-6">
|
||||
<div class="card-body">
|
||||
<h3 class="card-title" style="margin-bottom: 1rem;">Stay coordinated across assistants</h3>
|
||||
<p>
|
||||
Bring order to the chaos of juggling multiple AI assistants. ContextWizard keeps a unified list, lets you filter by platform, and opens any saved thread in-place with a single click.
|
||||
</p>
|
||||
<ul class="checklist" style="margin-top: 1rem;">
|
||||
<li><i class="bx bx-check-circle"></i>Tag and color-code platforms for quick scanning.</li>
|
||||
<li><i class="bx bx-check-circle"></i>Use summaries to remember why a chat mattered.</li>
|
||||
<li><i class="bx bx-check-circle"></i>Export/import archives for backups or new machines.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card-body">
|
||||
<img src="contextwizard-files/screen-search-640-400.jpg" alt="ContextWizard search UI" class="img-fluid" loading="lazy" style="border-radius: 1rem; box-shadow: 0 20px 60px rgba(15, 23, 42, 0.15);" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="alert pay-attention reveal" role="alert" data-animate style="margin-top: 24px;">
|
||||
<i class="bx bx-info-circle bx-sm me-2"></i>
|
||||
<strong>Pay attention:</strong> Do <em>not</em> delete your conversations on AI platforms if you still need them. ContextWizard stores the main content, not attachments or full raw data.
|
||||
</div>
|
||||
|
||||
<section class="card mb-5 mt-4 reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<h3 class="card-title" style="margin-bottom: 1rem;">Ready in minutes</h3>
|
||||
<p>
|
||||
Install the extension, pick which platforms to observe, and ContextWizard starts capturing right away—no API keys, no cloud accounts, zero configuration beyond toggling the platforms you care about.
|
||||
</p>
|
||||
<div class="checklist" style="margin-top: 1rem;">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<ul class="checklist">
|
||||
<li><i class="bx bx-check-circle"></i>Enable/disable per platform anytime.</li>
|
||||
<li><i class="bx bx-check-circle"></i>Toggle recording indicator visibility.</li>
|
||||
<li><i class="bx bx-check-circle"></i>Switch languages instantly.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<ul class="checklist">
|
||||
<li><i class="bx bx-check-circle"></i>Export JSON snapshots for backups.</li>
|
||||
<li><i class="bx bx-check-circle"></i>Import archives when moving machines.</li>
|
||||
<li><i class="bx bx-check-circle"></i>Clear everything with one tap if needed.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="card mb-5 reveal" data-animate>
|
||||
<div class="card-body">
|
||||
<h3 class="card-title" style="margin-bottom: 1.5rem;">Frequently Asked Questions</h3>
|
||||
|
||||
<div id="faq-thread-transfer" class="faq-item" style="margin-bottom: 1.5rem;">
|
||||
<h4 style="font-size: 1.1rem; margin-bottom: 0.5rem; color: #1e293b;">How to copy a long ChatGPT thread into Claude without formatting issues?</h4>
|
||||
<p style="margin-bottom: 0;"><strong>To copy a long ChatGPT thread into Claude without markdown or UI formatting clutter, use ContextWizard's context copy feature.</strong> It automatically strips out platform-specific UI artifacts, extracts clean raw text transcripts from ChatGPT, and allows one-step copying, exporting, or transferring of full conversation contexts into Claude, Manus, Gemini, or other assistants. <a href="#thread-transfer-demo" style="color: #2563eb; text-decoration: underline;">↑ Watch the demo</a></p>
|
||||
</div>
|
||||
|
||||
<div id="faq-page-context-copy" class="faq-item" style="margin-bottom: 1.5rem;">
|
||||
<h4 style="font-size: 1.1rem; margin-bottom: 0.5rem; color: #1e293b;">How do I copy page context and use it across AI platforms?</h4>
|
||||
<p style="margin-bottom: 0;"><strong>ContextWizard's page context copy feature lets you capture content from any webpage and seamlessly paste it into ChatGPT, Claude, Gemini, or other AI assistants.</strong> It strips out unnecessary UI clutter, preserves the meaningful text structure, and lets you transfer context in one click — no more manual copy-paste or formatting cleanup. <a href="#page-context-demo" style="color: #2563eb; text-decoration: underline;">↑ Watch the demo</a></p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item" style="margin-bottom: 1.5rem;">
|
||||
<h4 style="font-size: 1.1rem; margin-bottom: 0.5rem; color: #1e293b;">What is the best way to search through multiple AI platform histories at once?</h4>
|
||||
<p style="margin-bottom: 0;"><strong>The most efficient way to search through multiple AI platform histories at once is by using a local-first browser tool like ContextWizard.</strong> It builds a unified local index that allows full-text search across titles, summaries, and message bodies across 10+ major platforms (including ChatGPT, Claude, Gemini, Grok, DeepSeek, and Perplexity) simultaneously with granular platform filters.</p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item" style="margin-bottom: 1.5rem;">
|
||||
<h4 style="font-size: 1.1rem; margin-bottom: 0.5rem; color: #1e293b;">How to build a local knowledge base from AI chats safely?</h4>
|
||||
<p style="margin-bottom: 0;"><strong>ContextWizard turns your daily browsing history into a secure, searchable local text database.</strong> By capturing real-time conversations using platform-specific selectors, it aggregates scattered insights into a unified workspace on your PC, enabling power users to build an offline second brain from their AI interactions.</p>
|
||||
</div>
|
||||
|
||||
<div id="faq-cross-platform-bookmarks" class="faq-item" style="margin-bottom: 0;">
|
||||
<h4 style="font-size: 1.1rem; margin-bottom: 0.5rem; color: #1e293b;">How do I keep track of important conversations across different AI models?</h4>
|
||||
<p style="margin-bottom: 0;"><strong>ContextWizard's cross-platform bookmark feature lets you save key moments across ChatGPT, Claude, and Gemini in a single place.</strong> It supports organizing bookmarks into custom groups with full instant-undo support, making it easy to jump back to any bookmarked conversation in its original web context with one click. <a href="#bookmark-demo" style="color: #2563eb; text-decoration: underline;">↑ Watch the demo</a></p>
|
||||
</div>
|
||||
|
||||
<div class="faq-item" style="margin-bottom: 0; margin-top: 1.5rem;">
|
||||
<h4 style="font-size: 1.1rem; margin-bottom: 0.5rem; color: #1e293b;">How can I safely reuse prompts without exposing sensitive data?</h4>
|
||||
<p style="margin-bottom: 0;"><strong>The built-in Prompt Editor in ContextWizard allows you to manage reusable prompt templates while safeguarding your privacy through auto-redaction.</strong> You can define custom redaction rules that automatically replace sensitive information—such as API keys, passwords, and private tokens—with placeholders before sending the prompt to any AI platform.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="reveal" data-animate style="padding: 2rem 24px; border-top: 1px solid rgba(248, 250, 252, 0.1);">
|
||||
<div class="d-flex flex-wrap justify-content-center gap-4" style="font-size: 0.9rem;">
|
||||
<a href="contextwizard_privacy_policy.html" style="color: rgba(248, 250, 252, 0.7); text-decoration: none;">Privacy Policy</a>
|
||||
<a href="contextwizard_tokushoho.html" style="color: rgba(248, 250, 252, 0.7); text-decoration: none;">特定商取引法に基づく表記</a>
|
||||
<a href="mailto:support@amipro.me" style="color: rgba(248, 250, 252, 0.7); text-decoration: none;">Contact</a>
|
||||
</div>
|
||||
<p class="text-center mt-3" style="color: rgba(248, 250, 252, 0.5); font-size: 0.85rem; margin-bottom: 0;">
|
||||
© 2026 amiPro, LLC. All rights reserved.
|
||||
</p>
|
||||
</footer>
|
||||
<!-- / Footer -->
|
||||
|
||||
<div class="content-backdrop fade"></div>
|
||||
</div>
|
||||
<!-- Content wrapper -->
|
||||
</div>
|
||||
<!-- / Layout page -->
|
||||
</div>
|
||||
<!-- / Layout container -->
|
||||
</div>
|
||||
<!-- / Layout wrapper -->
|
||||
|
||||
<!-- Overlay -->
|
||||
<div class="layout-overlay layout-menu-toggle"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -55,7 +55,6 @@ emit_verify_urls() {
|
||||
cat <<'EOF'
|
||||
/
|
||||
/fido2_top.html
|
||||
/contextwizard_top.html
|
||||
/integration_api.html
|
||||
/passkey.html
|
||||
EOF
|
||||
@@ -86,7 +85,6 @@ verify_live_page() {
|
||||
|
||||
printf 'cd "%s"\n' "$REMOTE_DIR" > "$batch_file"
|
||||
emit_site_file_commands
|
||||
emit_directory_commands contextwizard-files
|
||||
emit_directory_commands files
|
||||
|
||||
echo "Deploying to $SFTP_USER@$SFTP_HOST:$REMOTE_DIR"
|
||||
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
# 快速部署 HTML 和配置文件
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
SFTP_USER="${SFTP_USER:-witmatec}"
|
||||
SFTP_HOST="${SFTP_HOST:-74.220.219.141}"
|
||||
REMOTE_DIR="${REMOTE_DIR:-/home1/witmatec/public_html/amipro}"
|
||||
|
||||
echo "Deploying HTML files to $SFTP_USER@$SFTP_HOST:$REMOTE_DIR"
|
||||
echo "You will be prompted for your password."
|
||||
|
||||
sftp "$SFTP_USER@$SFTP_HOST" << SFTP_COMMANDS
|
||||
cd $REMOTE_DIR
|
||||
mput *.html
|
||||
mput llms.txt
|
||||
mput sitemap.xml
|
||||
mput robots.txt
|
||||
put .htaccess
|
||||
bye
|
||||
SFTP_COMMANDS
|
||||
|
||||
echo "HTML files deployed. Run 'bash deploy-amipro.sh' for full deployment."
|
||||
+202
-61
@@ -93,301 +93,372 @@
|
||||
const i18n_messages = new Map();
|
||||
|
||||
var lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro - The easiest to integrate and manage Passkey cloud service");
|
||||
lang_map.set("en", "amiPro - The easiest to integrate and manage Passkey cloud service");
|
||||
lang_map.set("zh-CN", "amiPro - 最易集成、易管理的 Passkey 云服务");
|
||||
lang_map.set("ja", "amiPro - 最も簡単に統合・管理できるパスキー・クラウド・サービス");
|
||||
i18n_messages.set("label_welcome", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Management Portal");
|
||||
lang_map.set("en", "Management Portal");
|
||||
lang_map.set("zh-CN", "管理门户");
|
||||
lang_map.set("ja", "管理ポータル");
|
||||
i18n_messages.set("label_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact_cta", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "What is Passkey");
|
||||
lang_map.set("en", "What is Passkey");
|
||||
lang_map.set("zh-CN", "什么是Passkey");
|
||||
lang_map.set("ja", "パスキー(Passkey)とは");
|
||||
i18n_messages.set("title_what_passkey", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkeys replace passwords and provide faster, more accessible, and more secure website sign‑ins. Unlike passwords, passkeys are phishing‑resistant and more reliable. With support from major companies including Apple, Google, and NTT, 2023 marked the beginning of passkeys entering the consumer market.");
|
||||
lang_map.set("en", "Passkeys replace passwords and provide faster, more accessible, and more secure website sign‑ins. Unlike passwords, passkeys are phishing‑resistant and more reliable. With support from major companies including Apple, Google, and NTT, 2023 marked the beginning of passkeys entering the consumer market.");
|
||||
lang_map.set("zh-CN", "Passkey 取代密码,提供更快、更易用且更安全的网站登录。与密码不同,Passkey 稳定可靠并且可抵御网络钓鱼。在包括苹果、谷歌、NTT 等大型公司的支持下,2023 年成为 Passkey 进入消费者市场的元年。");
|
||||
lang_map.set("ja", "パスキーはパスワードを置き換え、より高速で、よりアクセスしやすく<br>より安全なウェブサイトのサインインを提供します。パスワードとは異なり、<br>常に堅牢でフィッシングに耐性があります。<br>Apple、Google、NTTなどの大手企業のサポートを受けて、<br>2023年はPasskeyを一般消費者市場に導入する年です。");
|
||||
i18n_messages.set("info_what_passkey", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey benefits");
|
||||
lang_map.set("en", "Passkey benefits");
|
||||
lang_map.set("zh-CN", "Passkey的优势");
|
||||
lang_map.set("ja", "パスキーのメリット");
|
||||
i18n_messages.set("title_passkey_merits", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkeys not only provide a more secure login method; they can also increase your website’s business value:<br>1. Faster sign‑in can <b>improve</b> conversion rates<br>2. No password resets can <b>reduce</b> support costs");
|
||||
lang_map.set("en", "Passkeys not only provide a more secure login method; they can also increase your website’s business value:<br>1. Faster sign‑in can <b>improve</b> conversion rates<br>2. No password resets can <b>reduce</b> support costs");
|
||||
lang_map.set("zh-CN", "Passkey 不仅提供更安全的登录方式,也能提升您网站的商业价值:<br>1、更快速的登录可<b>提高</b>转化率<br>2、无需找回密码可<b>降低</b>客服成本");
|
||||
lang_map.set("ja", "パスキーは安全なログイン方法を提供するだけでなく、<br>Webサイトのビジネス価値の向上にもつながります。<br>1. より高速なログインはコンバージョン率の<b>向上</b>に寄与<br>2. パスワード再設定が不要なためサポートコストの<b>削減</b>につながります。");
|
||||
i18n_messages.set("info_passkey_merits", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Merits");
|
||||
lang_map.set("en", "Merits");
|
||||
lang_map.set("zh-CN", "优势");
|
||||
lang_map.set("ja", "メリット");
|
||||
i18n_messages.set("label_merits", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Why amiPro: Standards compliance");
|
||||
lang_map.set("en", "Why amiPro: Standards compliance");
|
||||
lang_map.set("zh-CN", "amiPro 的优势:标准合规");
|
||||
lang_map.set("ja", "amiProの強み:規格準拠");
|
||||
i18n_messages.set("title_amipro_fido", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro is designed based on the FIDO standard and has passed the FIDO2 conformance test 100%.<br>From the browser to the SDK, everything aligns with the latest FIDO2 standard, making it safer and easier to maintain.<br>Meanwhile, amiPro provides extended features to enhance security and integration convenience.");
|
||||
lang_map.set("en", "amiPro is designed based on the FIDO standard and has passed the FIDO2 conformance test 100%.<br>From the browser to the SDK, everything aligns with the latest FIDO2 standard, making it safer and easier to maintain.<br>Meanwhile, amiPro provides extended features to enhance security and integration convenience.");
|
||||
lang_map.set("zh-CN", "amiPro基于FIDO标准设计,100%通过FIDO2兼容测试。<br>从浏览器到SDK全部统一至FIDO2最新标准,更安全更易维护。<br>同时提供扩展功能,增强安全性及集成便利性");
|
||||
lang_map.set("ja", "amiProはFIDO規格に基づいて設計され、FIDO2互換性テストを100%パスしています<br>ブラウザから SDK に至るまで、すべてが最新の FIDO2 標準に統一されており、より安全で保守が容易です。<br>同時に、amiProはセキュリティと統合の互換性を高めるための拡張機能を提供します。");
|
||||
i18n_messages.set("info_amipro_fido", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "FIDO conformance test");
|
||||
lang_map.set("en", "FIDO conformance test");
|
||||
lang_map.set("zh-CN", "FIDO兼容性测试");
|
||||
lang_map.set("ja", "FIDO準拠性テスト");
|
||||
i18n_messages.set("label_fido_video", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Why amiPro: Open source");
|
||||
lang_map.set("en", "Why amiPro: Open source");
|
||||
lang_map.set("zh-CN", "amiPro的优势:开源");
|
||||
lang_map.set("ja", "amiProの強み:オープンソース");
|
||||
i18n_messages.set("title_open_src", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro's core is completely open source, thus providing complete verifiability and security.<br>Not only the FIDO2 server, but also the iOS/Android SDK for App development are completely open source.");
|
||||
lang_map.set("en", "amiPro's core is completely open source, thus providing complete verifiability and security.<br>Not only the FIDO2 server, but also the iOS/Android SDK for App development are completely open source.");
|
||||
lang_map.set("zh-CN", "amiPro的核心完全永久开源,从而提供完全的可验证性和安全性。<br>不仅FIDO2服务器,App开发用iOS/Android SDK也完全开源。");
|
||||
lang_map.set("ja", "amiPro のコアは完全な検証性とセキュリティを提供します。<br>Web開発用JS SDKやアプリ開発用の iOS / Android SDK は完全にオープンソースです。");
|
||||
i18n_messages.set("info_open_src", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Open source project");
|
||||
lang_map.set("en", "Open source project");
|
||||
lang_map.set("zh-CN", "开源项目");
|
||||
lang_map.set("ja", "オープンソースプロジェクト");
|
||||
i18n_messages.set("label_open_src", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "How to integrate");
|
||||
lang_map.set("en", "How to integrate");
|
||||
lang_map.set("zh-CN", "集成方法");
|
||||
lang_map.set("ja", "導入方法");
|
||||
i18n_messages.set("title_howto", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro provides standards‑based interfaces and an easy‑to‑use JavaScript SDK for integration. From device registration and sign‑in to device reset management, everything can be implemented easily.<br>No need to modify your server backend—use front‑end JavaScript to integrate.<br>We also provide iOS/Android SDKs for app development.<br>Providing integration support (sales@amipro.me)");
|
||||
lang_map.set("en", "amiPro provides standards‑based interfaces and an easy‑to‑use JavaScript SDK for integration. From device registration and sign‑in to device reset management, everything can be implemented easily.<br>No need to modify your server backend—use front‑end JavaScript to integrate.<br>We also provide iOS/Android SDKs for app development.<br>Providing integration support (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "amiPro 提供基于标准的接口以及便于集成的 JavaScript SDK。从设备注册、登录到设备重置管理,都可以轻松实现。<br>无需修改您的服务器后端,仅使用前端 JavaScript 即可完成集成。<br>同时提供用于 App 开发的 iOS/Android SDK,便于集成。<br>提供导入支持(sales@amipro.me)");
|
||||
lang_map.set("ja", "amiProは、統合のための標準的なインターフェイスと便利なJavaScript SDKを提供します。<br>デバイスの登録、ログインからデバイスのリセット管理まで、すべて簡単に実装できます。<br>サーバーのバックグラウンドを変更する必要はありません、<br>フロントエンド JavaScript を使用するだけで統合を実現できます。<br>同時に、App 開発用の iOS / Android SDK も提供しています。 導入サポートが必要な場合は<br> sales@amipro.me へメールでご連絡ください。");
|
||||
i18n_messages.set("info_howto", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Integration Steps");
|
||||
lang_map.set("en", "Integration Steps");
|
||||
lang_map.set("zh-CN", "集成步骤");
|
||||
lang_map.set("ja", "導入手順");
|
||||
i18n_messages.set("label_integration", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Cost");
|
||||
lang_map.set("en", "Cost");
|
||||
lang_map.set("zh-CN", "费用");
|
||||
lang_map.set("ja", "費用");
|
||||
i18n_messages.set("title_howmuch", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro provides the highest cost performance billing model based on the number of <b>active users</b>. Regardless of the number of registered users, you only need to pay for per active user (users who log in at least once a month) per month or per authentication.<br>Provide discount plans for sites with a large number of active users.");
|
||||
lang_map.set("en", "amiPro provides the highest cost performance billing model based on the number of <b>active users</b>. Regardless of the number of registered users, you only need to pay for per active user (users who log in at least once a month) per month or per authentication.<br>Provide discount plans for sites with a large number of active users.");
|
||||
lang_map.set("zh-CN", "提供基于<b>活动用户数</b>的最高性价比的计费模式。与注册用户数无关,每月只需为每个活动用户(每月至少登录一次的用户)或者按认证次数支付费用。<br>对活动用户数较大的网站提供优惠方案。");
|
||||
lang_map.set("ja", "<b>アクティブユーザー数</b>に基づいた最高のコストパフォーマンスの課金モデルを提供します。<br>登録ユーザー数に関係なく、毎月アクティブユーザー(毎月最低1回ログインするユーザー)或いは認証利用数ごとのお支払いとなります。<br>割引プランもご用意しております。");
|
||||
i18n_messages.set("info_howmuch", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Three month free trial<br>(After free registration of the management portal, all functions are free to try for three months)<br>No credit card required.");
|
||||
lang_map.set("en", "Three month free trial<br>(After free registration of the management portal, all functions are free to try for three months)<br>No credit card required.");
|
||||
lang_map.set("zh-CN", "三个月免费试用<br>(免费注册管理门户后,所有功能免费试用三个月)<br> 无需信用卡");
|
||||
lang_map.set("ja", "3ヶ月間の無料トライアル<br>(管理ポータルの無料登録後、すべての機能を3ヶ月間無料でお試しいただけます)<br> クレジットカードは不要です。");
|
||||
i18n_messages.set("btn_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro LLC.");
|
||||
lang_map.set("en", "amiPro LLC.");
|
||||
lang_map.set("zh-CN", "amiPro LLC.");
|
||||
lang_map.set("ja", "amiPro合同会社");
|
||||
i18n_messages.set("company_name", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Established March 3, 2023");
|
||||
lang_map.set("en", "Established March 3, 2023");
|
||||
lang_map.set("zh-CN", "2023年3月3日成立");
|
||||
lang_map.set("ja", "2023年3月3日設立");
|
||||
i18n_messages.set("company_open", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "2F Kuwano Building, 6-23-4 Jingumae, Shibuya-ku, Tokyo 150-0001");
|
||||
lang_map.set("en", "2F Kuwano Building, 6-23-4 Jingumae, Shibuya-ku, Tokyo 150-0001");
|
||||
lang_map.set("zh-CN", "东京都涩谷区神宫前6-23-4桑野大厦2F 邮编 150-0001");
|
||||
lang_map.set("ja", "〒150-0001 東京都渋谷区神宮前六丁目23番4号 桑野ビル2階");
|
||||
i18n_messages.set("company_addr", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "More details");
|
||||
lang_map.set("en", "More details");
|
||||
lang_map.set("zh-CN", "更多详情");
|
||||
lang_map.set("ja", "詳細");
|
||||
i18n_messages.set("label_open_passkey", lang_map);
|
||||
|
||||
i18n_messages.set("top_msg", lang_map);
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "FIDO2: From $18.82 billion in 2024 to $60.34 billion in 2032");
|
||||
lang_map.set("en", "FIDO2: From $18.82 billion in 2024 to $60.34 billion in 2032");
|
||||
lang_map.set("zh-CN", "FIDO2:从 2024 年的 188.2 亿美元增至 2032 年的 603.4 亿美元");
|
||||
lang_map.set("ja", "FIDO2: 2024年の188.2億米ドルから2032年には603.4億米ドルへ");
|
||||
i18n_messages.set("top_msg", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey cloud platform");
|
||||
lang_map.set("en", "Passkey cloud platform");
|
||||
lang_map.set("ja", "パスキー・クラウド・プラットフォーム");
|
||||
i18n_messages.set("hero_eyebrow", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "FIDO2 journeys people want to finish");
|
||||
lang_map.set("en", "FIDO2 journeys people want to finish");
|
||||
lang_map.set("ja", "最後までスムーズに完了できるFIDO2体験");
|
||||
i18n_messages.set("hero_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Launch delightful, phishing-proof login experiences with a fully managed Passkey\nbackbone, open-source SDKs that drop into any stack in minutes.");
|
||||
lang_map.set("en", "Launch delightful, phishing-proof login experiences with a fully managed Passkey\nbackbone, open-source SDKs that drop into any stack in minutes.");
|
||||
lang_map.set("ja", "フルマネージドなPasskey基盤と、どんなスタックにも数分で組み込める\nオープンソースSDKで、心地よくフィッシング耐性のあるログイン体験を提供します。");
|
||||
i18n_messages.set("hero_lead", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "FIDO2 certified");
|
||||
lang_map.set("en", "FIDO2 certified");
|
||||
lang_map.set("ja", "FIDO2認証済み");
|
||||
i18n_messages.set("hero_chip_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Core server + Open source SDK");
|
||||
lang_map.set("en", "Core server + Open source SDK");
|
||||
lang_map.set("ja", "コアサーバー+オープンソースSDK");
|
||||
i18n_messages.set("hero_chip_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Device recovery flows");
|
||||
lang_map.set("en", "Device recovery flows");
|
||||
lang_map.set("ja", "デバイス復旧フロー");
|
||||
i18n_messages.set("hero_chip_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "FIDO certified");
|
||||
lang_map.set("en", "FIDO certified");
|
||||
lang_map.set("ja", "FIDO認証");
|
||||
i18n_messages.set("stat_label_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Fast onboarding");
|
||||
lang_map.set("en", "Fast onboarding");
|
||||
lang_map.set("ja", "迅速な導入");
|
||||
i18n_messages.set("stat_label_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Platforms");
|
||||
lang_map.set("en", "Platforms");
|
||||
lang_map.set("ja", "対応プラットフォーム");
|
||||
i18n_messages.set("stat_label_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey Ready");
|
||||
lang_map.set("en", "Passkey Ready");
|
||||
lang_map.set("ja", "Passkey対応");
|
||||
i18n_messages.set("device_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Secure, phishing-resistant, privacy-first verification that works on every device.");
|
||||
lang_map.set("en", "Secure, phishing-resistant, privacy-first verification that works on every device.");
|
||||
lang_map.set("ja", "あらゆるデバイスで動作する、フィッシング耐性・プライバシー重視の安全な検証。");
|
||||
i18n_messages.set("device_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Face / Touch");
|
||||
lang_map.set("en", "Face / Touch");
|
||||
lang_map.set("ja", "Face / Touch");
|
||||
i18n_messages.set("device_chip_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Security keys");
|
||||
lang_map.set("en", "Security keys");
|
||||
lang_map.set("ja", "セキュリティキー");
|
||||
i18n_messages.set("device_chip_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Recovery links");
|
||||
lang_map.set("en", "Recovery links");
|
||||
lang_map.set("ja", "復旧リンク");
|
||||
i18n_messages.set("device_chip_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Instant integration");
|
||||
lang_map.set("en", "Instant integration");
|
||||
lang_map.set("ja", "すぐに導入");
|
||||
i18n_messages.set("panel_title_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Add FIDO2 login with a few lines of JavaScript. No backend rewrites or new auth servers required.");
|
||||
lang_map.set("en", "Add FIDO2 login with a few lines of JavaScript. No backend rewrites or new auth servers required.");
|
||||
lang_map.set("ja", "数行のJavaScriptでFIDO2ログインを追加。バックエンド改修や新しい認証サーバーは不要です。");
|
||||
i18n_messages.set("panel_desc_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Device lifecycle");
|
||||
lang_map.set("en", "Device lifecycle");
|
||||
lang_map.set("ja", "デバイス管理");
|
||||
i18n_messages.set("panel_title_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Allow users to add, revoke, or recover devices with guided flows powered by amiPro APIs.");
|
||||
lang_map.set("en", "Allow users to add, revoke, or recover devices with guided flows powered by amiPro APIs.");
|
||||
lang_map.set("ja", "amiPro APIで、デバイスの追加・無効化・復旧をガイド付きフローで提供できます。");
|
||||
i18n_messages.set("panel_desc_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Operational visibility");
|
||||
lang_map.set("en", "Operational visibility");
|
||||
lang_map.set("ja", "運用の可視化");
|
||||
i18n_messages.set("panel_title_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Get analytics on adoption, fraud attempts, and top devices directly from the management portal.");
|
||||
lang_map.set("en", "Get analytics on adoption, fraud attempts, and top devices directly from the management portal.");
|
||||
lang_map.set("ja", "管理ポータルから、利用状況・不正兆候・主要デバイスを確認できます。");
|
||||
i18n_messages.set("panel_desc_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Ready to launch your Passkey experience?");
|
||||
lang_map.set("en", "Ready to launch your Passkey experience?");
|
||||
lang_map.set("ja", "Passkey体験を始めませんか?");
|
||||
i18n_messages.set("cta_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Spin up the portal, invite your team, and go live in days.");
|
||||
lang_map.set("en", "Spin up the portal, invite your team, and go live in days.");
|
||||
lang_map.set("ja", "ポータルを用意し、チームを招待して、数日で公開できます。");
|
||||
i18n_messages.set("cta_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Open portal");
|
||||
lang_map.set("en", "Open portal");
|
||||
lang_map.set("ja", "ポータルを開く");
|
||||
i18n_messages.set("cta_btn_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "See integration guide");
|
||||
lang_map.set("en", "See integration guide");
|
||||
lang_map.set("ja", "導入ガイドを見る");
|
||||
i18n_messages.set("cta_btn_integration", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Company");
|
||||
lang_map.set("en", "Company");
|
||||
lang_map.set("ja", "会社名");
|
||||
i18n_messages.set("tbl_company", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Founded");
|
||||
lang_map.set("en", "Founded");
|
||||
lang_map.set("ja", "設立");
|
||||
i18n_messages.set("tbl_founded", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Address");
|
||||
lang_map.set("en", "Address");
|
||||
lang_map.set("ja", "所在地");
|
||||
i18n_messages.set("tbl_address", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "100%");
|
||||
lang_map.set("ja", "100%");
|
||||
i18n_messages.set("stat_value_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "15 minutes");
|
||||
lang_map.set("ja", "15分");
|
||||
i18n_messages.set("stat_value_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "All");
|
||||
lang_map.set("ja", "すべて");
|
||||
i18n_messages.set("stat_value_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Why Choose amiPro Passkey Hub?");
|
||||
lang_map.set("ja", "なぜamiPro Passkey Hubを選ぶのか?");
|
||||
lang_map.set("zh-CN", "为什么选择 amiPro Passkey Hub?");
|
||||
i18n_messages.set("static_why_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "100% FIDO2 Compliant");
|
||||
lang_map.set("ja", "100% FIDO2準拠");
|
||||
lang_map.set("zh-CN", "100% FIDO2 合规");
|
||||
i18n_messages.set("static_f1_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "amiPro has passed the FIDO2 conformance test 100%. The entire stack — from browser to SDK — aligns with the latest FIDO2 standard.");
|
||||
lang_map.set("ja", "amiProはFIDO2互換性テストを100%パスしています。ブラウザからSDKに至るまで、すべてが最新のFIDO2標準に統一されています。");
|
||||
lang_map.set("zh-CN", "amiPro 100% 通过 FIDO2 兼容性测试。从浏览器到 SDK,全部统一至最新 FIDO2 标准。");
|
||||
i18n_messages.set("static_f1_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Fully Open Source");
|
||||
lang_map.set("ja", "完全オープンソース");
|
||||
lang_map.set("zh-CN", "完全开源");
|
||||
i18n_messages.set("static_f2_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Core FIDO2 server and all SDKs (JavaScript, iOS, Android) are completely open source for full verifiability and security transparency.");
|
||||
lang_map.set("ja", "コアFIDO2サーバーとすべてのSDK(JavaScript、iOS、Android)は完全にオープンソースで、完全な検証性とセキュリティの透明性を提供します。");
|
||||
lang_map.set("zh-CN", "核心 FIDO2 服务器和所有 SDK(JavaScript、iOS、Android)完全开源,提供完整的可验证性和安全透明度。");
|
||||
i18n_messages.set("static_f2_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "15-Minute Integration");
|
||||
lang_map.set("ja", "15分で統合");
|
||||
lang_map.set("zh-CN", "15 分钟集成");
|
||||
i18n_messages.set("static_f3_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Add FIDO2 login with a few lines of JavaScript. No backend rewrites or new authentication servers required.");
|
||||
lang_map.set("ja", "数行のJavaScriptでFIDO2ログインを追加。バックエンド改修や新しい認証サーバーは不要です。");
|
||||
lang_map.set("zh-CN", "几行 JavaScript 即可添加 FIDO2 登录,无需修改后端或部署新认证服务器。");
|
||||
i18n_messages.set("static_f3_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Active-User Pricing");
|
||||
lang_map.set("ja", "アクティブユーザー課金");
|
||||
lang_map.set("zh-CN", "按活跃用户计费");
|
||||
i18n_messages.set("static_f4_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Pay only for active users (monthly or per authentication). 3-month free trial with no credit card required.");
|
||||
lang_map.set("ja", "アクティブユーザー数のみ課金(月額または認証ごと)。クレジットカード不要の3ヶ月間無料トライアルあり。");
|
||||
lang_map.set("zh-CN", "仅按活跃用户计费(月付或按次)。3 个月免费试用,无需信用卡。");
|
||||
i18n_messages.set("static_f4_desc", lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages)
|
||||
initRevealAnimations()
|
||||
if (typeof createLanguageSelector === 'function') {
|
||||
document.body.appendChild(createLanguageSelector());
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -407,6 +478,54 @@
|
||||
"url": "https://amipro.me/fido2_top.html"
|
||||
}
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "What is a passkey?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "A passkey is a FIDO2-based passwordless authentication credential that uses biometrics (fingerprint, face recognition) or hardware security keys to sign in to websites and apps. Passkeys are phishing-resistant, more secure than passwords, and provide a faster sign-in experience."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How does amiPro Passkey Hub work?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "amiPro Passkey Hub provides a fully managed FIDO2-certified cloud service with open-source SDKs for JavaScript, iOS, and Android. Developers integrate passkey authentication by adding a few lines of JavaScript—no backend rewrites needed. The platform handles device registration, recovery, and analytics through a management portal."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How much does amiPro Passkey Hub cost?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "amiPro uses an active-user-based billing model. You only pay for users who log in at least once per month, either per active user per month or per authentication. A 3-month free trial is available with no credit card required. Discount plans are available for high-volume sites."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "What FIDO2 compliance does amiPro have?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "amiPro has passed the FIDO2 conformance test 100%. The entire stack—from browser to SDK—aligns with the latest FIDO2 standard, ensuring maximum compatibility and security."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Is amiPro's SDK open source?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Yes. amiPro's core FIDO2 server and all SDKs (JavaScript for web, iOS, and Android for mobile apps) are completely open source, providing full verifiability and security transparency."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -461,15 +580,15 @@
|
||||
</div>
|
||||
<div class="hero__stats" style="margin-top: 2rem;">
|
||||
<div class="stat-card">
|
||||
<strong>100%</strong>
|
||||
<strong id="stat_value_1">100%</strong>
|
||||
<span id="stat_label_1">FIDO certified</span>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<strong>15 minutes</strong>
|
||||
<strong id="stat_value_2">15 minutes</strong>
|
||||
<span id="stat_label_2">Fast onboarding</span>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<strong>All</strong>
|
||||
<strong id="stat_value_3">All</strong>
|
||||
<span id="stat_label_3">Platforms</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -494,6 +613,28 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section style="margin: 2rem 12px; padding: 2rem; background: #f0f9ff; border-radius: 12px; border-left: 4px solid #2563eb;">
|
||||
<h2 id="static_why_title" style="font-size: 1.5rem; font-weight: 600; color: #0f172a; margin-bottom: 1rem;">Why Choose amiPro Passkey Hub?</h2>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; margin-top: 1rem;">
|
||||
<div>
|
||||
<h3 id="static_f1_title" style="font-size: 1.1rem; font-weight: 600; color: #1e40af; margin-bottom: 0.5rem;">100% FIDO2 Compliant</h3>
|
||||
<p id="static_f1_desc" style="color: #475569; margin: 0;">amiPro has passed the FIDO2 conformance test 100%. The entire stack — from browser to SDK — aligns with the latest FIDO2 standard.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3 id="static_f2_title" style="font-size: 1.1rem; font-weight: 600; color: #1e40af; margin-bottom: 0.5rem;">Fully Open Source</h3>
|
||||
<p id="static_f2_desc" style="color: #475569; margin: 0;">Core FIDO2 server and all SDKs (JavaScript, iOS, Android) are completely open source for full verifiability and security transparency.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3 id="static_f3_title" style="font-size: 1.1rem; font-weight: 600; color: #1e40af; margin-bottom: 0.5rem;">15-Minute Integration</h3>
|
||||
<p id="static_f3_desc" style="color: #475569; margin: 0;">Add FIDO2 login with a few lines of JavaScript. No backend rewrites or new authentication servers required.</p>
|
||||
</div>
|
||||
<div>
|
||||
<h3 id="static_f4_title" style="font-size: 1.1rem; font-weight: 600; color: #1e40af; margin-bottom: 0.5rem;">Active-User Pricing</h3>
|
||||
<p id="static_f4_desc" style="color: #475569; margin: 0;">Pay only for active users (monthly or per authentication). 3-month free trial with no credit card required.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div class="row row-cols-1 row-cols-md-3 g-4 mb-5" style="margin: 12px;">
|
||||
<div class="col" data-animate>
|
||||
<div class="card h-100 glow-card">
|
||||
@@ -509,7 +650,7 @@
|
||||
</div>
|
||||
<div class="col" data-animate>
|
||||
<div class="card h-100 glow-card">
|
||||
<img class="card-img-top" src="files/growup.jpg" alt="Growup">
|
||||
<img class="card-img-top" src="files/growup.jpg" alt="Passkey adoption growth chart showing market expansion">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" id="title_passkey_merits">Passkey benefits</h5>
|
||||
<p class="card-text" id="info_passkey_merits">
|
||||
@@ -521,7 +662,7 @@
|
||||
</div>
|
||||
<div class="col" data-animate>
|
||||
<div class="card h-100 glow-card">
|
||||
<img class="card-img-top" src="files/fido.jpg" alt="amiPro Strength: fido">
|
||||
<img class="card-img-top" src="files/fido.jpg" alt="FIDO2 certification compliance diagram">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" id="title_amipro_fido">Why amiPro: Standards compliance</h5>
|
||||
<p class="card-text" id="info_amipro_fido">
|
||||
@@ -533,7 +674,7 @@
|
||||
</div>
|
||||
<div class="col" data-animate>
|
||||
<div class="card h-100 glow-card">
|
||||
<img class="card-img-top" src="files/opensrc.jpg" alt="Open source">
|
||||
<img class="card-img-top" src="files/opensrc.jpg" alt="Open source FIDO2 server and SDK code repository">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" id="title_open_src">Why amiPro: Open source</h5>
|
||||
<p class="card-text" id="info_open_src">
|
||||
@@ -545,7 +686,7 @@
|
||||
</div>
|
||||
<div class="col" data-animate>
|
||||
<div class="card h-100 glow-card">
|
||||
<img class="card-img-top" src="files/build.jpg" alt="how to">
|
||||
<img class="card-img-top" src="files/build.jpg" alt="Passkey integration code snippet showing JavaScript SDK setup">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" id="title_howto">How to integrate</h5>
|
||||
<p class="card-text" id="info_howto">
|
||||
@@ -557,7 +698,7 @@
|
||||
</div>
|
||||
<div class="col" data-animate>
|
||||
<div class="card h-100 glow-card">
|
||||
<img class="card-img-top" src="files/howmuch.jpg" alt="How much">
|
||||
<img class="card-img-top" src="files/howmuch.jpg" alt="Active user based pricing model overview">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title" id="title_howmuch">Cost</h5>
|
||||
<p class="card-text" id="info_howmuch">
|
||||
|
||||
+148
-4
@@ -4,16 +4,60 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
var _currentLang = null;
|
||||
var _i18n_map = null;
|
||||
|
||||
function getCurrentLanguage() {
|
||||
if (_currentLang) return _currentLang;
|
||||
var stored = localStorage.getItem('amipro_lang');
|
||||
if (stored) { _currentLang = stored; return stored; }
|
||||
var browserLang = window.navigator.language || 'en';
|
||||
if (browserLang.indexOf('ja') === 0) return 'ja';
|
||||
return 'en';
|
||||
}
|
||||
|
||||
function setLanguage(lang) {
|
||||
_currentLang = lang;
|
||||
localStorage.setItem('amipro_lang', lang);
|
||||
document.documentElement.lang = lang;
|
||||
if (_i18n_map) setI18NText(_i18n_map);
|
||||
updateImages(lang);
|
||||
var sel = document.getElementById('lang-selector');
|
||||
if (sel) sel.value = lang;
|
||||
}
|
||||
|
||||
function updateImages(lang) {
|
||||
var heroImg = document.getElementById('hero-image');
|
||||
var searchImg = document.getElementById('search-image');
|
||||
|
||||
if (heroImg) {
|
||||
if (lang === 'ja') {
|
||||
heroImg.src = 'contextwizard-files/cw-banner-jp.png';
|
||||
} else {
|
||||
heroImg.src = 'contextwizard-files/screen-platforms-640-400.jpg';
|
||||
}
|
||||
}
|
||||
|
||||
if (searchImg) {
|
||||
if (lang === 'ja') {
|
||||
searchImg.src = 'contextwizard-files/screen-search-640-400-jp.jpg';
|
||||
} else {
|
||||
searchImg.src = 'contextwizard-files/screen-search-640-400.jpg';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setI18NText(i18n_map){
|
||||
_i18n_map = i18n_map;
|
||||
var lang = getCurrentLanguage();
|
||||
for (const key of i18n_map.keys()) {
|
||||
const elm = $("#"+key);
|
||||
if(elm){
|
||||
const lang = window.navigator.language;
|
||||
var elem = i18n_map.get(key)
|
||||
var msg = null
|
||||
if(elem){
|
||||
msg = elem.get(lang)
|
||||
if(!msg && lang && lang.indexOf('-') > -1) msg = elem.get(lang.split('-')[0]);
|
||||
if(!msg) msg = elem.get('en');
|
||||
if(!msg) msg = elem.get('en-US');
|
||||
}
|
||||
if(!msg)msg = key+"-"+lang
|
||||
@@ -24,12 +68,12 @@ function setI18NText(i18n_map){
|
||||
}
|
||||
|
||||
function getI18NText(i18n_map, key){
|
||||
const lang = window.navigator.language;
|
||||
var lang = getCurrentLanguage();
|
||||
var elem = i18n_map.get(key)
|
||||
var msg = null
|
||||
if(elem){
|
||||
msg = elem.get(lang)
|
||||
if(!msg && lang && lang.indexOf('-') > -1) msg = elem.get(lang.split('-')[0]);
|
||||
if(!msg) msg = elem.get('en');
|
||||
if(!msg) msg = elem.get('en-US');
|
||||
}
|
||||
if(!msg)msg = key+"-"+lang
|
||||
@@ -37,6 +81,106 @@ function getI18NText(i18n_map, key){
|
||||
return msg
|
||||
}
|
||||
|
||||
function createLanguageSelector() {
|
||||
var current = getCurrentLanguage();
|
||||
var wrapper = document.createElement('div');
|
||||
wrapper.className = 'lang-selector-wrapper lang-selector-floating';
|
||||
wrapper.id = 'lang-selector-draggable';
|
||||
wrapper.innerHTML = '<select id="lang-selector" class="lang-selector" onchange="setLanguage(this.value)">' +
|
||||
'<option value="en"' + (current === 'en' ? ' selected' : '') + '>EN</option>' +
|
||||
'<option value="ja"' + (current === 'ja' ? ' selected' : '') + '>JA</option>' +
|
||||
'</select>';
|
||||
|
||||
var savedPos = localStorage.getItem('amipro_lang_pos');
|
||||
if (savedPos) {
|
||||
try {
|
||||
var pos = JSON.parse(savedPos);
|
||||
wrapper.style.left = pos.x + 'px';
|
||||
wrapper.style.top = pos.y + 'px';
|
||||
wrapper.style.right = 'auto';
|
||||
} catch(e) {}
|
||||
}
|
||||
|
||||
makeDraggable(wrapper);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
function makeDraggable(el) {
|
||||
var isDragging = false;
|
||||
var startX, startY, startLeft, startTop;
|
||||
|
||||
el.style.cursor = 'grab';
|
||||
|
||||
el.addEventListener('mousedown', function(e) {
|
||||
if (e.target.tagName === 'SELECT') return;
|
||||
isDragging = true;
|
||||
startX = e.clientX;
|
||||
startY = e.clientY;
|
||||
startLeft = el.offsetLeft;
|
||||
startTop = el.offsetTop;
|
||||
el.style.cursor = 'grabbing';
|
||||
el.style.right = 'auto';
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
document.addEventListener('mousemove', function(e) {
|
||||
if (!isDragging) return;
|
||||
var dx = e.clientX - startX;
|
||||
var dy = e.clientY - startY;
|
||||
var newLeft = startLeft + dx;
|
||||
var newTop = startTop + dy;
|
||||
|
||||
newLeft = Math.max(0, Math.min(newLeft, window.innerWidth - el.offsetWidth));
|
||||
newTop = Math.max(0, Math.min(newTop, window.innerHeight - el.offsetHeight));
|
||||
|
||||
el.style.left = newLeft + 'px';
|
||||
el.style.top = newTop + 'px';
|
||||
});
|
||||
|
||||
document.addEventListener('mouseup', function() {
|
||||
if (!isDragging) return;
|
||||
isDragging = false;
|
||||
el.style.cursor = 'grab';
|
||||
localStorage.setItem('amipro_lang_pos', JSON.stringify({
|
||||
x: el.offsetLeft,
|
||||
y: el.offsetTop
|
||||
}));
|
||||
});
|
||||
|
||||
el.addEventListener('touchstart', function(e) {
|
||||
if (e.target.tagName === 'SELECT') return;
|
||||
isDragging = true;
|
||||
startX = e.touches[0].clientX;
|
||||
startY = e.touches[0].clientY;
|
||||
startLeft = el.offsetLeft;
|
||||
startTop = el.offsetTop;
|
||||
el.style.right = 'auto';
|
||||
}, { passive: true });
|
||||
|
||||
document.addEventListener('touchmove', function(e) {
|
||||
if (!isDragging) return;
|
||||
var dx = e.touches[0].clientX - startX;
|
||||
var dy = e.touches[0].clientY - startY;
|
||||
var newLeft = startLeft + dx;
|
||||
var newTop = startTop + dy;
|
||||
|
||||
newLeft = Math.max(0, Math.min(newLeft, window.innerWidth - el.offsetWidth));
|
||||
newTop = Math.max(0, Math.min(newTop, window.innerHeight - el.offsetHeight));
|
||||
|
||||
el.style.left = newLeft + 'px';
|
||||
el.style.top = newTop + 'px';
|
||||
}, { passive: true });
|
||||
|
||||
document.addEventListener('touchend', function() {
|
||||
if (!isDragging) return;
|
||||
isDragging = false;
|
||||
localStorage.setItem('amipro_lang_pos', JSON.stringify({
|
||||
x: el.offsetLeft,
|
||||
y: el.offsetTop
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
function initRevealAnimations(){
|
||||
const animated = document.querySelectorAll('.reveal, [data-animate]');
|
||||
if(!animated || animated.length === 0){
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -400,3 +400,55 @@ body {
|
||||
left: -38px;
|
||||
}
|
||||
}
|
||||
|
||||
.lang-selector-wrapper {
|
||||
margin-left: 12px;
|
||||
background: var(--bg-panel);
|
||||
border: 1px solid var(--border-soft);
|
||||
border-radius: 8px;
|
||||
padding: 4px;
|
||||
backdrop-filter: blur(16px);
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.lang-selector-floating {
|
||||
position: fixed;
|
||||
top: 16px;
|
||||
right: 16px;
|
||||
z-index: 9999;
|
||||
margin-left: 0;
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
||||
transition: box-shadow 0.2s ease;
|
||||
display: inline-block;
|
||||
width: fit-content;
|
||||
max-width: fit-content;
|
||||
flex-shrink: 0;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.lang-selector-floating:hover {
|
||||
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.lang-selector {
|
||||
background: transparent;
|
||||
border: 1px solid var(--border-soft);
|
||||
border-radius: 8px;
|
||||
color: var(--text-bright);
|
||||
padding: 4px 8px;
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
.lang-selector option {
|
||||
background: #1e293b;
|
||||
color: var(--text-bright);
|
||||
}
|
||||
|
||||
.lang-selector:hover {
|
||||
border-color: var(--brand-primary);
|
||||
}
|
||||
|
||||
+128
-59
@@ -23,13 +23,13 @@
|
||||
|
||||
<meta
|
||||
name="description"
|
||||
content="amiPro delivers FIDO2-certified passkey authentication and ContextWizard, a privacy-first AI conversation manager. Open-source SDKs, transparent pricing. Founded 2023, Tokyo."
|
||||
content="amiPro delivers FIDO2-certified passkey authentication, ContextWizard AI privacy, and MCPOrb portable MCP knowledge delivery. Open-source SDKs, transparent pricing. Founded 2023, Tokyo."
|
||||
/>
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="amiPro | Enterprise Passkey Cloud & AI Privacy Platform" />
|
||||
<meta property="og:description" content="FIDO2-certified passkey authentication and ContextWizard, a privacy-first AI conversation manager. Open-source SDKs, transparent pricing." />
|
||||
<meta property="og:description" content="FIDO2-certified passkey authentication, ContextWizard AI privacy, and MCPOrb portable MCP knowledge delivery. Open-source SDKs, transparent pricing." />
|
||||
<meta property="og:url" content="https://amipro.me/" />
|
||||
<meta property="og:site_name" content="amiPro" />
|
||||
<meta property="og:image" content="https://amipro.me/files/favicon.ico" />
|
||||
@@ -37,7 +37,7 @@
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="amiPro | Enterprise Passkey Cloud & AI Privacy Platform" />
|
||||
<meta name="twitter:description" content="FIDO2-certified passkey authentication and privacy-first AI conversation manager." />
|
||||
<meta name="twitter:description" content="FIDO2-certified passkey authentication, AI privacy tooling, and MCP-native knowledge delivery." />
|
||||
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
@@ -140,195 +140,235 @@
|
||||
const i18n_messages = new Map();
|
||||
let lang_map = new Map();
|
||||
|
||||
lang_map.set('en-US', 'Privacy-first identity & AI products');
|
||||
lang_map.set('ja', 'プライバシー重視のID基盤&AIプロダクト');
|
||||
lang_map.set('en', 'Privacy-first identity, AI & MCP knowledge products');
|
||||
lang_map.set('ja', 'プライバシー重視のID基盤・AI・MCPナレッジプロダクト');
|
||||
i18n_messages.set('nav_tagline', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Contact sales');
|
||||
lang_map.set('en', 'Contact sales');
|
||||
lang_map.set('ja', 'お問い合わせ');
|
||||
i18n_messages.set('nav_contact_sales', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'amiPro, LLC');
|
||||
lang_map.set('en', 'amiPro, LLC');
|
||||
lang_map.set('ja', 'amiPro, LLC');
|
||||
i18n_messages.set('hero_eyebrow', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Secure passkey journeys and privacy tooling for modern teams.');
|
||||
lang_map.set('ja', '現代のチームのための、安全なパスキー体験とプライバシー基盤。');
|
||||
lang_map.set('en', 'Secure passkey journeys, privacy tooling, and MCP-native knowledge delivery for modern teams.');
|
||||
lang_map.set('ja', '現代のチームのための、安全なパスキー体験・プライバシー基盤・MCPナレッジデリバリー。');
|
||||
i18n_messages.set('hero_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'We build production-ready products that make passwordless authentication effortless and\nensure every AI conversation stays under your control.');
|
||||
lang_map.set('en', 'We build production-ready products that make passwordless authentication effortless,\nkeep every AI conversation under your control, and deliver portable knowledge via MCP.');
|
||||
lang_map.set('ja', 'パスワードレス認証を手軽に導入でき、AI会話のデータも手元で管理できる――\n実運用に耐えるプロダクトを提供します。');
|
||||
i18n_messages.set('hero_lead', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'FIDO2 certified');
|
||||
lang_map.set('en', 'FIDO2 certified');
|
||||
lang_map.set('ja', 'FIDO2認証');
|
||||
i18n_messages.set('hero_chip_1', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Open source SDKs');
|
||||
lang_map.set('en', 'Open source SDKs');
|
||||
lang_map.set('ja', 'SDKはオープンソース');
|
||||
i18n_messages.set('hero_chip_2', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Local-first privacy');
|
||||
lang_map.set('en', 'Local-first privacy');
|
||||
lang_map.set('ja', 'ローカルファースト・プライバシー');
|
||||
i18n_messages.set('hero_chip_3', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Explore Passkey Platform');
|
||||
lang_map.set('en', 'MCP-native knowledge');
|
||||
lang_map.set('ja', 'MCP対応ナレッジ');
|
||||
i18n_messages.set('hero_chip_4', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'Explore Passkey Platform');
|
||||
lang_map.set('ja', 'Passkeyプラットフォームを見る');
|
||||
i18n_messages.set('hero_btn_passkey', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Discover ContextWizard');
|
||||
lang_map.set('en', 'Discover ContextWizard');
|
||||
lang_map.set('ja', 'ContextWizardを見る');
|
||||
i18n_messages.set('hero_btn_contextwizard', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Built in Tokyo · Shipping globally');
|
||||
lang_map.set('en', 'Explore MCPOrb');
|
||||
lang_map.set('ja', 'MCPOrbを見る');
|
||||
i18n_messages.set('hero_btn_mcporb', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'Built in Tokyo · Shipping globally');
|
||||
lang_map.set('ja', 'Tokyo発 · 世界へ');
|
||||
i18n_messages.set('hero_device_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Founded in 2023, amiPro delivers reliable identity infrastructure, open SDKs, and\nprivacy-first extensions that enterprises can audit and trust.');
|
||||
lang_map.set('en', 'Founded in 2023, amiPro delivers reliable identity infrastructure, open SDKs, and\nprivacy-first extensions that enterprises can audit and trust.');
|
||||
lang_map.set('ja', '2023年設立。企業が監査でき、信頼して使えるID基盤・オープンSDK・\nプライバシー重視の拡張機能を提供します。');
|
||||
i18n_messages.set('hero_device_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'FIDO2 server + SDKs (open source)');
|
||||
lang_map.set('en', 'FIDO2 server + SDKs (open source)');
|
||||
lang_map.set('ja', 'FIDO2サーバー+SDK(オープンソース)');
|
||||
i18n_messages.set('hero_device_li_1', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Device lifecycle tooling');
|
||||
lang_map.set('en', 'Device lifecycle tooling');
|
||||
lang_map.set('ja', 'デバイス管理ツール');
|
||||
i18n_messages.set('hero_device_li_2', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Local-first AI knowledge capture');
|
||||
lang_map.set('en', 'Local-first AI knowledge capture');
|
||||
lang_map.set('ja', 'ローカルでAIナレッジを蓄積');
|
||||
i18n_messages.set('hero_device_li_3', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'What we build');
|
||||
lang_map.set('en', 'Portable MCP knowledge delivery');
|
||||
lang_map.set('ja', 'ポータブルMCPナレッジデリバリー');
|
||||
i18n_messages.set('hero_device_li_4', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'What we build');
|
||||
lang_map.set('ja', '提供プロダクト');
|
||||
i18n_messages.set('section_build_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Two flagship products solve the hardest trust problems teams face today—passwordless authentication\nand safe AI adoption.');
|
||||
lang_map.set('ja', '2つの主力プロダクトで、パスワードレス認証と安全なAI活用という\n「信頼」の課題を解決します。');
|
||||
lang_map.set('en', 'Three flagship products solve the hardest trust problems teams face today—passwordless authentication,\nsafe AI adoption, and portable MCP knowledge delivery.');
|
||||
lang_map.set('ja', '3つの主力プロダクトで、パスワードレス認証・安全なAI活用・\nポータブルMCPナレッジデリバリーという「信頼」の課題を解決します。');
|
||||
i18n_messages.set('section_build_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Enterprise Passkeys');
|
||||
lang_map.set('en', 'Enterprise Passkeys');
|
||||
lang_map.set('ja', 'エンタープライズPasskeys');
|
||||
i18n_messages.set('badge_passkeys', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'amiPro Passkey Cloud');
|
||||
lang_map.set('en', 'amiPro Passkey Cloud');
|
||||
lang_map.set('ja', 'amiPro Passkey Cloud');
|
||||
i18n_messages.set('product_passkey_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Launch phishing-resistant login backed by our FIDO2-certified cloud, open server, and drop-in SDKs.\nManage registration, recovery, and analytics from one portal.');
|
||||
lang_map.set('en', 'Launch phishing-resistant login backed by our FIDO2-certified cloud, open server, and drop-in SDKs.\nManage registration, recovery, and analytics from one portal.');
|
||||
lang_map.set('ja', 'FIDO2認証済みクラウド、オープンサーバー、導入しやすいSDKで\nフィッシング耐性のあるログインを提供。登録・復旧・分析を1つのポータルで管理できます。');
|
||||
i18n_messages.set('product_passkey_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Go to Passkey hub →');
|
||||
lang_map.set('en', 'Go to Passkey hub →');
|
||||
lang_map.set('ja', 'Passkeyの詳細へ →');
|
||||
i18n_messages.set('product_passkey_link', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'AI Conversation OS');
|
||||
lang_map.set('en', 'AI Conversation OS');
|
||||
lang_map.set('ja', 'AI会話のOS');
|
||||
i18n_messages.set('badge_ai', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'ContextWizard');
|
||||
lang_map.set('en', 'ContextWizard');
|
||||
lang_map.set('ja', 'ContextWizard');
|
||||
i18n_messages.set('product_cw_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Keep every AI conversation searchable, portable, and private. Automatically capture threads across assistants\nwith encryption that never leaves your machine.');
|
||||
lang_map.set('en', 'Keep every AI conversation searchable, portable, and private. Automatically capture threads across assistants\nwith encryption that never leaves your machine.');
|
||||
lang_map.set('ja', 'AI会話を検索可能・持ち運び可能・プライベートに。\n端末外に出ない暗号化で、複数アシスタントのスレッドを自動収集します。');
|
||||
i18n_messages.set('product_cw_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'See ContextWizard →');
|
||||
lang_map.set('en', 'See ContextWizard →');
|
||||
lang_map.set('ja', 'ContextWizardの詳細へ →');
|
||||
i18n_messages.set('product_cw_link', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Built on verifiable foundations');
|
||||
lang_map.set('en', 'MCP Knowledge Delivery');
|
||||
lang_map.set('ja', 'MCPナレッジデリバリー');
|
||||
i18n_messages.set('badge_mcporb', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'MCPOrb');
|
||||
lang_map.set('ja', 'MCPOrb');
|
||||
i18n_messages.set('product_mcporb_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'Package product docs, service playbooks, and expert knowledge into portable Orbs that run locally inside AI tools via MCP. The PDF for AI-native knowledge delivery.');
|
||||
lang_map.set('ja', 'プロダクトドキュメント、サービスプレイブック、専門知識をポータブルなOrbにパッケージ化。AIツール内でローカル動作するMCP対応ナレッジデリバリー。');
|
||||
i18n_messages.set('product_mcporb_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'Visit MCPOrb →');
|
||||
lang_map.set('ja', 'MCPOrbの詳細へ →');
|
||||
i18n_messages.set('product_mcporb_link', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'Built on verifiable foundations');
|
||||
lang_map.set('ja', '検証できる基盤の上に');
|
||||
i18n_messages.set('section_foundation_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Open standards, published code, and transparent pricing keep vendors accountable. amiPro blends\nJapanese craftsmanship with global security best practices so you can ship faster without compromising trust.');
|
||||
lang_map.set('en', 'Open standards, published code, and transparent pricing keep vendors accountable. amiPro blends\nJapanese craftsmanship with global security best practices so you can ship faster without compromising trust.');
|
||||
lang_map.set('ja', 'オープン標準、公開されたコード、透明な価格。ベンダーの説明責任を支えます。\namiProは日本の丁寧なものづくりと世界のセキュリティベストプラクティスを融合し、\n信頼を損なわずにスピーディーな提供を実現します。');
|
||||
i18n_messages.set('section_foundation_desc', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'FIDO2 Certified Stack');
|
||||
lang_map.set('en', 'FIDO2 Certified Stack');
|
||||
lang_map.set('ja', 'FIDO2認証スタック');
|
||||
i18n_messages.set('value_1', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Open Source SDKs');
|
||||
lang_map.set('en', 'Open Source SDKs');
|
||||
lang_map.set('ja', 'SDKはオープンソース');
|
||||
i18n_messages.set('value_2', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Local-first Privacy');
|
||||
lang_map.set('en', 'Local-first Privacy');
|
||||
lang_map.set('ja', 'ローカルファースト・プライバシー');
|
||||
i18n_messages.set('value_3', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Enterprise Support');
|
||||
lang_map.set('en', 'Enterprise Support');
|
||||
lang_map.set('ja', 'エンタープライズサポート');
|
||||
i18n_messages.set('value_4', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'Company quick facts');
|
||||
lang_map.set('en', 'Company quick facts');
|
||||
lang_map.set('ja', '会社概要');
|
||||
i18n_messages.set('company_facts_title', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', '<strong>Founded:</strong> March 3, 2023');
|
||||
lang_map.set('en', '<strong>Founded:</strong> March 3, 2023');
|
||||
lang_map.set('ja', '<strong>設立:</strong> 2023年3月3日');
|
||||
i18n_messages.set('fact_founded', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', '<strong>Location:</strong> 2F Kuwano Building, 6-23-4 Jingumae, Shibuya-ku, Tokyo 150-0001');
|
||||
lang_map.set('en', '<strong>Location:</strong> 2F Kuwano Building, 6-23-4 Jingumae, Shibuya-ku, Tokyo 150-0001');
|
||||
lang_map.set('ja', '<strong>所在地:</strong> 〒150-0001 東京都渋谷区神宮前6-23-4 桑野ビル2F');
|
||||
i18n_messages.set('fact_location', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', '<strong>Focus:</strong> FIDO2 Infrastructure · AI Privacy Tooling');
|
||||
lang_map.set('ja', '<strong>事業:</strong> FIDO2基盤 · AIプライバシーツール');
|
||||
lang_map.set('en', '<strong>Focus:</strong> FIDO2 Infrastructure · AI Privacy Tooling · MCP Knowledge Delivery');
|
||||
lang_map.set('ja', '<strong>事業:</strong> FIDO2基盤 · AIプライバシーツール · MCPナレッジデリバリー');
|
||||
i18n_messages.set('fact_focus', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', '<strong>Contact:</strong> <a href="mailto:sales@amipro.me">sales@amipro.me</a>');
|
||||
lang_map.set('en', '<strong>Contact:</strong> <a href="mailto:sales@amipro.me">sales@amipro.me</a>');
|
||||
lang_map.set('ja', '<strong>連絡先:</strong> <a href="mailto:sales@amipro.me">sales@amipro.me</a>');
|
||||
i18n_messages.set('fact_contact', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'FIDO2 Platform');
|
||||
lang_map.set('en', 'FIDO2 Platform');
|
||||
lang_map.set('ja', 'FIDO2プラットフォーム');
|
||||
i18n_messages.set('footer_fido2', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en-US', 'ContextWizard');
|
||||
lang_map.set('en', 'ContextWizard');
|
||||
lang_map.set('ja', 'ContextWizard');
|
||||
i18n_messages.set('footer_cw', lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set('en', 'MCPOrb');
|
||||
lang_map.set('ja', 'MCPOrb');
|
||||
i18n_messages.set('footer_mcporb', lang_map);
|
||||
|
||||
window.onload = function() {
|
||||
if (typeof setI18NText === 'function') {
|
||||
setI18NText(i18n_messages);
|
||||
@@ -336,6 +376,9 @@
|
||||
if (typeof initRevealAnimations === 'function') {
|
||||
initRevealAnimations();
|
||||
}
|
||||
if (typeof createLanguageSelector === 'function') {
|
||||
document.body.appendChild(createLanguageSelector());
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
@@ -346,7 +389,7 @@
|
||||
"url": "https://amipro.me",
|
||||
"logo": "https://amipro.me/files/favicon.ico",
|
||||
"foundingDate": "2023-03-03",
|
||||
"description": "B2B identity infrastructure and AI privacy platform offering FIDO2 passkey authentication and AI conversation management.",
|
||||
"description": "B2B identity infrastructure, AI privacy, and MCP-native knowledge delivery platform offering FIDO2 passkey authentication, AI conversation management, and portable MCP knowledge delivery.",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "2F Kuwano Building, 6-23-4 Jingumae",
|
||||
@@ -357,8 +400,15 @@
|
||||
},
|
||||
"email": "sales@amipro.me",
|
||||
"sameAs": [
|
||||
"https://www.linkedin.com/company/amipro"
|
||||
]
|
||||
"https://www.linkedin.com/company/amipro",
|
||||
"https://github.com/amipro-llc",
|
||||
"https://chromewebstore.google.com/detail/contextwizard/lmhnmmedgmnfggecdalkancllnekofnb"
|
||||
],
|
||||
"contactPoint": {
|
||||
"@type": "ContactPoint",
|
||||
"email": "sales@amipro.me",
|
||||
"contactType": "sales"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
@@ -384,7 +434,7 @@
|
||||
/>
|
||||
<div>
|
||||
<div style="font-weight: 700; font-size: 1.25rem; color: #0f172a;">amiPro, LLC</div>
|
||||
<small style="color: #64748b;" id="nav_tagline">Privacy-first identity & AI products</small>
|
||||
<small style="color: #64748b;" id="nav_tagline">Privacy-first identity, AI & MCP knowledge products</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -398,20 +448,22 @@
|
||||
<div class="hero__text" data-animate>
|
||||
<span class="hero__eyebrow" id="hero_eyebrow">amiPro, LLC</span>
|
||||
<h1 class="hero__title">
|
||||
<span id="hero_title">Secure passkey journeys and privacy tooling for modern teams.</span>
|
||||
<span id="hero_title">Secure passkey journeys, privacy tooling, and MCP-native knowledge delivery for modern teams.</span>
|
||||
</h1>
|
||||
<p class="hero__lead" id="hero_lead">
|
||||
We build production-ready products that make passwordless authentication effortless and
|
||||
ensure every AI conversation stays under your control.
|
||||
We build production-ready products that make passwordless authentication effortless,
|
||||
keep every AI conversation under your control, and deliver portable knowledge via MCP.
|
||||
</p>
|
||||
<div class="hero__chips" style="margin-top: 1.5rem;">
|
||||
<span class="hero-chip" id="hero_chip_1">FIDO2 certified</span>
|
||||
<span class="hero-chip" id="hero_chip_2">Open source core</span>
|
||||
<span class="hero-chip" id="hero_chip_3">Local-first privacy</span>
|
||||
<span class="hero-chip" id="hero_chip_4">MCP-native knowledge</span>
|
||||
</div>
|
||||
<div style="margin-top: 2rem; display: flex; flex-wrap: wrap; gap: 1rem;">
|
||||
<a href="fido2_top.html" class="btn btn-primary" style="flex: 1 0 220px;" id="hero_btn_passkey">Explore Passkey Platform</a>
|
||||
<a href="contextwizard_top.html" class="btn btn-outline-info" style="flex: 1 0 220px;" id="hero_btn_contextwizard">Discover ContextWizard</a>
|
||||
<a href="https://contextwizard.site/" class="btn btn-outline-info" style="flex: 1 0 220px;" id="hero_btn_contextwizard">Discover ContextWizard</a>
|
||||
<a href="https://mcporb.ai" class="btn btn-outline-success" style="flex: 1 0 220px;" id="hero_btn_mcporb">Explore MCPOrb</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hero__media" data-animate>
|
||||
@@ -426,6 +478,7 @@
|
||||
<li><i class="bx bx-check-circle me-1"></i><span id="hero_device_li_1">FIDO2 server + SDKs (open source)</span></li>
|
||||
<li><i class="bx bx-check-circle me-1"></i><span id="hero_device_li_2">Device lifecycle tooling</span></li>
|
||||
<li><i class="bx bx-check-circle me-1"></i><span id="hero_device_li_3">Local-first AI knowledge capture</span></li>
|
||||
<li><i class="bx bx-check-circle me-1"></i><span id="hero_device_li_4">Portable MCP knowledge delivery</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -434,11 +487,11 @@
|
||||
<section class="reveal" data-animate style="margin-top: 56px;">
|
||||
<h2 style="font-weight: 600; color: #0f172a;" id="section_build_title">What we build</h2>
|
||||
<p style="color: #475569; max-width: 720px;" id="section_build_desc">
|
||||
Two flagship products solve the hardest trust problems teams face today—passwordless authentication
|
||||
and safe AI adoption.
|
||||
Three flagship products solve the hardest trust problems teams face today—passwordless authentication,
|
||||
safe AI adoption, and portable MCP knowledge delivery.
|
||||
</p>
|
||||
|
||||
<div class="row row-cols-1 row-cols-md-2 g-4" style="margin-top: 1.5rem;">
|
||||
<div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4" style="margin-top: 1.5rem;">
|
||||
<div class="col">
|
||||
<article class="card product-card h-100">
|
||||
<div class="card-body">
|
||||
@@ -467,7 +520,22 @@
|
||||
Keep every AI conversation searchable, portable, and private. Automatically capture threads across assistants
|
||||
with encryption that never leaves your machine.
|
||||
</p>
|
||||
<a href="contextwizard_top.html" class="btn btn-link px-0" id="product_cw_link">See ContextWizard →</a>
|
||||
<a href="https://contextwizard.site/" class="btn btn-link px-0" id="product_cw_link">See ContextWizard →</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<div class="col">
|
||||
<article class="card product-card h-100">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center mb-3">
|
||||
<i class="bx bx-sphere me-2"></i>
|
||||
<span class="badge bg-label-success" id="badge_mcporb">MCP Knowledge Delivery</span>
|
||||
</div>
|
||||
<h3 style="font-size: 1.5rem;" id="product_mcporb_title">MCPOrb</h3>
|
||||
<p id="product_mcporb_desc">
|
||||
Package product docs, service playbooks, and expert knowledge into portable Orbs that run locally inside AI tools via MCP. The PDF for AI-native knowledge delivery.
|
||||
</p>
|
||||
<a href="https://mcporb.ai" class="btn btn-link px-0" id="product_mcporb_link">Visit MCPOrb →</a>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
@@ -496,7 +564,7 @@
|
||||
<ul class="list-unstyled" style="color: #0f172a;">
|
||||
<li id="fact_founded"><strong>Founded:</strong> March 3, 2023</li>
|
||||
<li id="fact_location"><strong>Location:</strong> 2F Kuwano Building, 6-23-4 Jingumae, Shibuya-ku, Tokyo 150-0001</li>
|
||||
<li id="fact_focus"><strong>Focus:</strong> FIDO2 Infrastructure · AI Privacy Tooling</li>
|
||||
<li id="fact_focus"><strong>Focus:</strong> FIDO2 Infrastructure · AI Privacy Tooling · MCP Knowledge Delivery</li>
|
||||
<li id="fact_contact"><strong>Contact:</strong> <a href="mailto:sales@amipro.me">sales@amipro.me</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -517,7 +585,8 @@
|
||||
</div>
|
||||
<div>
|
||||
<a href="fido2_top.html" class="footer-link me-4" id="footer_fido2">FIDO2 Platform</a>
|
||||
<a href="contextwizard_top.html" class="footer-link" id="footer_cw">ContextWizard</a>
|
||||
<a href="https://contextwizard.site/" class="footer-link me-4" id="footer_cw">ContextWizard</a>
|
||||
<a href="https://mcporb.ai" class="footer-link" id="footer_mcporb">MCPOrb</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
+88
-31
@@ -11,7 +11,14 @@
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title> Integration - amiPro </title>
|
||||
<title>Passkey Integration Guide - 15-Minute Setup | amiPro</title>
|
||||
<link rel="canonical" href="https://amipro.me/integration.html" />
|
||||
|
||||
<!-- Hreflang -->
|
||||
<link rel="alternate" hreflang="en" href="https://amipro.me/integration.html" />
|
||||
<link rel="alternate" hreflang="ja" href="https://amipro.me/ja/integration.html" />
|
||||
<link rel="alternate" hreflang="zh-CN" href="https://amipro.me/zh-CN/integration.html" />
|
||||
<link rel="alternate" hreflang="x-default" href="https://amipro.me/integration.html" />
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
@@ -23,7 +30,39 @@
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="the easiest to integrate Passkey cloud service" />
|
||||
<meta name="description" content="Step-by-step guide to integrate amiPro FIDO2 passkey authentication. Drop-in JavaScript SDK, device management, and session control in 15 minutes." />
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:title" content="Passkey Integration Guide - 15-Minute Setup | amiPro" />
|
||||
<meta property="og:description" content="Step-by-step guide to integrate amiPro FIDO2 passkey authentication. Drop-in JavaScript SDK, device management, and session control in 15 minutes." />
|
||||
<meta property="og:url" content="https://amipro.me/integration.html" />
|
||||
<meta property="og:site_name" content="amiPro" />
|
||||
<meta property="og:image" content="https://amipro.me/files/build.jpg" />
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Passkey Integration Guide - 15-Minute Setup | amiPro" />
|
||||
<meta name="twitter:description" content="Step-by-step guide to integrate amiPro FIDO2 passkey authentication. Drop-in JavaScript SDK, device management, and session control in 15 minutes." />
|
||||
<meta name="twitter:image" content="https://amipro.me/files/build.jpg" />
|
||||
|
||||
<!-- JSON-LD Article -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "Passkey Integration Guide - 15-Minute Setup",
|
||||
"description": "Step-by-step guide to integrate amiPro FIDO2 passkey authentication. Drop-in JavaScript SDK, device management, and session control in 15 minutes.",
|
||||
"url": "https://amipro.me/integration.html",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro",
|
||||
"url": "https://amipro.me"
|
||||
},
|
||||
"image": "https://amipro.me/files/build.jpg",
|
||||
"mainEntityOfPage": "https://amipro.me/integration.html"
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
@@ -75,164 +114,182 @@
|
||||
const i18n_messages = new Map();
|
||||
|
||||
var lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("en", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("zh-CN", "amiPro - 最易集成的Passkey云服务");
|
||||
lang_map.set("ja", "amiPro - 最も簡単に統合できるパスキー・クラウド・サービス");
|
||||
i18n_messages.set("label_welcome", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Sample site");
|
||||
lang_map.set("en", "Sample site");
|
||||
lang_map.set("zh-CN", "示例网站");
|
||||
lang_map.set("ja", "サンプルサイト");
|
||||
i18n_messages.set("label_sample", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact_cta", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Three month free trial<br>(After free registration of the management portal, all functions are free to try for three months)<br>No credit card required.");
|
||||
lang_map.set("en", "Three month free trial<br>(After free registration of the management portal, all functions are free to try for three months)<br>No credit card required.");
|
||||
lang_map.set("zh-CN", "三个月免费试用<br>(免费注册管理门户后,所有功能免费试用三个月)<br> 无需信用卡");
|
||||
lang_map.set("ja", "3ヶ月間の無料トライアル<br>(管理ポータルの無料登録後、すべての機能を3ヶ月間無料でお試しいただけます)<br> クレジットカードは不要です。");
|
||||
i18n_messages.set("btn_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "How to integrate");
|
||||
lang_map.set("en", "How to integrate");
|
||||
lang_map.set("zh-CN", "如何集成");
|
||||
lang_map.set("ja", "統合方法");
|
||||
i18n_messages.set("label_integartion_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step1: Open sample site");
|
||||
lang_map.set("en", "Step1: Open sample site");
|
||||
lang_map.set("zh-CN", "步骤1: 打开示例网站");
|
||||
lang_map.set("ja", "ステップ1: サンプルサイトを開く");
|
||||
i18n_messages.set("btn_step1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Click the following link to enter the sample website. In the following instructions you will need to refer to the source code of the sample website. <br><a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>");
|
||||
lang_map.set("en", "Click the following link to enter the sample website. In the following instructions you will need to refer to the source code of the sample website. <br><a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>");
|
||||
lang_map.set("zh-CN", "点击以下链接,进入示例网站。在以下的说明中您将需要参考示例网站的源代码。<br><a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>");
|
||||
lang_map.set("ja", "以下のリンクをクリックして、サンプルサイトに入ってください。以下の説明では、サンプルサイトのソースコードを参照する必要があります。<br><a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>");
|
||||
i18n_messages.set("info_top_step1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step2: Login page integration");
|
||||
lang_map.set("en", "Step2: Login page integration");
|
||||
lang_map.set("zh-CN", "步骤2: 登录页面集成");
|
||||
lang_map.set("ja", "ステップ2: ログインページの統合");
|
||||
i18n_messages.set("btn_step2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Reference the sample site to introduce the amiPro JavaScript SDK and call the Passkey login integration API with UI.");
|
||||
lang_map.set("en", "Reference the sample site to introduce the amiPro JavaScript SDK and call the Passkey login integration API with UI.");
|
||||
lang_map.set("zh-CN", "参考示例网站,在登录页面引入amiPro JavaScript SDK,并调用带UI的 Passkey 登录集成API。");
|
||||
lang_map.set("ja", "サンプルサイトを参考にして、amiPro JavaScript SDK を導入し、UI付きのパスキー・ログイン統合 API を呼び出します。");
|
||||
i18n_messages.set("info_top_step2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step3: Build devices management page");
|
||||
lang_map.set("en", "Step3: Build devices management page");
|
||||
lang_map.set("zh-CN", "步骤3: 构建设备管理页面");
|
||||
lang_map.set("ja", "ステップ3: デバイス管理ページの構築");
|
||||
i18n_messages.set("btn_step3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Refer to the example website, include the amiPro JavaScript SDK on the appropriate page after login, and call the device management integration API with UI.");
|
||||
lang_map.set("en", "Refer to the example website, include the amiPro JavaScript SDK on the appropriate page after login, and call the device management integration API with UI.");
|
||||
lang_map.set("zh-CN", "参考示例网站,在登录后的适当页面引入amiPro JavaScript SDK,并调用带UI的设备管理集成API。");
|
||||
lang_map.set("ja", "サンプルサイトを参考にして、ログイン後の適切なページにamiPro JavaScript SDKを導入し、UI付きのデバイス管理統合APIを呼び出します。");
|
||||
i18n_messages.set("info_top_step3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step4: Session management");
|
||||
lang_map.set("en", "Step4: Session management");
|
||||
lang_map.set("zh-CN", "步骤4: 会话管理");
|
||||
lang_map.set("ja", "ステップ4: セッション管理");
|
||||
i18n_messages.set("btn_step4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "There are two methods of session management:<br>Method 1. Use amiPro's validSession API to manage sessions. Refer to the setSessionStatus function in <a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>. <br>Method 2: Use your website's original session management, just call amiPro's logoutFido2UserSession function in your website's original session timeout processing.");
|
||||
lang_map.set("en", "There are two methods of session management:<br>Method 1. Use amiPro's validSession API to manage sessions. Refer to the setSessionStatus function in <a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>. <br>Method 2: Use your website's original session management, just call amiPro's logoutFido2UserSession function in your website's original session timeout processing.");
|
||||
lang_map.set("zh-CN", "会话管理有两种方式:<br>方式1、使用amiPro的validSession API 管理会话。参考<a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>中的setSessionStatus函数。<br>方式2、使用您的网站原有的会话管理,只需在您的网站原有的会话超时的处理中调用amiPro的logoutFido2UserSession函数。");
|
||||
lang_map.set("ja", "セッション管理は2つ方法があります:<br>方法 1: amiPro の validSession API を使用してセッションを管理します。<a href='https://sample.amipro.me/modal-demo.html' target='_blank'>https://sample.amipro.me/modal-demo.html</a>にあるsetSessionStatus関数を参考してください。 <br>方法 2: Web サイトの既存のセッション管理を使用します。Web サイトの既存のセッションのタイムアウト処理の中に、 amiPro の logoutFido2UserSession 関数を呼び出すだけで管理出来ます。");
|
||||
i18n_messages.set("info_top_step4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step5: Management Portal registration");
|
||||
lang_map.set("en", "Step5: Management Portal registration");
|
||||
lang_map.set("zh-CN", "步骤5: 管理门户注册");
|
||||
lang_map.set("ja", "ステップ5: 管理ポータル登録");
|
||||
i18n_messages.set("btn_step5", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Use your email address to register amiPro management portal for free:<br>1. Please use the PC and other devices you plan to manage amiPro and open the following link with your browser. <br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2. In the management portal, enter your email address and click the [Create Account/Add new device] link. <br>3. Use the same browser to open the link in the email you received and add the device<br>4. Click [Go to top page] and use the added device [Passkey Login].<br><img src='files/portal_reg_en.jpg' width=50%>");
|
||||
lang_map.set("en", "Use your email address to register amiPro management portal for free:<br>1. Please use the PC and other devices you plan to manage amiPro and open the following link with your browser. <br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2. In the management portal, enter your email address and click the [Create Account/Add new device] link. <br>3. Use the same browser to open the link in the email you received and add the device<br>4. Click [Go to top page] and use the added device [Passkey Login].<br><img src='files/portal_reg_en.jpg' width=50%>");
|
||||
lang_map.set("zh-CN", "使用您的邮件地址免费注册amiPro管理门户: <br>1、请用您准备管理amiPro的PC等设备及其浏览器打开以下链接。<br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2、在管理门户中,输入您的邮件地址并点击【创建新账号或添加新设备】链接。<br>3、使用相同的浏览器打开您收到的邮件中的链接并添加设备<br>4、点击【去首页】,使用添加的设备【Passkey登录】进入管理门户。<br><img src='files/portal_reg_jp.jpg' width=50%>");
|
||||
lang_map.set("ja", "電子メール アドレスを使用して、amiPro 管理ポータルに無料でサインアップします: <br>1. amiPro を管理する予定の PC およびその他のデバイスを使用し、ブラウザで次のリンクを開いてください。 <br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2. 管理ポータルで、電子メール アドレスを入力し、[アカウントを作成・新しいデバイスを追加] リンクをクリックしてください。 <br>3. 受信した電子メールにあるURLを同じブラウザで開いてデバイスを追加してください。<br>4. [トップページへ] をクリックして、登録したデバイスで[パスキーでログイン]でログインして、トップページへ。<br><img src='files/portal_reg_jp.jpg' width=50%>");
|
||||
i18n_messages.set("info_top_step5", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step6: FIDO2 server settings");
|
||||
lang_map.set("en", "Step6: FIDO2 server settings");
|
||||
lang_map.set("zh-CN", "步骤6: FIDO2服务器设置");
|
||||
lang_map.set("ja", "ステップ6: FIDO2 サーバー設定");
|
||||
i18n_messages.set("btn_step6", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Advanced Custom Deployment");
|
||||
lang_map.set("en", "Advanced Custom Deployment");
|
||||
lang_map.set("zh-CN", "深入定制部署");
|
||||
lang_map.set("ja", "高度なカスタムデプロイメント");
|
||||
i18n_messages.set("label_custom_deploy_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Web Component integration, custom UI, and backend API integration for advanced deployment options");
|
||||
lang_map.set("en", "Web Component integration, custom UI, and backend API integration for advanced deployment options");
|
||||
lang_map.set("zh-CN", "Web Component 集成、自定义 UI 和后端 API 集成等高级部署选项");
|
||||
lang_map.set("ja", "高度なデプロイメントオプションについては、Web Component統合、カスタムUI、バックエンドAPI統合");
|
||||
i18n_messages.set("label_custom_deploy_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Advanced Custom Deployment →");
|
||||
lang_map.set("en", "Advanced Custom Deployment →");
|
||||
lang_map.set("zh-CN", "深入定制部署 →");
|
||||
lang_map.set("ja", "高度なカスタムデプロイメント →");
|
||||
i18n_messages.set("btn_custom_deploy", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Click [Settings] on the Portal left menu, and then click [Add] on the right page. Enter your website domain name (the port number cannot be included), and note that your website needs to use the HTTPS protocol. <br>【[Device Registration Page] is a link to the page where device management was integrated in step 3. <br>Other settings can be left as default. Click [Submit] to complete the settings.<br><img src='files/portal_conf_en.jpg' width=80%>");
|
||||
lang_map.set("en", "Click [Settings] on the Portal left menu, and then click [Add] on the right page. Enter your website domain name (the port number cannot be included), and note that your website needs to use the HTTPS protocol. <br>【[Device Registration Page] is a link to the page where device management was integrated in step 3. <br>Other settings can be left as default. Click [Submit] to complete the settings.<br><img src='files/portal_conf_en.jpg' width=80%>");
|
||||
lang_map.set("zh-CN", "点击管理门户左侧菜单中的【设定】,之后点击右侧页面中的【添加】。输入您的网站域名(不能包含端口号),注意您的网站需要使用HTTPS协议。<br>【[设备注册页面] 是在步骤 3 中集成设备管理功能的页面链接。<br>其他设置可以保留默认值。最后需要点击【提 交】完成设定。<br><img src='files/portal_conf_jp.jpg' width=80%>");
|
||||
lang_map.set("ja", "管理ポータル左メニューの[設定]をクリックし、右ページの[追加]をクリックしてください。 Web サイトのドメイン名を入力します (ポート番号は含めることはできません)。Web サイトでは HTTPS プロトコルを使用する必要があることに注意してください。 <br>【デバイス登録ページ】は手順3でデバイス管理を統合したページへのリンクです。<br>そのたの設定はデフォルトでよい、最後は送信をクリックして設定完了<br><img src='files/portal_conf_jp.jpg' width=80%>");
|
||||
i18n_messages.set("info_top_step6", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Ship Passkeys in 15 Minutes");
|
||||
lang_map.set("en", "Ship Passkeys in 15 Minutes");
|
||||
lang_map.set("zh-CN", "在15分钟内部署Passkey");
|
||||
lang_map.set("ja", "15分でパスキーを導入");
|
||||
i18n_messages.set("hero_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Follow the production-proven playbook: explore the sample site, drop in the JavaScript SDK, fine-tune device management, and configure the amiPro portal for your domains.");
|
||||
lang_map.set("en", "Follow the production-proven playbook: explore the sample site, drop in the JavaScript SDK, fine-tune device management, and configure the amiPro portal for your domains.");
|
||||
lang_map.set("zh-CN", "遵循已在生产中验证的流程:查看示例站点,嵌入 JavaScript SDK,微调设备管理,并为您的域配置 amiPro 门户。");
|
||||
lang_map.set("ja", "本番で実績のある手順に従ってください: サンプルサイトを確認し、JavaScript SDK を導入し、デバイス管理を調整し、amiPro ポータルをドメインに対して設定します。");
|
||||
i18n_messages.set("hero_lead", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Browser + App SDK");
|
||||
lang_map.set("en", "Browser + App SDK");
|
||||
lang_map.set("zh-CN", "浏览器 + 应用 SDK");
|
||||
lang_map.set("ja", "ブラウザ + アプリ SDK");
|
||||
i18n_messages.set("hero_chip_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Recovery-ready");
|
||||
lang_map.set("en", "Recovery-ready");
|
||||
lang_map.set("zh-CN", "支持恢复");
|
||||
lang_map.set("ja", "リカバリ対応");
|
||||
i18n_messages.set("hero_chip_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Session control");
|
||||
lang_map.set("en", "Session control");
|
||||
lang_map.set("zh-CN", "会话控制");
|
||||
lang_map.set("ja", "セッション制御");
|
||||
i18n_messages.set("hero_chip_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Need white-glove integration help?");
|
||||
lang_map.set("ja", "手厚いインテグレーションサポートが必要ですか?");
|
||||
i18n_messages.set("cta_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Share your stack and we will tailor the SDK sample for you.");
|
||||
lang_map.set("ja", "お使いのスタックをお教えください。SDKサンプルをカスタマイズいたします。");
|
||||
i18n_messages.set("cta_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Talk to us");
|
||||
lang_map.set("ja", "お問い合わせ");
|
||||
i18n_messages.set("cta_btn", lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages)
|
||||
initRevealAnimations()
|
||||
if (typeof createLanguageSelector === 'function') {
|
||||
document.body.appendChild(createLanguageSelector());
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -331,10 +388,10 @@
|
||||
|
||||
<div class="cta-banner" data-animate>
|
||||
<div>
|
||||
<h4>Need white-glove integration help?</h4>
|
||||
<p style="margin: 0; color: var(--text-muted);">Share your stack and we will tailor the SDK sample for you.</p>
|
||||
<h4 id="cta_title">Need white-glove integration help?</h4>
|
||||
<p style="margin: 0; color: var(--text-muted);" id="cta_desc">Share your stack and we will tailor the SDK sample for you.</p>
|
||||
</div>
|
||||
<a href="mailto:sales@amipro.me?subject=amiPro%20integration" class="btn btn-primary">Talk to us</a>
|
||||
<a href="mailto:sales@amipro.me?subject=amiPro%20integration" class="btn btn-primary" id="cta_btn">Talk to us</a>
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
|
||||
|
||||
+88
-29
@@ -11,7 +11,50 @@
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title> Integration - amiPro </title>
|
||||
<title>Advanced Passkey Integration - Web Component & Backend API | amiPro</title>
|
||||
|
||||
<link rel="canonical" href="https://amipro.me/integration_api.html" />
|
||||
<link rel="alternate" hreflang="en" href="https://amipro.me/integration_api.html" />
|
||||
<link rel="alternate" hreflang="ja" href="https://amipro.me/ja/integration_api.html" />
|
||||
<link rel="alternate" hreflang="zh-CN" href="https://amipro.me/zh-CN/integration_api.html" />
|
||||
<link rel="alternate" hreflang="x-default" href="https://amipro.me/integration_api.html" />
|
||||
|
||||
<meta name="description" content="Advanced FIDO2 passkey integration: Web Component embedding, custom UI, backend API integration, and session management for enterprise deployments." />
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:type" content="article" />
|
||||
<meta property="og:title" content="Advanced Passkey Integration - Web Component & Backend API | amiPro" />
|
||||
<meta property="og:description" content="Advanced FIDO2 passkey integration: Web Component embedding, custom UI, backend API integration, and session management for enterprise deployments." />
|
||||
<meta property="og:url" content="https://amipro.me/integration_api.html" />
|
||||
<meta property="og:site_name" content="amiPro" />
|
||||
<meta property="og:image" content="https://amipro.me/files/build.jpg" />
|
||||
<meta property="og:locale" content="en_US" />
|
||||
<meta property="og:locale:alternate" content="ja_JP" />
|
||||
<meta property="og:locale:alternate" content="zh_CN" />
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="Advanced Passkey Integration - Web Component & Backend API | amiPro" />
|
||||
<meta name="twitter:description" content="Advanced FIDO2 passkey integration: Web Component embedding, custom UI, backend API integration, and session management for enterprise deployments." />
|
||||
<meta name="twitter:image" content="https://amipro.me/files/build.jpg" />
|
||||
|
||||
<!-- JSON-LD Article Schema -->
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "Advanced Passkey Integration - Web Component & Backend API",
|
||||
"description": "Advanced FIDO2 passkey integration: Web Component embedding, custom UI, backend API integration, and session management for enterprise deployments.",
|
||||
"url": "https://amipro.me/integration_api.html",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro",
|
||||
"url": "https://amipro.me"
|
||||
},
|
||||
"image": "https://amipro.me/files/build.jpg",
|
||||
"inLanguage": ["en", "ja", "zh-CN"]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
@@ -23,8 +66,6 @@
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="the easiest to integrate Passkey cloud service" />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
|
||||
@@ -75,61 +116,61 @@
|
||||
const i18n_messages = new Map();
|
||||
|
||||
var lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("en", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("zh-CN", "amiPro - 最易集成的Passkey云服务");
|
||||
lang_map.set("ja", "amiPro - 最も簡単に統合できるパスキー・クラウド・サービス");
|
||||
i18n_messages.set("label_welcome", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Sample site");
|
||||
lang_map.set("en", "Sample site");
|
||||
lang_map.set("zh-CN", "示例网站");
|
||||
lang_map.set("ja", "サンプルサイト");
|
||||
i18n_messages.set("label_sample", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact_cta", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Three month free trial<br>(After free registration of the management portal, all functions are free to try for three months)<br>No credit card required.");
|
||||
lang_map.set("en", "Three month free trial<br>(After free registration of the management portal, all functions are free to try for three months)<br>No credit card required.");
|
||||
lang_map.set("zh-CN", "三个月免费试用<br>(免费注册管理门户后,所有功能免费试用三个月)<br> 无需信用卡");
|
||||
lang_map.set("ja", "3ヶ月間の無料トライアル<br>(管理ポータルの無料登録後、すべての機能を3ヶ月間無料でお試しいただけます)<br> クレジットカードは不要です。");
|
||||
i18n_messages.set("btn_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "How to integrate");
|
||||
lang_map.set("en", "How to integrate");
|
||||
lang_map.set("zh-CN", "如何集成");
|
||||
lang_map.set("ja", "統合方法");
|
||||
i18n_messages.set("label_integartion_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step1: Open sample site");
|
||||
lang_map.set("en", "Step1: Open sample site");
|
||||
lang_map.set("zh-CN", "步骤1: 打开示例网站");
|
||||
lang_map.set("ja", "ステップ1: サンプルサイトを開く");
|
||||
i18n_messages.set("btn_step1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Click the following link to enter the sample website, enter any user name and password, and log in to the website. In the following instructions you will need to refer to the source code of the sample website. <br><a href='https://sample.amipro.me/' target='_blank'>https://sample.amipro.me</a>");
|
||||
lang_map.set("en", "Click the following link to enter the sample website, enter any user name and password, and log in to the website. In the following instructions you will need to refer to the source code of the sample website. <br><a href='https://sample.amipro.me/' target='_blank'>https://sample.amipro.me</a>");
|
||||
lang_map.set("zh-CN", "点击以下链接,进入示例网站,输入任意用户名和密码,登录网站。在以下的说明中您将需要参考示例网站的源代码。<br><a href='https://sample.amipro.me/' target='_blank'>https://sample.amipro.me</a>");
|
||||
lang_map.set("ja", "以下のリンクをクリックして、サンプルサイトに入り、任意のユーザー名とパスワードを入力して、サイトにログインしてください。以下の説明では、サンプルサイトのソースコードを参照する必要があります。<br><a href='https://sample.amipro.me/' target='_blank'>https://sample.amipro.me</a>");
|
||||
i18n_messages.set("info_top_step1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step2: Login page integration");
|
||||
lang_map.set("en", "Step2: Login page integration");
|
||||
lang_map.set("zh-CN", "步骤2: 登录页面集成");
|
||||
lang_map.set("ja", "ステップ2: ログインページの統合");
|
||||
i18n_messages.set("btn_step2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Use the amiPro JavaScript SDK to add passkey sign-in to your website's login page. <br>1. Download the amiPro SDK. <br><a href='https://sample.amipro.me/files/dfido2-lib.js' target='_blank'>dfido2-lib.js</a><br><a href='https://sample.amipro.me/files/amipro_utils.js' target='_blank'>amipro_utils.js</a><br>"+
|
||||
lang_map.set("en", "Use the amiPro JavaScript SDK to add passkey sign-in to your website's login page. <br>1. Download the amiPro SDK. <br><a href='https://sample.amipro.me/files/dfido2-lib.js' target='_blank'>dfido2-lib.js</a><br><a href='https://sample.amipro.me/files/amipro_utils.js' target='_blank'>amipro_utils.js</a><br>"+
|
||||
"2. In the head section, import the SDK with script tags specifying src.<br>3. Refer to the window.onload code in the sample site's head and add passkey login to your website's login page.<br><a href='https://sample.amipro.me/login.html' target='_blank'>https://sample.amipro.me/login.html</a>");
|
||||
lang_map.set("zh-CN", "使用 amiPro JavaScript SDK 为网站登录页面集成 Passkey 登录。<br>1. 下载 amiPro SDK。<br><a href='https://sample.amipro.me/files/dfido2-lib.js' target='_blank'>dfido2-lib.js</a><br><a href='https://sample.amipro.me/files/amipro_utils.js' target='_blank'>amipro_utils.js</a><br>"+
|
||||
"2. 在head部分使用带 src 的 script 标签引入 SDK。<br>3. 参考示例站点head中 window.onload 周边的代码,将 Passkey 登录集成到网站的登录页面。<br><a href='https://sample.amipro.me/login.html' target='_blank'>https://sample.amipro.me/login.html</a>");
|
||||
@@ -138,86 +179,104 @@
|
||||
i18n_messages.set("info_top_step2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step3: Build devices management page");
|
||||
lang_map.set("en", "Step3: Build devices management page");
|
||||
lang_map.set("zh-CN", "步骤3: 构建设备管理页面");
|
||||
lang_map.set("ja", "ステップ3: デバイス管理ページの構築");
|
||||
i18n_messages.set("btn_step3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "The device management page provides two functions:<br>1. When the user loses or replaces a device such as a registered mobile phone, use the recovery link generated by the management portal to replace the device. <br>2. Users add and delete registered devices. <br>Please refer to the source code of the sample site to integrate the device management page into your website. <br><a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a><br> The code surrounding reg_session_id is the recovery link processing code.");
|
||||
lang_map.set("en", "The device management page provides two functions:<br>1. When the user loses or replaces a device such as a registered mobile phone, use the recovery link generated by the management portal to replace the device. <br>2. Users add and delete registered devices. <br>Please refer to the source code of the sample site to integrate the device management page into your website. <br><a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a><br> The code surrounding reg_session_id is the recovery link processing code.");
|
||||
lang_map.set("zh-CN", "设备管理页面提供两大功能:<br>1、当用户丢失或更换注册过的手机等设备时,使用管理门户生成的恢复链接替换设备。<br>2、用户追加以及删除注册的设备。<br>请参考示例站点的源代码,将设备管理页面集成到网站。<br><a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a><br>其中reg_session_id周边的代码为恢复链接处理代码。");
|
||||
lang_map.set("ja", "デバイス管理ページは2つ機能があります:<br>1. ユーザーが登録済みの携帯電話などのデバイスを紛失または交換した場合、管理ポータルによって生成されたリカバリー・リンクを使用してデバイスを更新する機能。 <br>2. ユーザーはデバイスを追加および削除する機能。 <br>デバイス管理ページを Web サイトに統合するには、サンプル サイトのソース コードを参照してください。 <br><a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a><br>この中に reg_session_id 周辺のコードはリカバリ・リンクの処理コードです。");
|
||||
i18n_messages.set("info_top_step3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step4: Session management");
|
||||
lang_map.set("en", "Step4: Session management");
|
||||
lang_map.set("zh-CN", "步骤4: 会话管理");
|
||||
lang_map.set("ja", "ステップ4: セッション管理");
|
||||
i18n_messages.set("btn_step4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "There are two methods of session management:<br>Method 1. Use amiPro's validSession API to manage sessions. Refer to the setSessionStatus function in <a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a>. <br>Method 2: Use your website's original session management, just call amiPro's logoutFido2UserSession function in your website's original session timeout processing.");
|
||||
lang_map.set("en", "There are two methods of session management:<br>Method 1. Use amiPro's validSession API to manage sessions. Refer to the setSessionStatus function in <a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a>. <br>Method 2: Use your website's original session management, just call amiPro's logoutFido2UserSession function in your website's original session timeout processing.");
|
||||
lang_map.set("zh-CN", "会话管理有两种方式:<br>方式1、使用amiPro的validSession API 管理会话。参考<a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a>中的setSessionStatus函数。<br>方式2、使用您的网站原有的会话管理,只需在您的网站原有的会话超时的处理中调用amiPro的logoutFido2UserSession函数。");
|
||||
lang_map.set("ja", "セッション管理は2つ方法があります:<br>方法 1: amiPro の validSession API を使用してセッションを管理します。<a href='https://sample.amipro.me/devices.html' target='_blank'>https://sample.amipro.me/devices.html</a>にあるsetSessionStatus関数を参考してください。 <br>方法 2: Web サイトの既存のセッション管理を使用します。Web サイトの既存のセッションのタイムアウト処理の中に、 amiPro の logoutFido2UserSession 関数を呼び出すだけで管理出来ます。");
|
||||
i18n_messages.set("info_top_step4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step5: Management Portal registration");
|
||||
lang_map.set("en", "Step5: Management Portal registration");
|
||||
lang_map.set("zh-CN", "步骤5: 管理门户注册");
|
||||
lang_map.set("ja", "ステップ5: 管理ポータル登録");
|
||||
i18n_messages.set("btn_step5", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Use your email address to register amiPro management portal for free:<br>1. Please use the PC and other devices you plan to manage amiPro and open the following link with your browser. <br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2. In the management portal, enter your email address and click the [Create Account/Add new device] link. <br>3. Use the same browser to open the link in the email you received and add the device<br>4. Click [Go to top page] and use the added device [Passkey Login].<br><img src='files/portal_reg_en.jpg' width=50%>");
|
||||
lang_map.set("en", "Use your email address to register amiPro management portal for free:<br>1. Please use the PC and other devices you plan to manage amiPro and open the following link with your browser. <br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2. In the management portal, enter your email address and click the [Create Account/Add new device] link. <br>3. Use the same browser to open the link in the email you received and add the device<br>4. Click [Go to top page] and use the added device [Passkey Login].<br><img src='files/portal_reg_en.jpg' width=50%>");
|
||||
lang_map.set("zh-CN", "使用您的邮件地址免费注册amiPro管理门户: <br>1、请用您准备管理amiPro的PC等设备及其浏览器打开以下链接。<br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2、在管理门户中,输入您的邮件地址并点击【创建新账号或添加新设备】链接。<br>3、使用相同的浏览器打开您收到的邮件中的链接并添加设备<br>4、点击【去首页】,使用添加的设备【Passkey登录】进入管理门户。<br><img src='files/portal_reg_jp.jpg' width=50%>");
|
||||
lang_map.set("ja", "電子メール アドレスを使用して、amiPro 管理ポータルに無料でサインアップします: <br>1. amiPro を管理する予定の PC およびその他のデバイスを使用し、ブラウザで次のリンクを開いてください。 <br><a href='https://portal.amipro.me/'>https://portal.amipro.me</a><br>2. 管理ポータルで、電子メール アドレスを入力し、[アカウントを作成・新しいデバイスを追加] リンクをクリックしてください。 <br>3. 受信した電子メールにあるURLを同じブラウザで開いてデバイスを追加してください。<br>4. [トップページへ] をクリックして、登録したデバイスで[パスキーでログイン]でログインして、トップページへ。<br><img src='files/portal_reg_jp.jpg' width=50%>");
|
||||
i18n_messages.set("info_top_step5", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Step6: FIDO2 server settings");
|
||||
lang_map.set("en", "Step6: FIDO2 server settings");
|
||||
lang_map.set("zh-CN", "步骤6: FIDO2服务器设置");
|
||||
lang_map.set("ja", "ステップ6: FIDO2 サーバー設定");
|
||||
i18n_messages.set("btn_step6", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Click [Settings] on the Portal left menu, and then click [Add] on the right page. Enter your website domain name (the port number cannot be included), and note that your website needs to use the HTTPS protocol. <br>【Device registration page】is the link to the device management page built by step 3.<br>Click [Submit] to complete the settings.<br><img src='files/portal_conf_en.jpg' width=80%>");
|
||||
lang_map.set("en", "Click [Settings] on the Portal left menu, and then click [Add] on the right page. Enter your website domain name (the port number cannot be included), and note that your website needs to use the HTTPS protocol. <br>【Device registration page】is the link to the device management page built by step 3.<br>Click [Submit] to complete the settings.<br><img src='files/portal_conf_en.jpg' width=80%>");
|
||||
lang_map.set("zh-CN", "点击管理门户左侧菜单中的【设定】,之后点击右侧页面中的【添加】。输入您的网站域名(不能包含端口号),注意您的网站需要使用HTTPS协议。<br>【设备注册页面】为步骤3构建的设备管理页面的链接。<br>最后需要点击【提 交】完成设定。<br><img src='files/portal_conf_jp.jpg' width=80%>");
|
||||
lang_map.set("ja", "管理ポータル左メニューの[設定]をクリックし、右ページの[追加]をクリックしてください。 Web サイトのドメイン名を入力します (ポート番号は含めることはできません)。Web サイトでは HTTPS プロトコルを使用する必要があることに注意してください。 <br>【デバイス登録ページ】は手順3で作成したデバイス管理ページへのリンクです。<br>最後は送信をクリックして設定完了<br><img src='files/portal_conf_jp.jpg' width=80%>");
|
||||
i18n_messages.set("info_top_step6", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Deeply customize and deploy Passkey");
|
||||
lang_map.set("en", "Deeply customize and deploy Passkey");
|
||||
lang_map.set("zh-CN", "更加深入定制部署Passkey");
|
||||
lang_map.set("ja", "さらにカスタマイズしてパスキーを展開");
|
||||
i18n_messages.set("hero_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Follow the production-proven playbook: explore the sample site, drop in the JavaScript SDK, fine-tune device management, and configure the amiPro portal for your domains.");
|
||||
lang_map.set("en", "Follow the production-proven playbook: explore the sample site, drop in the JavaScript SDK, fine-tune device management, and configure the amiPro portal for your domains.");
|
||||
lang_map.set("zh-CN", "遵循已在生产中验证的流程:查看示例站点,嵌入 JavaScript SDK,微调设备管理,并为您的域配置 amiPro 门户。");
|
||||
lang_map.set("ja", "本番で実績のある手順に従ってください: サンプルサイトを確認し、JavaScript SDK を導入し、デバイス管理を調整し、amiPro ポータルをドメインに対して設定します。");
|
||||
i18n_messages.set("hero_lead", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Browser + App SDK");
|
||||
lang_map.set("en", "Browser + App SDK");
|
||||
lang_map.set("zh-CN", "浏览器 + 应用 SDK");
|
||||
lang_map.set("ja", "ブラウザ + アプリ SDK");
|
||||
i18n_messages.set("hero_chip_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Recovery-ready");
|
||||
lang_map.set("en", "Recovery-ready");
|
||||
lang_map.set("zh-CN", "支持恢复");
|
||||
lang_map.set("ja", "リカバリ対応");
|
||||
i18n_messages.set("hero_chip_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Session control");
|
||||
lang_map.set("en", "Session control");
|
||||
lang_map.set("zh-CN", "会话控制");
|
||||
lang_map.set("ja", "セッション制御");
|
||||
i18n_messages.set("hero_chip_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Need white-glove integration help?");
|
||||
lang_map.set("ja", "手厚いインテグレーションサポートが必要ですか?");
|
||||
i18n_messages.set("cta_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Share your stack and we will tailor the SDK sample for you.");
|
||||
lang_map.set("ja", "お使いのスタックをお教えください。SDKサンプルをカスタマイズいたします。");
|
||||
i18n_messages.set("cta_desc", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Talk to us");
|
||||
lang_map.set("ja", "お問い合わせ");
|
||||
i18n_messages.set("cta_btn", lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages)
|
||||
initRevealAnimations()
|
||||
if (typeof createLanguageSelector === 'function') {
|
||||
document.body.appendChild(createLanguageSelector());
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -310,10 +369,10 @@
|
||||
|
||||
<div class="cta-banner" data-animate>
|
||||
<div>
|
||||
<h4>Need white-glove integration help?</h4>
|
||||
<p style="margin: 0; color: var(--text-muted);">Share your stack and we will tailor the SDK sample for you.</p>
|
||||
<h4 id="cta_title">Need white-glove integration help?</h4>
|
||||
<p style="margin: 0; color: var(--text-muted);" id="cta_desc">Share your stack and we will tailor the SDK sample for you.</p>
|
||||
</div>
|
||||
<a href="mailto:sales@amipro.me?subject=amiPro%20integration" class="btn btn-primary">Talk to us</a>
|
||||
<a href="mailto:sales@amipro.me?subject=amiPro%20integration" class="btn btn-primary" id="cta_btn">Talk to us</a>
|
||||
</div>
|
||||
<!-- / Content -->
|
||||
|
||||
|
||||
@@ -1,25 +1,29 @@
|
||||
# amiPro
|
||||
|
||||
> amiPro, LLC builds trustworthy passkey infrastructure and privacy-first AI tooling. Founded in 2023, based in Tokyo, Japan.
|
||||
> amiPro, LLC builds trustworthy passkey infrastructure and privacy-first AI tooling. Founded in 2023, based in Tokyo, Japan. We provide FIDO2-certified passwordless authentication and local-first AI conversation management.
|
||||
|
||||
## Products
|
||||
|
||||
- [Passkey Hub](https://amipro.me/fido2_top.html): FIDO2-certified passwordless authentication cloud with open-source server, drop-in SDKs (JavaScript, iOS, Android), and a management portal for registration, recovery, and analytics.
|
||||
- [ContextWizard](https://amipro.me/contextwizard_top.html): Local-first browser extension that captures, organizes, and encrypts AI conversations across 10+ platforms including ChatGPT, Claude, Gemini, and Perplexity.
|
||||
- [Passkey Hub](https://amipro.me/fido2_top.html): FIDO2-certified passwordless authentication cloud with open-source server, drop-in SDKs (JavaScript, iOS, Android), and a management portal for registration, recovery, and analytics. Pricing is per active user per month.
|
||||
- [ContextWizard](https://contextwizard.site/): Local-first browser extension that captures, organizes, and encrypts AI conversations across 10+ platforms including ChatGPT, Claude, Gemini, and Perplexity. Free and open-source.
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Passkey Integration Guide](https://amipro.me/integration.html): Technical documentation for integrating FIDO2 passkey authentication.
|
||||
- [Passkey Overview](https://amipro.me/passkey.html): What passkeys are and how they work.
|
||||
- [Portal](https://portal.amipro.me/): Management dashboard for passkey deployment and analytics.
|
||||
- [Passkey Integration Guide](https://amipro.me/integration.html): Step-by-step guide to integrate FIDO2 passkey authentication using the JavaScript SDK.
|
||||
- [Advanced Integration](https://amipro.me/integration_api.html): Web Component integration, custom UI, and backend API integration for enterprise deployments.
|
||||
- [Passkey Overview](https://amipro.me/passkey.html): What passkeys are, how FIDO2 works, and why they matter for security.
|
||||
- [Passkey Benefits](https://amipro.me/merits.html): How passkey authentication improves conversion rates, reduces support costs, and prevents phishing.
|
||||
- [Portal](https://portal.amipro.me/): Management dashboard for passkey deployment, analytics, and device management.
|
||||
- [Sample Implementation](https://sample.amipro.me/): Live demo of passkey authentication flow.
|
||||
|
||||
## Company
|
||||
|
||||
- [Homepage](https://amipro.me/): Company overview, product lineup, and contact information.
|
||||
- Contact: sales@amipro.me
|
||||
- Location: Shibuya-ku, Tokyo, Japan
|
||||
|
||||
## Optional
|
||||
|
||||
- [ContextWizard on Chrome Web Store](https://chromewebstore.google.com/detail/contextwizard/lmhnmmedgmnfggecdalkancllnekofnb): Install the ContextWizard Chrome extension.
|
||||
- [ContextWizard on Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/contextwizard/nknoacgaapoeboehlgelolgbifgcimli): Install the ContextWizard Edge extension.
|
||||
- [ContextWizard Privacy Policy](https://amipro.me/contextwizard_privacy_policy.html): Privacy policy for ContextWizard extension.
|
||||
|
||||
+158
-21
@@ -11,7 +11,87 @@
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title> Passkeys - amiPro </title>
|
||||
<title>Passkey Benefits - Security, Conversion & Cost Savings | amiPro</title>
|
||||
|
||||
<link rel="canonical" href="https://amipro.me/merits.html" />
|
||||
|
||||
<link rel="alternate" hreflang="en" href="https://amipro.me/merits.html" />
|
||||
<link rel="alternate" hreflang="ja" href="https://amipro.me/ja/merits.html" />
|
||||
<link rel="alternate" hreflang="zh-CN" href="https://amipro.me/zh-CN/merits.html" />
|
||||
<link rel="alternate" hreflang="x-default" href="https://amipro.me/merits.html" />
|
||||
|
||||
<meta name="description" content="Passkey authentication reduces phishing by 99.9%, boosts conversion rates, and cuts support costs by 75%. Learn how amiPro's FIDO2-certified platform delivers measurable ROI." />
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Passkey Benefits - Security, Conversion & Cost Savings | amiPro" />
|
||||
<meta property="og:description" content="Passkey authentication reduces phishing by 99.9%, boosts conversion rates, and cuts support costs by 75%. Learn how amiPro's FIDO2-certified platform delivers measurable ROI." />
|
||||
<meta property="og:url" content="https://amipro.me/merits.html" />
|
||||
<meta property="og:site_name" content="amiPro" />
|
||||
<meta property="og:image" content="https://amipro.me/files/YubicoResearch.jpg" />
|
||||
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Passkey Benefits - Security, Conversion & Cost Savings | amiPro" />
|
||||
<meta name="twitter:description" content="Passkey authentication reduces phishing by 99.9%, boosts conversion rates, and cuts support costs by 75%. Learn how amiPro's FIDO2-certified platform delivers measurable ROI." />
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "Passkey Benefits - Security, Conversion & Cost Savings",
|
||||
"description": "Passkey authentication reduces phishing by 99.9%, boosts conversion rates, and cuts support costs by 75%. Learn how amiPro's FIDO2-certified platform delivers measurable ROI.",
|
||||
"url": "https://amipro.me/merits.html",
|
||||
"datePublished": "2025-01-01T00:00:00Z",
|
||||
"dateModified": "2025-06-21T00:00:00Z",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "amiPro Engineering"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How much does passkey authentication reduce phishing?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "According to industry research, passkey authentication reduces phishing and credential theft by 99.9%. Passkeys are bound to the legitimate website domain, making them inherently resistant to phishing attacks that target passwords."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "What is the ROI of implementing passkeys?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Research shows a 203% ROI over 3 years for passkey implementation. Benefits include reduced phishing incidents, lower help desk costs (75% reduction in password reset tickets by year 3), and improved conversion rates from faster sign-ins."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How do passkeys improve website conversion rates?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Passkeys improve conversion rates by eliminating password friction. Users sign in with a single biometric gesture (fingerprint or face) instead of typing passwords. This reduces sign-in abandonment and creates a smoother user experience, particularly on mobile devices."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How much can passkeys reduce support costs?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Passkeys can reduce help desk support costs by up to 75% by year 3. Since passkeys eliminate password resets—one of the most common support requests—organizations see significant reductions in support ticket volume and associated costs."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
@@ -23,7 +103,7 @@
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="the easiest to integrate Passkey cloud service" />
|
||||
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
@@ -75,37 +155,37 @@
|
||||
const i18n_messages = new Map();
|
||||
|
||||
var lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("en", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("zh-CN", "amiPro - 最易集成的Passkey云服务");
|
||||
lang_map.set("ja", "amiPro - 最も簡単に統合できるパスキー・クラウド・サービス");
|
||||
i18n_messages.set("label_welcome", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Management Portal");
|
||||
lang_map.set("en", "Management Portal");
|
||||
lang_map.set("zh-CN", "管理门户");
|
||||
lang_map.set("ja", "管理ポータル");
|
||||
i18n_messages.set("label_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us(sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us(sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us(sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us(sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact_cta", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Higher security");
|
||||
lang_map.set("en", "Higher security");
|
||||
lang_map.set("zh-CN", "更高的安全性");
|
||||
lang_map.set("ja", "より高いセキュリティ");
|
||||
i18n_messages.set("info_title_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey authentication provides higher security than password-based authentication through stronger authentication methods, risk elimination, and phishing attack prevention.<br>* <b>Stronger authentication methods</b>: Passwords are subject to the risk of being guessed or stolen by others. In contrast, Passkey authentication uses stronger authentication factors such as biometrics (fingerprint, face recognition) or hardware keys (security keys, smart cards), which can better protect users' personal information from unauthorized access.<br>"+
|
||||
lang_map.set("en", "Passkey authentication provides higher security than password-based authentication through stronger authentication methods, risk elimination, and phishing attack prevention.<br>* <b>Stronger authentication methods</b>: Passwords are subject to the risk of being guessed or stolen by others. In contrast, Passkey authentication uses stronger authentication factors such as biometrics (fingerprint, face recognition) or hardware keys (security keys, smart cards), which can better protect users' personal information from unauthorized access.<br>"+
|
||||
"* <b>Elimination of password risks</b>: Passwords need to be selected and managed by users. However, in many cases, users do not choose strong passwords and tend to use the same password for multiple services. This exposes the risk that if a password is leaked, many accounts may be compromised. Passkey authentication eliminates such risks.<br>"+
|
||||
"* <b>Countermeasures against phishing</b>: Phishing attacks are fraudulent methods that attempt to obtain passwords from users using fake websites or emails. With Passkey authentication, users do not need to enter passwords to authenticate, so they are less likely to be targeted by phishing attacks.");
|
||||
lang_map.set("zh-CN", "Passkey认证通过更强的认证方式、风险排除、防止钓鱼攻击等,提供比基于密码的认证更高的安全性。<br>* <b>更强的认证方式</b>:密码容易被他人猜测或盗取。相比之下,Passkey认证使用生物特征(指纹、面部识别)或硬件密钥(安全密钥、智能卡)等更强的认证因素,可以更好地保护用户的个人信息免受未经授权的访问。<br>"+
|
||||
@@ -117,13 +197,13 @@
|
||||
i18n_messages.set("info_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Increase website value");
|
||||
lang_map.set("en", "Increase website value");
|
||||
lang_map.set("zh-CN", "网站价值的提高");
|
||||
lang_map.set("ja", "ウェブサイトの価値向上");
|
||||
i18n_messages.set("info_title_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey authentication can increase the value of a website through factors such as convenience, security, account protection, and user satisfaction.<br>* <b>Improved convenience</b>: Passkey authentication eliminates the hassle of users remembering or entering passwords. Instead, authentication can be done with simple means such as biometrics (fingerprint, face recognition) or hardware keys (security keys, smart cards). This improves the user experience and increases the convenience of the website.<br>"+
|
||||
lang_map.set("en", "Passkey authentication can increase the value of a website through factors such as convenience, security, account protection, and user satisfaction.<br>* <b>Improved convenience</b>: Passkey authentication eliminates the hassle of users remembering or entering passwords. Instead, authentication can be done with simple means such as biometrics (fingerprint, face recognition) or hardware keys (security keys, smart cards). This improves the user experience and increases the convenience of the website.<br>"+
|
||||
"* <b>Enhanced security</b>: Passkey authentication enhances the security of a website by using stronger authentication factors. Biometrics and hardware keys are more complex and less likely to be stolen than passwords, and are also resistant to phishing attacks. This improves the security level of the website and increases user trust.<br>"+
|
||||
"* <b>Account protection</b>: Passkey authentication eliminates the risks associated with passwords (use of weak passwords, reuse, leakage, etc.). This enhances the protection of user accounts and reduces the risk of unauthorized access and data leakage.<br>"+
|
||||
"* <b>Improved user satisfaction</b>: Passkey authentication eliminates the hassle of managing passwords and resetting forgotten passwords. Users can easily and securely access the website, reducing stress and frustration. This improves user satisfaction and may increase user loyalty and frequency of use of the website.");
|
||||
@@ -138,13 +218,13 @@
|
||||
i18n_messages.set("info_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Reduce operating costs");
|
||||
lang_map.set("en", "Reduce operating costs");
|
||||
lang_map.set("zh-CN", "降低运营成本");
|
||||
lang_map.set("ja", "運用コストの低減");
|
||||
i18n_messages.set("info_title_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey authentication can reduce operating costs through factors such as reduced password reset, reduced security incidents, and simplified security management.<br>* <b>Reduced password reset</b>: With Passkey authentication, users do not need to remember or reset passwords. This reduces the number of password reset requests and responses to user support, which may reduce operating costs.<br>"+
|
||||
lang_map.set("en", "Passkey authentication can reduce operating costs through factors such as reduced password reset, reduced security incidents, and simplified security management.<br>* <b>Reduced password reset</b>: With Passkey authentication, users do not need to remember or reset passwords. This reduces the number of password reset requests and responses to user support, which may reduce operating costs.<br>"+
|
||||
"* <b>Reduced security incidents</b>: Password-based authentication has risks such as the use or reuse of weak passwords and password leakage. This increases the likelihood of security incidents such as unauthorized access and data leakage. Passkey authentication reduces these risks, which may reduce operating costs associated with security incidents.<br>"+
|
||||
"* <b>Simplified security management</b>: Passkey authentication reduces tasks related to password management and storage. Passwords require encryption and secure storage, and it is recommended to regularly manage and change password policies. In contrast, Passkey authentication uses simpler security elements (biometrics or hardware keys), which may simplify security management.");
|
||||
lang_map.set("zh-CN", "Passkey认证可以通过减少密码重置、减少安全事件和简化安全管理等因素来降低运营成本。<br>* <b>减少密码重置</b>:Passkey认证不需要用户记住或重置密码。这减少了密码重置请求和对用户支持的响应,可能会降低运营成本。<br>"+
|
||||
@@ -156,59 +236,73 @@
|
||||
i18n_messages.set("info_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Effect analysis");
|
||||
lang_map.set("en", "Effect analysis");
|
||||
lang_map.set("zh-CN", "效果分析");
|
||||
lang_map.set("ja", "効果分析");
|
||||
i18n_messages.set("info_title_4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "According to the research of a leading company in the industry, Passkey is:<br>* Reduced phishing and credential theft:<b>99.9</b>%<br>* ROI over 3 years:<b>203</b>%<br>* Reduction of help desk tickets in the 3rd year:<b>75</b>%");
|
||||
lang_map.set("en", "According to the research of a leading company in the industry, Passkey is:<br>* Reduced phishing and credential theft:<b>99.9</b>%<br>* ROI over 3 years:<b>203</b>%<br>* Reduction of help desk tickets in the 3rd year:<b>75</b>%");
|
||||
lang_map.set("zh-CN", "根据业界领先公司的研究,Passkey是:<br>* 减少网络钓鱼和凭证盗窃:<b>99.9</b>%<br>* 3年内的投资回报率:<b>203</b>%<br>* 第3年的帮助台票据减少:<b>75</b>%");
|
||||
lang_map.set("ja", "業界大手のリサーチより、パスキーは:<br>* フィッシングや認証情報の盗難の減少:<b>99.9</b>%<br>* 3 年後のROI:<b>203</b>%<br>* 3 年目のヘルプデスク チケットの削減:<b>75</b>%");
|
||||
i18n_messages.set("info_4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey impact");
|
||||
lang_map.set("en", "Passkey impact");
|
||||
lang_map.set("zh-CN", "Passkey 影响");
|
||||
lang_map.set("ja", "Passkey の影響");
|
||||
i18n_messages.set("hero_eyebrow", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Security your customers can feel");
|
||||
lang_map.set("en", "Security your customers can feel");
|
||||
lang_map.set("zh-CN", "客户能感受到的安全性");
|
||||
lang_map.set("ja", "顧客が実感できるセキュリティ");
|
||||
i18n_messages.set("hero_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Reduce phishing to near zero, lift conversion, and slash support load with amiPro's enterprise-grade Passkey platform.");
|
||||
lang_map.set("en", "Reduce phishing to near zero, lift conversion, and slash support load with amiPro's enterprise-grade Passkey platform.");
|
||||
lang_map.set("zh-CN", "将钓鱼攻击降至接近零,提高转化率,并通过 amiPro 企业级 Passkey 平台大幅减少支持负担。");
|
||||
lang_map.set("ja", "amiPro のエンタープライズ向けパスキープラットフォームでフィッシングをほぼゼロに抑え、コンバージョンを高め、サポート負荷を削減します。");
|
||||
i18n_messages.set("hero_lead", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Higher trust");
|
||||
lang_map.set("en", "Higher trust");
|
||||
lang_map.set("zh-CN", "更高的信任");
|
||||
lang_map.set("ja", "より高い信頼");
|
||||
i18n_messages.set("hero_chip_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Happier customers");
|
||||
lang_map.set("en", "Happier customers");
|
||||
lang_map.set("zh-CN", "更满意的客户");
|
||||
lang_map.set("ja", "顧客満足度の向上");
|
||||
i18n_messages.set("hero_chip_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Lower costs");
|
||||
lang_map.set("en", "Lower costs");
|
||||
lang_map.set("zh-CN", "更低的成本");
|
||||
lang_map.set("ja", "コスト削減");
|
||||
i18n_messages.set("hero_chip_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Portal");
|
||||
lang_map.set("ja", "ポータル");
|
||||
i18n_messages.set("btn_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Passkey vs Password: Security Comparison");
|
||||
lang_map.set("ja", "パスキー vs パスワード:セキュリティ比較");
|
||||
lang_map.set("zh-CN", "Passkey 与密码:安全对比");
|
||||
i18n_messages.set("static_title", lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages)
|
||||
|
||||
var video = document.getElementById('video');
|
||||
video.src = "files/amiProSampleSite01-JP.mp4";
|
||||
initRevealAnimations()
|
||||
if (typeof createLanguageSelector === 'function') {
|
||||
document.body.appendChild(createLanguageSelector());
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -275,6 +369,49 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section style="margin-top: 3rem; padding: 2rem; background: #f8f9fa; border-radius: 12px;">
|
||||
<h2 id="static_title" style="font-size: 1.5rem; font-weight: 600; color: #0f172a; margin-bottom: 1rem;">Passkey vs Password: Security Comparison</h2>
|
||||
<div style="overflow-x: auto;">
|
||||
<table style="width: 100%; border-collapse: collapse; font-size: 0.95rem;">
|
||||
<thead>
|
||||
<tr style="background: #e2e8f0;">
|
||||
<th style="padding: 0.75rem; text-align: left; border: 1px solid #cbd5e1;">Feature</th>
|
||||
<th style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1;">Password</th>
|
||||
<th style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1;">Passkey</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding: 0.75rem; border: 1px solid #cbd5e1;">Phishing resistance</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #dc2626;">Vulnerable</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #16a34a;">Resistant (99.9% reduction)</td>
|
||||
</tr>
|
||||
<tr style="background: #f8fafc;">
|
||||
<td style="padding: 0.75rem; border: 1px solid #cbd5e1;">Credential theft risk</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #dc2626;">High (shared secret)</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #16a34a;">None (public-key crypto)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0.75rem; border: 1px solid #cbd5e1;">Sign-in speed</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1;">Slow (typing)</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #16a34a;">Fast (biometric gesture)</td>
|
||||
</tr>
|
||||
<tr style="background: #f8fafc;">
|
||||
<td style="padding: 0.75rem; border: 1px solid #cbd5e1;">Password reset burden</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #dc2626;">75% of support tickets</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #16a34a;">Zero resets needed</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0.75rem; border: 1px solid #cbd5e1;">User experience</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1;">Friction (remembering)</td>
|
||||
<td style="padding: 0.75rem; text-align: center; border: 1px solid #cbd5e1; color: #16a34a;">Seamless (one tap)</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p style="margin-top: 1rem; font-size: 0.85rem; color: #64748b;">Source: FIDO Alliance, Google Security Research, amiPro internal data</p>
|
||||
</section>
|
||||
|
||||
<section class="info-panels" style="margin-top: 3rem;">
|
||||
<article class="info-panel" data-animate>
|
||||
<h4 id="info_title_1">define</h4>
|
||||
@@ -291,7 +428,7 @@
|
||||
<article class="info-panel" data-animate>
|
||||
<h4 id="info_title_4">define</h4>
|
||||
<p id="info_4">define</p>
|
||||
<img src="files/YubicoResearch.jpg" alt="Yubico Research" style="width: 100%; border-radius: 16px; margin-top: 1rem;">
|
||||
<img src="files/YubicoResearch.jpg" alt="Yubico research statistics showing 99.9% phishing reduction, 203% ROI, and 75% support cost reduction with passkey authentication" style="width: 100%; border-radius: 16px; margin-top: 1rem;">
|
||||
</article>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
+140
-21
@@ -11,7 +11,14 @@
|
||||
content="width=device-width, initial-scale=1.0"
|
||||
/>
|
||||
|
||||
<title> Passkeys - amiPro </title>
|
||||
<title>What Are Passkeys? FIDO2 Authentication Guide | amiPro</title>
|
||||
|
||||
<link rel="canonical" href="https://amipro.me/passkey.html" />
|
||||
|
||||
<link rel="alternate" hreflang="en" href="https://amipro.me/passkey.html" />
|
||||
<link rel="alternate" hreflang="ja" href="https://amipro.me/passkey.html" />
|
||||
<link rel="alternate" hreflang="zh-CN" href="https://amipro.me/passkey.html" />
|
||||
<link rel="alternate" hreflang="x-default" href="https://amipro.me/passkey.html" />
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-850DCHX9EJ"></script>
|
||||
@@ -23,7 +30,81 @@
|
||||
gtag('config', 'G-850DCHX9EJ');
|
||||
</script>
|
||||
|
||||
<meta name="description" content="the easiest to integrate Passkey cloud service" />
|
||||
<meta name="description" content="Passkeys are passwordless authentication credentials using biometrics or security keys. Learn how FIDO2 passkeys prevent phishing and improve login UX." />
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="What Are Passkeys? FIDO2 Authentication Guide | amiPro" />
|
||||
<meta property="og:description" content="Passkeys are passwordless authentication credentials using biometrics or security keys. Learn how FIDO2 passkeys prevent phishing and improve login UX." />
|
||||
<meta property="og:url" content="https://amipro.me/passkey.html" />
|
||||
<meta property="og:site_name" content="amiPro" />
|
||||
<meta property="og:image" content="https://amipro.me/files/passkeys.jpg" />
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="What Are Passkeys? FIDO2 Authentication Guide | amiPro" />
|
||||
<meta name="twitter:description" content="Passkeys are passwordless authentication credentials using biometrics or security keys. Learn how FIDO2 passkeys prevent phishing and improve login UX." />
|
||||
<meta name="twitter:image" content="https://amipro.me/files/passkeys.jpg" />
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "What Are Passkeys? FIDO2 Authentication Guide",
|
||||
"description": "Passkeys are passwordless authentication credentials using biometrics or security keys. Learn how FIDO2 passkeys prevent phishing and improve login UX.",
|
||||
"url": "https://amipro.me/passkey.html",
|
||||
"image": "https://amipro.me/files/passkeys.jpg",
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "amiPro Team"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "amiPro",
|
||||
"url": "https://amipro.me"
|
||||
},
|
||||
"datePublished": "2024-01-01",
|
||||
"dateModified": "2025-01-01"
|
||||
}
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "FAQPage",
|
||||
"mainEntity": [
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "What is a passkey?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "A passkey is a FIDO2-based passwordless authentication credential that replaces passwords. It uses biometrics (fingerprint, face recognition) or hardware security keys to sign in to websites and apps. Passkeys are phishing-resistant, more secure than passwords, and provide a faster sign-in experience."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "How do passkeys work?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Passkeys work in three steps: (1) The user registers a device by authenticating with biometrics or a security key. (2) A cryptographic key pair is created—the private key stays on the device, the public key goes to the server. (3) On subsequent logins, the user authenticates with biometrics to unlock the private key, which signs a challenge from the server."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Are passkeys more secure than passwords?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Yes. Passkeys are bound to the legitimate website domain, making them inherently resistant to phishing. They use public-key cryptography instead of shared secrets, so server breaches don't expose user credentials. Biometric authentication adds an additional layer of security."
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Question",
|
||||
"name": "Which companies support passkeys?",
|
||||
"acceptedAnswer": {
|
||||
"@type": "Answer",
|
||||
"text": "Major companies supporting passkeys include Google, Apple, Microsoft, Amazon, PayPal, GitHub, and many more. Apple, Google, and NTT have been key contributors to the FIDO2 standard. The FIDO2 market is projected to grow from $18.82 billion in 2024 to $60.34 billion in 2032."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="files/favicon.ico" />
|
||||
@@ -75,116 +156,136 @@
|
||||
const i18n_messages = new Map();
|
||||
|
||||
var lang_map = new Map();
|
||||
lang_map.set("en-US", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("en", "amiPro - The easiest-to-integrate Passkey cloud service");
|
||||
lang_map.set("zh-CN", "amiPro - 最易集成的Passkey云服务");
|
||||
lang_map.set("ja", "amiPro - 最も簡単に統合できるパスキー・クラウド・サービス");
|
||||
i18n_messages.set("label_welcome", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Management Portal");
|
||||
lang_map.set("en", "Management Portal");
|
||||
lang_map.set("zh-CN", "管理门户");
|
||||
lang_map.set("ja", "管理ポータル");
|
||||
i18n_messages.set("label_portal", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("en", "Contact us (sales@amipro.me)");
|
||||
lang_map.set("zh-CN", "联系我们(sales@amipro.me)");
|
||||
lang_map.set("ja", "お問い合わせ(sales@amipro.me)");
|
||||
i18n_messages.set("title_contact_cta", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey definition");
|
||||
lang_map.set("en", "Passkey definition");
|
||||
lang_map.set("zh-CN", "Passkey 的定义");
|
||||
lang_map.set("ja", "パスキーの定義");
|
||||
i18n_messages.set("info_title_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "A passkey is a method of user authentication that eliminates the need for usernames and passwords. It also helps prevent security lapses and attacks.<br><a href='https://en.wikipedia.org/wiki/Passkey_(authentication)' target='_blank'>Wikipedia</a>");
|
||||
lang_map.set("en", "A passkey is a method of user authentication that eliminates the need for usernames and passwords. It also helps prevent security lapses and attacks.<br><a href='https://en.wikipedia.org/wiki/Passkey_(authentication)' target='_blank'>Wikipedia</a>");
|
||||
lang_map.set("zh-CN", "Passkey(通行密钥)是一种无需用户名和密码的用户身份验证方式,同时有助于防止安全漏洞和攻击。<br><a href='https://en.wikipedia.org/wiki/Passkey_(authentication)' target='_blank'>Wikipedia</a>");
|
||||
lang_map.set("ja", "パスキー(Passkeys, Passkey Authentication)は、パスワードに代わるより安全、迅速かつ使いやすい、パスワードレス認証に用いられる方式です。<br><a href='https://ja.wikipedia.org/wiki/パスキー' target='_blank'>Wikipedia</a>");
|
||||
i18n_messages.set("info_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey basics");
|
||||
lang_map.set("en", "Passkey basics");
|
||||
lang_map.set("zh-CN", "Passkey 的基本用法");
|
||||
lang_map.set("ja", "パスキーの基本的な使い方");
|
||||
i18n_messages.set("info_title_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "1. (Optional) If users already have an account with a user ID and password, they first sign in to the website<br>2. Register an authentication device using face or fingerprint<br>3. Next time, sign in with face or fingerprint—no password needed");
|
||||
lang_map.set("en", "1. (Optional) If users already have an account with a user ID and password, they first sign in to the website<br>2. Register an authentication device using face or fingerprint<br>3. Next time, sign in with face or fingerprint—no password needed");
|
||||
lang_map.set("zh-CN", "1、(可选)已使用用户ID和密码注册的用户先登录网站<br>2、使用面部或指纹注册认证设备<br>3、下次登录时仅需进行面部或指纹认证即可进入网站");
|
||||
lang_map.set("ja", "1(任意):ユーザーIDとパスワードで登録済みのユーザーは、まずサイトにログインします<br>2 顔認証または指紋認証で認証デバイスを登録します<br>3 次回以降は顔認証または指紋認証だけでログインできます");
|
||||
i18n_messages.set("info_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey case studies");
|
||||
lang_map.set("en", "Passkey case studies");
|
||||
lang_map.set("zh-CN", "Passkey 的引入案例");
|
||||
lang_map.set("ja", "パスキーの導入事例");
|
||||
i18n_messages.set("info_title_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "<b>Google</b>:<a href='https://wired.jp/article/google-passkey-password-replacement/' target='_blank'>Google is fully introducing the authentication method \"Passkey\"</a><br><b>Mercari</b>:<a href='https://about.mercari.com/press/news/articles/20230414_passkeys/' target='_blank'>Flea market app \"Mercari\" supports biometric authentication \"Passkey\" that does not require a password</a><br><b>Docomo</b>:<a href='https://www.bcnretail.com/market/detail/20221018_300507.html' target='_blank'>d Account to introduce new authentication methods for web authentication and passkeys for login</a>");
|
||||
lang_map.set("en", "<b>Google</b>:<a href='https://wired.jp/article/google-passkey-password-replacement/' target='_blank'>Google is fully introducing the authentication method \"Passkey\"</a><br><b>Mercari</b>:<a href='https://about.mercari.com/press/news/articles/20230414_passkeys/' target='_blank'>Flea market app \"Mercari\" supports biometric authentication \"Passkey\" that does not require a password</a><br><b>Docomo</b>:<a href='https://www.bcnretail.com/market/detail/20221018_300507.html' target='_blank'>d Account to introduce new authentication methods for web authentication and passkeys for login</a>");
|
||||
lang_map.set("zh-CN", "<b>Google</b>:<a href='https://wired.jp/article/google-passkey-password-replacement/' target='_blank'>谷歌正式推出“Passkey”认证方式</a><br><b>Mercari</b>:<a href='https://about.mercari.com/press/news/articles/20230414_passkeys/' target='_blank'>跳蚤市场应用“Mercari”支持无需密码的生物识别认证“Passkey”</a><br><b>Docomo</b>:<a href='https://www.bcnretail.com/market/detail/20221018_300507.html' target='_blank'>d Account将引入Web认证和Passkey的新认证方式以登录</a>");
|
||||
lang_map.set("ja", "<b>Google</b>:<a href='https://wired.jp/article/google-passkey-password-replacement/' target='_blank'>認証方式「パスキー」をグーグルが本格導入</a><br><b>メルカリ</b>:<a href='https://about.mercari.com/press/news/articles/20230414_passkeys/' target='_blank'>フリマアプリ「メルカリ」、パスワード不要な生体認証「パスキー」に対応</a><br><b>ドコモ</b>:<a href='https://www.bcnretail.com/market/detail/20221018_300507.html' target='_blank'>dアカウントのログインにWeb認証とパスキーによる新たな認証手段を導入へ</a>");
|
||||
i18n_messages.set("info_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey system architecture");
|
||||
lang_map.set("en", "Passkey system architecture");
|
||||
lang_map.set("zh-CN", "Passkey 的系统架构");
|
||||
lang_map.set("ja", "パスキーのシステムアーキテクチャ");
|
||||
i18n_messages.set("info_title_4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "A: Mobile device browser <br>B: Computer browser <br>C: Mobile device App (App embeds amiPro SDK) <br>D: Your website <br>E: amiPro cloud service<br><br>1. The browser downloads the amiPro JavaScript SDK from your website (App does not need this step)<br>2. The browser and App call the amiPro cloud service through the SDK for authentication<br>3. amiPro returns the authentication result to your server<br><img src='files/amipro_sys.jpg' style='width: 80%;'>");
|
||||
lang_map.set("en", "A: Mobile device browser <br>B: Computer browser <br>C: Mobile device App (App embeds amiPro SDK) <br>D: Your website <br>E: amiPro cloud service<br><br>1. The browser downloads the amiPro JavaScript SDK from your website (App does not need this step)<br>2. The browser and App call the amiPro cloud service through the SDK for authentication<br>3. amiPro returns the authentication result to your server<br><img src='files/amipro_sys.jpg' style='width: 80%;'>");
|
||||
lang_map.set("zh-CN", "A:移动设备浏览器 <br>B:电脑浏览器 <br>C:移动设备App(App嵌入amiPro SDK) <br>D:您的网站 <br>E:amiPro云服务<br><br>1、浏览器从您的网站下载amiPro JavaScript SDK(App无需此步骤)<br>2、浏览器及App通过SDK调用amiPro云服务进行认证<br>3、amiPro将认证结果返回给您的服务器<img src='files/amipro_sys.jpg' style='width: 80%;'>");
|
||||
lang_map.set("ja", "A:モバイルデバイスブラウザ<br>B:コンピュータブラウザ<br>C:モバイルデバイスアプリ(AppにamiPro SDKを埋め込む)<br>D:あなたのウェブサイト E:amiProクラウド・サービス<br><br>1、ブラウザはあなたのウェブサイトからamiPro JavaScript SDKをダウンロードします(Appはこのステップは必要ありません)<br>2、ブラウザとアプリはSDKを介してamiProクラウド・サービスを呼び出して認証します<br>3、amiProは認証結果をあなたのサーバーに返します<br><img src='files/amipro_sys.jpg' style='width: 80%;'>");
|
||||
i18n_messages.set("info_4", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Passkey essentials");
|
||||
lang_map.set("en", "Passkey essentials");
|
||||
lang_map.set("zh-CN", "Passkey essentials");
|
||||
lang_map.set("ja", "Passkey essentials");
|
||||
i18n_messages.set("hero_eyebrow", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Everything teams need to understand Passkeys");
|
||||
lang_map.set("en", "Everything teams need to understand Passkeys");
|
||||
lang_map.set("zh-CN", "团队理解 Passkey 所需的一切");
|
||||
lang_map.set("ja", "チームがパスキーを理解するために必要なすべて");
|
||||
i18n_messages.set("hero_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Share the fundamentals with product, security, and CX partners using this at-a-glance passkey briefing powered by amiPro research.");
|
||||
lang_map.set("en", "Share the fundamentals with product, security, and CX partners using this at-a-glance passkey briefing powered by amiPro research.");
|
||||
lang_map.set("zh-CN", "使用由 amiPro 研究提供的一览式 Passkey 简报,与产品、安全和客户体验伙伴共享基础知识。");
|
||||
lang_map.set("ja", "amiPro のリサーチによる一目でわかるパスキー解説を使用して、プロダクト、セキュリティ、CX のパートナーと基礎を共有します。");
|
||||
i18n_messages.set("hero_lead", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "FIDO2 ready");
|
||||
lang_map.set("en", "FIDO2 ready");
|
||||
lang_map.set("zh-CN", "FIDO2 准备就绪");
|
||||
lang_map.set("ja", "FIDO2 対応");
|
||||
i18n_messages.set("hero_chip_1", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Phishing resistant");
|
||||
lang_map.set("en", "Phishing resistant");
|
||||
lang_map.set("zh-CN", "抵御钓鱼");
|
||||
lang_map.set("ja", "フィッシング耐性");
|
||||
i18n_messages.set("hero_chip_2", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en-US", "Device agnostic");
|
||||
lang_map.set("en", "Device agnostic");
|
||||
lang_map.set("zh-CN", "设备无关");
|
||||
lang_map.set("ja", "デバイス非依存");
|
||||
i18n_messages.set("hero_chip_3", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "See benefits");
|
||||
lang_map.set("ja", "メリットを見る");
|
||||
i18n_messages.set("label_merits", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "How Passkeys Work: Step by Step");
|
||||
lang_map.set("ja", "パスキーの仕組み: ステップバイステップ");
|
||||
lang_map.set("zh-CN", "Passkey 工作原理:分步详解");
|
||||
i18n_messages.set("static_howto_title", lang_map);
|
||||
|
||||
lang_map = new Map();
|
||||
lang_map.set("en", "Passkey Benefits for Businesses");
|
||||
lang_map.set("ja", "ビジネスのためのパスキーのメリット");
|
||||
lang_map.set("zh-CN", "Passkey 为企业带来的收益");
|
||||
i18n_messages.set("static_benefits_title", lang_map);
|
||||
|
||||
window.onload = async function() {
|
||||
setI18NText(i18n_messages)
|
||||
initRevealAnimations()
|
||||
if (typeof createLanguageSelector === 'function') {
|
||||
document.body.appendChild(createLanguageSelector());
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
@@ -244,11 +345,29 @@
|
||||
</div>
|
||||
<div class="hero__media" data-animate>
|
||||
<div class="hero__device">
|
||||
<img src="files/passkeys.jpg" alt="Passkey devices">
|
||||
<img src="files/passkeys.jpg" alt="Various passkey authentication devices including smartphones, laptops, and security keys">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section style="margin-top: 3rem; padding: 2rem; background: #f8f9fa; border-radius: 12px;">
|
||||
<h2 id="static_howto_title" style="font-size: 1.5rem; font-weight: 600; color: #0f172a; margin-bottom: 1rem;">How Passkeys Work: Step by Step</h2>
|
||||
<ol style="padding-left: 1.5rem; color: #334155; line-height: 1.8;">
|
||||
<li><strong>Registration:</strong> The user registers a passkey by authenticating with biometrics (fingerprint or face recognition) or a hardware security key on their device.</li>
|
||||
<li><strong>Key pair creation:</strong> A cryptographic key pair is generated. The private key stays securely on the user device; the public key is sent to the website server.</li>
|
||||
<li><strong>Authentication:</strong> On subsequent logins, the user authenticates with biometrics to unlock the private key, which signs a cryptographic challenge from the server.</li>
|
||||
<li><strong>Verification:</strong> The server verifies the signature using the public key and grants access — no password ever transmitted.</li>
|
||||
</ol>
|
||||
<h2 id="static_benefits_title" style="font-size: 1.5rem; font-weight: 600; color: #0f172a; margin-top: 2rem; margin-bottom: 1rem;">Passkey Benefits for Businesses</h2>
|
||||
<ul style="padding-left: 1.5rem; color: #334155; line-height: 1.8;">
|
||||
<li><strong>99.9% phishing reduction:</strong> Passkeys are bound to the legitimate website domain, making phishing attacks ineffective.</li>
|
||||
<li><strong>203% ROI over 3 years:</strong> Reduced security incidents, lower support costs, and improved conversion rates deliver measurable returns.</li>
|
||||
<li><strong>75% fewer support tickets:</strong> Eliminating password resets dramatically reduces help desk burden by year three.</li>
|
||||
<li><strong>Faster sign-ins:</strong> Biometric authentication is quicker than typing passwords, reducing login abandonment.</li>
|
||||
</ul>
|
||||
<p style="margin-top: 1rem; font-size: 0.85rem; color: #64748b;">amiPro Passkey Hub provides FIDO2-certified infrastructure with open-source SDKs for JavaScript, iOS, and Android.</p>
|
||||
</section>
|
||||
|
||||
<section class="info-panels" style="margin-top: 3rem;">
|
||||
<article class="info-panel" data-animate>
|
||||
<h4 id="info_title_1">define</h4>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
Sitemap: https://amipro.me/sitemap.xml
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
<url>
|
||||
<loc>https://amipro.me/contextwizard_top.html</loc>
|
||||
<loc>https://contextwizard.site/</loc>
|
||||
<lastmod>2026-01-08</lastmod>
|
||||
<priority>0.9</priority>
|
||||
</url>
|
||||
|
||||
Reference in New Issue
Block a user