nuxt-module の追加や独自の plugin / composable は基本的に不要で、app.vue でスクリプトを 1 度読み込めば、あとは data-turnint-* 属性または window.turnintai.open() で起動できます。
動作する完全なサンプルを公開しています。
- example repo: github.com/u17g/turnint-ai-nuxt-example
- preview: example-turnint-ai-nuxt-japanese-lp.vercel.app
japanese-landing-page/ ディレクトリと一致しています。手元で動かしたい場合は repo を clone して pnpm install && pnpm dev で起動してください。3 つの組み込みパターン
| パターン | 使いどころ | 必要な実装 |
|---|---|---|
| A. ボタンで開く | LP の CTA、ヘッダーやフッターの「資料を見る」など、ユーザー操作で起動したい | data-turnint-* 属性を付けたボタン |
| B. ページ表示時に自動で開く | 専用ルート(例: /start)に着地したら即座に viewer を立ち上げたい | onMounted で window.turnintai.open() を呼ぶ |
| C. インライン表示 | ページ内の特定領域に viewer をそのまま埋め込みたい | data-turnint-* 属性を付けた <div> |
共通: embed script を読み込む
app/app.vue(Nuxt 4)または app.vue(Nuxt 3)で useHead を使い、Turnint AI の embed script を <head> に注入します。
async と defer を付けることで、初期描画をブロックせずにスクリプトを読み込めます。読み込みが完了すると window.turnintai が利用可能になり、以後すべてのページで起動 API が使えます。
スクリプトは
app.vue で 1 度だけ読み込めば十分です。各ページで個別に useHead を呼ぶ必要はありません。パターン A: ボタンクリックで開く
最もシンプルな方法です。任意の要素にdata-turnint-* 属性を付与すると、その要素がクリックされたタイミングで viewer が開きます。
| 属性 | 値の例 | 説明 |
|---|---|---|
data-turnint-id | pub_xxxxxxxxxxxxxxxx | 開きたいコンテンツの ID。ダッシュボードから取得 |
data-turnint-type | fullscreen / popover | 開き方。fullscreen は画面全体を覆うモーダル、popover はチャットバブル |
data-turnint-locale | ja / en / auto | viewer の UI 言語。auto でブラウザ言語を自動検出 |
Nuxt の
<NuxtLink> でページ遷移した後に新しく追加されたボタンも、自動で検知されて起動可能になります。route 変更ごとに手動で再マウントする必要はありません(詳しくは後述の「SPA ナビゲーションについて」を参照)。パターン B: ページ表示時に自動で開く
「LP の CTA から専用ページに飛ばし、着地した瞬間に viewer を立ち上げたい」というユースケース向けのパターンです。専用の空白ページを 1 つ作り、onMounted 内で window.turnintai.open() を呼びます。
async で読み込んでいるため、onMounted の発火時点ではまだ window.turnintai が定義されていない可能性があります。requestAnimationFrame でフレームごとに再チェックすることで、ロード完了直後に確実に open() を呼び出せます。
type: "fullscreen" 以外の指定は現状サポートされていません。インライン表示が必要な場合はパターン C を使ってください。パターン C: インライン表示
ページ内の特定領域に viewer を埋め込みたい場合は、<div> などに data-turnint-* 属性を付けます。data-turnint-type を省略するか、button / a 以外のタグを使うと、自動でインラインモードとして描画されます。
TypeScript で型を効かせる
window.turnintai の公式型定義はパッケージとしては配信していないため、プロジェクト側で型を宣言します。types/turnintai.d.ts のようなファイルを作成し、以下を貼り付けてください。
tsconfig.json を自動生成するため、types/ ディレクトリに置けば自動的に読み込まれます。明示的に取り込みたい場合は nuxt.config.ts の typescript.tsConfig.include に追加してください。
関連ドキュメント
- クイックスタート — 共有方法と埋め込み方式の全体像
- HubSpot ランディングページとの連携 — フォーム送信値を viewer に引き渡す
- トラッキングパラメータの自動保持 — UTM などの引き継ぎ

