Replace legacy bridge download instructions with web MCP setup in NL and RU templates

- Remove inou_bridge_win/darwin download links (fully web-based MCP now)
- Mirror English connect.tmpl structure exactly
- Proper Dutch and Russian translations throughout
- Claude Desktop, Grok, ChatGPT, and Other AI tabs all translated
- Functional prompts (custom instructions, Grok API prompt) kept in English
This commit is contained in:
James 2026-02-23 01:59:07 -05:00
parent d5133fd56f
commit 432c6f80ea
2 changed files with 251 additions and 203 deletions

View File

@ -1,20 +1,14 @@
{{define "connect_nl"}}
{{define "connect"}}
<div class="install-container">
<div class="install-header">
<div>
<h1>Verbind AI met je gegevens</h1>
<p>Kies je AI-assistent en volg de installatie-instructies.</p>
<h1>Verbind AI met uw gegevens</h1>
<p>Kies uw AI-assistent en volg de installatie-instructies.</p>
</div>
{{if and .Dossier .Dossier.DossierID}}<a href="/dashboard" class="btn btn-secondary btn-small">← Terug</a>{{else}}<a href="/" class="btn btn-secondary btn-small">← Home</a>{{end}}
</div>
{{if not (and .Dossier .Dossier.DossierID)}}
<div class="login-tracker">
<strong>Let op:</strong> <a href="/start">Log in</a> om gepersonaliseerde instructies te zien met je account-token al ingevuld.
</div>
{{end}}
<div class="install-card">
<div class="ai-tabs">
<button class="ai-tab active" onclick="showTab('claude')">Claude Desktop</button>
@ -25,123 +19,126 @@
<!-- Claude Desktop Tab -->
<div id="tab-claude" class="ai-content active">
<p>Claude Desktop met MCP biedt de beste ervaring — native tool-toegang, geen URL-fetching, volledige API-mogelijkheden.</p>
<p>Claude Desktop verbindt direct met <span class="inou-brand">inou</span> via OAuth — geen tokens te kopiëren, geen extensies te installeren.</p>
<div class="step">
<div class="step-header">
<span class="step-num">1</span>
<h3>Installeer Claude Desktop</h3>
</div>
<p>Download en installeer vanaf <a href="https://claude.ai/download" target="_blank">claude.ai/download</a></p>
<p>Download en installeer via <a href="https://claude.ai/download" target="_blank">claude.ai/download</a></p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">2</span>
<h3>Installeer de inou-extensie</h3>
<h3>Voeg Inou Connector toe</h3>
</div>
<p>Download <a href="/download/inou.mcpb">inou.mcpb</a> en installeer:</p>
<ul style="margin: 8px 0 12px 20px;">
<li><strong>Mac:</strong> Dubbelklik op het bestand</li>
<li><strong>Windows:</strong> Ga in Claude Desktop naar <em>File → Import Extension</em> en selecteer het gedownloade bestand</li>
</ul>
<p>Voer je account-token in wanneer daarom gevraagd wordt:</p>
<div class="code-wrapper">
<pre id="step2-token">{{if and .Dossier .Dossier.DossierID}}{{.Dossier.DossierID}}{{else}}JOUW_ACCOUNT_TOKEN{{end}}</pre>
<button class="copy-icon" onclick="copyCode('step2-token', this)" title="Kopiëren">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p class="step-note"><strong>Let op:</strong> Je ziet een machtigingswaarschuwing — dit is normaal voor extensies die nog niet in Claude's officiële directory staan. <span class="inou-brand">inou</span> maakt alleen HTTPS-verbindingen met inou.com; het benadert geen lokale bestanden.</p>
<p>In Claude Desktop:</p>
<ol style="margin: 8px 0 12px 20px;">
<li>Ga naar <strong>Instellingen → Connectoren</strong></li>
<li>Klik op <strong>Aangepaste connector toevoegen</strong></li>
<li>Vul de velden in:</li>
</ol>
<table style="margin: 12px 0; border-collapse: collapse; width: 100%;">
<tr>
<td style="padding: 8px 12px; border: 1px solid var(--border); background: var(--bg-muted); font-weight: 500;">Naam</td>
<td style="padding: 8px 12px; border: 1px solid var(--border);"><code>Inou Health</code></td>
</tr>
<tr>
<td style="padding: 8px 12px; border: 1px solid var(--border); background: var(--bg-muted); font-weight: 500;">Externe MCP-server URL</td>
<td style="padding: 8px 12px; border: 1px solid var(--border);"><code>https://inou.com/mcp</code></td>
</tr>
</table>
<p>Klik op <strong>Toevoegen</strong>, dan op <strong>Verbinden</strong>.</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">3</span>
<h3>Inschakelen &amp; machtigingen toestaan</h3>
<h3>Aanmelden</h3>
</div>
<p>Ga naar <strong>Settings → Extensions</strong> en schakel de inou-extensie in als dat nog niet gedaan is.</p>
<p>Bij het eerste gebruik vraagt Claude toestemming voor elke tool. Selecteer <strong>"Allow for this chat"</strong> en vink <strong>"Don't ask again for inou-health"</strong> aan om alle machtigingen in één keer toe te staan — anders word je 11 keer gevraagd.</p>
<p>Uw browser opent om in te loggen bij <span class="inou-brand">inou</span>. Na het aanmelden klikt u op <strong>Claude openen</strong> om de verbinding te voltooien.</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">4</span>
<h3>Test</h3>
<h3>Tools toestaan</h3>
</div>
<p>Open Claude Desktop en plak:</p>
<div class="code-wrapper">
<pre id="step3-test">Toon mijn beschikbare dossiers via de inou-bridge.</pre>
<button class="copy-icon" onclick="copyCode('step3-test', this)" title="Kopiëren">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p>Je zou je dossier(s) moeten zien. Klaar!</p>
<p>Om te voorkomen dat u 11 keer om toestemming wordt gevraagd:</p>
<ol style="margin: 8px 0 12px 20px;">
<li>Ga naar <strong>Instellingen → Connectoren</strong> en zoek <strong>Inou Health</strong></li>
<li>Klik op <strong>Configureren</strong> (tandwielpictogram)</li>
<li>Selecteer bij <strong>Alleen-lezen tools</strong> de optie <strong>Altijd toestaan</strong></li>
</ol>
<p>Hiermee geeft u Claude toestemming om uw gezondheidsgegevens te lezen zonder elke keer opnieuw te vragen.</p>
</div>
<details style="margin-top: 24px;">
<summary style="cursor: pointer; color: var(--text-muted); font-size: 0.9rem;">Handmatige installatie (geavanceerd)</summary>
<div style="margin-top: 16px;">
<div class="step">
<div class="step-header">
<span class="step-num muted">1</span>
<h3>Download bridge</h3>
<span class="step-num">5</span>
<h3>Aangepaste instructies toevoegen (aanbevolen)</h3>
</div>
<p>Download de bridge voor jouw systeem:</p>
<ul>
<li><a href="/download/inou_bridge_darwin_arm64">Mac Apple Silicon</a></li>
<li><a href="/download/inou_bridge_darwin_amd64">Mac Intel</a></li>
<li><a href="/download/inou_bridge_win_amd64.exe">Windows 64-bit</a></li>
</ul>
<p>Sla op naar ~/bin/inou_bridge (Mac) of %USERPROFILE%\inou\inou_bridge.exe (Windows). Maak uitvoerbaar op Mac: chmod +x ~/bin/inou_bridge</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num muted">2</span>
<h3>Configureer Claude</h3>
</div>
<p>Bewerk Claude config (Mac: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json) en voeg toe aan mcpServers:</p>
<p>Om automatisch de gezondheidsgegevenscontext van uw familie in elk gesprek te laden:</p>
<ol style="margin: 8px 0 12px 20px;">
<li>Ga in Claude Desktop naar <strong>Instellingen → Aangepaste instructies</strong></li>
<li>Voeg in het tekstvak het volgende toe:</li>
</ol>
<div class="code-wrapper">
<pre id="manual-config">"inou": {
"command": "BRIDGE_PATH",
"args": ["--server=https://inou.com", "--account={{if and .Dossier .Dossier.DossierID}}{{.Dossier.DossierID}}{{else}}JOUW_ACCOUNT_TOKEN{{end}}"]
}</pre>
<button class="copy-icon" onclick="copyCode('manual-config', this)" title="Kopiëren">
<pre id="custom-instructions">At the start of health-related conversations, use the family_health_context tracker from the Inou Health connector to understand what health data is available.</pre>
<button class="copy-icon" onclick="copyCode('custom-instructions', this)" title="Kopiëren">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p>Vervang BRIDGE_PATH door het daadwerkelijke pad. Herstart Claude Desktop.</p>
<p>Dit vertelt Claude om te controleren welke gezondheidsgegevens beschikbaar zijn voor uw familieleden aan het begin van elk gesprek, zonder het contextvenster te vullen met feitelijke medische gegevens.</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">6</span>
<h3>Testen</h3>
</div>
<p>Open Claude Desktop en probeer:</p>
<div class="code-wrapper">
<pre id="step-test">List my available dossiers.</pre>
<button class="copy-icon" onclick="copyCode('step-test', this)" title="Kopiëren">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p>U zou uw dossier(s) moeten zien. U bent helemaal klaar!</p>
</div>
</details>
</div>
<!-- Grok Tab -->
<div id="tab-grok" class="ai-content">
<p>Grok kan via het web je gezondheidsgegevens benaderen via onze API. Geen installatie nodig.</p>
<p>Grok kan toegang krijgen tot uw gezondheidsgegevens via onze API met HTTP-verzoeken. Geen installatie nodig.</p>
<div class="quick-start">
<h3>Snel starten</h3>
<p>Kopieer dit en plak het in Grok:</p>
{{if and .Dossier .Dossier.DossierID}}
{{if .TempToken}}
<div class="step">
<div class="step-header">
<span class="step-num">1</span>
<h3>Plak dit in Grok</h3>
</div>
<div class="code-wrapper">
<pre id="grok-code">Fetch https://inou.com/api/docs to see the API documentation.
Then fetch https://inou.com/api/dossiers?token={{if and .Dossier .Dossier.DossierID}}{{.Dossier.DossierID}}{{else}}JOUW_ACCOUNT_TOKEN{{end}} to list my dossiers.
If there is more than one dossier, ask me which one to work with before proceeding.
Help me explore my health data - imaging studies, genome variants, and lab results.
<pre id="grok-code">Access my health data using the Inou API.
IMPORTANT:
- Allow 3 seconds for API responses before assuming failure.
- When sharing image links, use the exact image_url from responses.
- This is real medical data. NEVER hallucinate. Only describe what you actually see.</pre>
Fetch https://inou.com/api/v1/dossiers?token={{.TempToken}}
Show me the list of dossiers with their details and wait for my instructions.
API docs: https://inou.com/api/docs
IMPORTANT: This is real medical data. NEVER hallucinate. Only describe what you see.
If you get a 401 error with "token expired", ask me to visit https://inou.com/connect?tab=grok for a fresh token.</pre>
<button class="copy-icon" onclick="copyCode('grok-code', this)" title="Kopiëren">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
@ -149,39 +146,57 @@ IMPORTANT:
</svg>
</button>
</div>
<p class="step-note">Token verloopt op {{.TempTokenExpires}}. <a href="/connect?tab=grok">Ververs de pagina</a> voor een nieuw token.</p>
</div>
{{else}}
<div class="step">
<div class="step-header">
<span class="step-num">1</span>
<h3>Genereer API-token</h3>
</div>
<p>U heeft een API-token nodig om Grok te verbinden met uw gegevens.</p>
<form method="POST" action="/api/token/generate?return=grok" style="margin-top: 12px;">
<button type="submit" class="btn btn-primary">Token genereren</button>
</form>
</div>
{{end}}
{{else}}
<div class="login-tracker">
<a href="/start">Meld u aan</a> om uw API-token te genereren en gepersonaliseerde installatie-instructies te ontvangen.
</div>
{{end}}
<div class="step">
<div class="step-header">
<span class="step-num">→</span>
<h3>Wat Grok kan doen</h3>
</div>
<p>Eenmaal verbonden kun je Grok vragen om:</p>
<p>Eenmaal verbonden, vraag Grok om:</p>
<ul>
<li>Al je beeldvormingsstudies, genoomgegevens en labresultaten te tonen</li>
<li>Series binnen een specifieke studie te laten zien</li>
<li>Individuele slices op te halen en te analyseren</li>
<li>Beelden te vergelijken tussen verschillende sequenties (T1, T2, FLAIR)</li>
<li>Naar specifieke anatomische regio's te navigeren</li>
<li>Genoomvarianten op te zoeken op gen, categorie of rsid</li>
<li>Een lijst van al uw beeldvormingsstudies, genoomgegevens en laboratoriumresultaten</li>
<li>Series binnen een specifieke studie te tonen</li>
<li>Afzonderlijke doorsneden op te halen en te analyseren</li>
<li>Afbeeldingen te vergelijken over verschillende sequenties (T1, T2, FLAIR)</li>
<li>Naar specifieke anatomische gebieden te navigeren</li>
<li>Genoomvarianten op te vragen per gen, categorie of rsid</li>
<li>Medicatiereacties en gezondheidsrisico's te bekijken</li>
<li>Labwaarden in de tijd te volgen</li>
<li>Labwaarden in de loop van de tijd te volgen</li>
</ul>
</div>
<p style="margin-top: 24px;">Zie de <a href="/api/docs" style="color: var(--accent);">volledige API-documentatie</a> voor alle beschikbare endpoints.</p>
<p style="margin-top: 24px;">Bekijk de <a href="/api/docs" style="color: var(--accent);">volledige API-documentatie</a> voor alle beschikbare eindpunten.</p>
</div>
<!-- ChatGPT Tab -->
<div id="tab-chatgpt" class="ai-content">
<p style="color: var(--text-muted);">Niet aanbevolen voor medische beeldvorming vanwege verhoogd risico op hallucinaties in onze tests.</p>
<p style="color: var(--text-muted);">Niet aanbevolen voor medische beeldvorming vanwege een verhoogd hallucinatierisico in onze tests.</p>
<div class="step">
<div class="step-header">
<span class="step-num muted">✗</span>
<h3>Waarom niet ChatGPT?</h3>
</div>
<p>Medische beeldvorming vereist absolute nauwkeurigheid. In onze tests verzon ChatGPT informatie, zelfs wanneer correcte gegevens duidelijk werden verstrekt. We kunnen het niet aanbevelen voor het analyseren van gezondheidsgegevens waar fouten echte gevolgen hebben.</p>
<p>Medische beeldvorming vereist absolute nauwkeurigheid. In onze tests heeft ChatGPT informatie gefabriceerd, zelfs wanneer correcte gegevens duidelijk werden verstrekt. We kunnen het niet aanbevelen voor het analyseren van gezondheidsgegevens waarbij fouten echte gevolgen hebben.</p>
</div>
<div class="step">
@ -189,33 +204,33 @@ IMPORTANT:
<span class="step-num">→</span>
<h3>Aanbevolen alternatieven</h3>
</div>
<p>Gebruik <a href="#" onclick="showTab('claude'); return false;">Claude Desktop</a> voor de beste ervaring met native tool-toegang, of <a href="#" onclick="showTab('grok'); return false;">Grok</a> voor webtoegang zonder installatie.</p>
<p>Gebruik <a href="#" onclick="showTab('claude'); return false;">Claude Desktop</a> voor de beste ervaring met native tool-toegang, of <a href="#" onclick="showTab('grok'); return false;">Grok</a> voor webgebaseerde toegang zonder installatie.</p>
</div>
</div>
<!-- Other AI Tab -->
<div id="tab-other" class="ai-content">
<p>Andere AI-assistenten kunnen je gegevens benaderen via onze web-API, hoewel mogelijkheden variëren.</p>
<p>Andere AI-assistenten kunnen toegang krijgen tot uw gegevens via onze web-API, hoewel de mogelijkheden variëren.</p>
<div class="step">
<div class="step-header">
<span class="step-num warning">⚠</span>
<h3>Gemini</h3>
</div>
<p>Gemini's webbrowsing is momenteel beperkt en kan mogelijk geen inou.com-URL's direct ophalen. Workarounds:</p>
<p>Het surfen op het web van Gemini is momenteel beperkt en kan inou.com-URL's mogelijk niet direct ophalen. Mogelijke oplossingen:</p>
<ul>
<li>Kopieer API-responses handmatig en plak ze in Gemini</li>
<li>Gebruik Google AI Studio met function calling</li>
<li>Overweeg Claude Desktop of Grok in plaats daarvan</li>
<li>Kopieer API-antwoorden handmatig en plak ze in Gemini</li>
<li>Gebruik Google AI Studio met functieaanroepen</li>
<li>Overweeg in plaats daarvan Claude Desktop of Grok te gebruiken</li>
</ul>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">→</span>
<h3>Bouw je eigen</h3>
<h3>Bouw uw eigen integratie</h3>
</div>
<p>Onze API is eenvoudige REST + JSON. Zie de <a href="/api/docs">API-documentatie</a> voor endpoints en authenticatie.</p>
<p>Onze API is eenvoudig REST + JSON. Bekijk de <a href="/api/docs">API-documentatie</a> voor eindpunten en authenticatie.</p>
</div>
</div>
</div>
@ -239,5 +254,14 @@ function showTab(name) {
document.querySelector('[onclick="showTab(\'' + name + '\')"]').classList.add('active');
document.getElementById('tab-' + name).classList.add('active');
}
// Check for tab parameter on page load
(function() {
const params = new URLSearchParams(window.location.search);
const tab = params.get('tab');
if (tab && document.getElementById('tab-' + tab)) {
showTab(tab);
}
})();
</script>
{{end}}

View File

@ -1,31 +1,25 @@
{{define "connect_ru"}}
{{define "connect"}}
<div class="install-container">
<div class="install-header">
<div>
<h1>Подключите ИИ к вашим данным</h1>
<p>Выберите вашего ИИ-ассистента и следуйте инструкциям по установке.</p>
<p>Выберите ИИ-ассистента и следуйте инструкциям по настройке.</p>
</div>
{{if and .Dossier .Dossier.DossierID}}<a href="/dashboard" class="btn btn-secondary btn-small">← Назад</a>{{else}}<a href="/" class="btn btn-secondary btn-small">← Главная</a>{{end}}
</div>
{{if not (and .Dossier .Dossier.DossierID)}}
<div class="login-tracker">
<strong>Примечание:</strong> <a href="/start">Войдите</a>, чтобы увидеть персонализированные инструкции с вашим токеном учётной записи.
</div>
{{end}}
<div class="install-card">
<div class="ai-tabs">
<button class="ai-tab active" onclick="showTab('claude')">Claude Desktop</button>
<button class="ai-tab" onclick="showTab('grok')">Grok</button>
<button class="ai-tab" onclick="showTab('chatgpt')">ChatGPT</button>
<button class="ai-tab" onclick="showTab('other')">Другие ИИ</button>
<button class="ai-tab" onclick="showTab('other')">Другой ИИ</button>
</div>
<!-- Claude Desktop Tab -->
<div id="tab-claude" class="ai-content active">
<p>Claude Desktop с MCP обеспечивает лучший опыт — нативный доступ к инструментам, без загрузки URL, полные возможности API.</p>
<p>Claude Desktop подключается напрямую к <span class="inou-brand">inou</span> через OAuth — не нужно копировать токены или устанавливать расширения.</p>
<div class="step">
<div class="step-header">
@ -38,110 +32,113 @@
<div class="step">
<div class="step-header">
<span class="step-num">2</span>
<h3>Установите расширение inou</h3>
<h3>Добавьте коннектор Inou</h3>
</div>
<p>Скачайте <a href="/download/inou.mcpb">inou.mcpb</a> и установите:</p>
<ul style="margin: 8px 0 12px 20px;">
<li><strong>Mac:</strong> Дважды щёлкните по файлу</li>
<li><strong>Windows:</strong> В Claude Desktop перейдите в <em>File → Import Extension</em> и выберите скачанный файл</li>
</ul>
<p>При запросе введите токен вашей учётной записи:</p>
<div class="code-wrapper">
<pre id="step2-token">{{if and .Dossier .Dossier.DossierID}}{{.Dossier.DossierID}}{{else}}ВАШ_ТОКЕН_УЧЁТНОЙ_ЗАПИСИ{{end}}</pre>
<button class="copy-icon" onclick="copyCode('step2-token', this)" title="Копировать">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p class="step-note"><strong>Примечание:</strong> Вы увидите предупреждение о разрешениях — это нормально для расширений, ещё не включённых в официальный каталог Claude. <span class="inou-brand">inou</span> делает только HTTPS-запросы к inou.com; локальные файлы не затрагиваются.</p>
<p>В Claude Desktop:</p>
<ol style="margin: 8px 0 12px 20px;">
<li>Перейдите в <strong>Настройки → Коннекторы</strong></li>
<li>Нажмите <strong>Добавить пользовательский коннектор</strong></li>
<li>Заполните поля:</li>
</ol>
<table style="margin: 12px 0; border-collapse: collapse; width: 100%;">
<tr>
<td style="padding: 8px 12px; border: 1px solid var(--border); background: var(--bg-muted); font-weight: 500;">Название</td>
<td style="padding: 8px 12px; border: 1px solid var(--border);"><code>Inou Health</code></td>
</tr>
<tr>
<td style="padding: 8px 12px; border: 1px solid var(--border); background: var(--bg-muted); font-weight: 500;">URL удалённого MCP-сервера</td>
<td style="padding: 8px 12px; border: 1px solid var(--border);"><code>https://inou.com/mcp</code></td>
</tr>
</table>
<p>Нажмите <strong>Добавить</strong>, затем <strong>Подключить</strong>.</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">3</span>
<h3>Включите и разрешите доступ</h3>
<h3>Войти</h3>
</div>
<p>Перейдите в <strong>Settings → Extensions</strong> и включите расширение inou, если оно ещё не включено.</p>
<p>При первом использовании Claude запросит разрешение для каждого инструмента. Выберите <strong>"Allow for this chat"</strong> и отметьте <strong>"Don't ask again for inou-health"</strong>, чтобы дать все разрешения сразу — иначе вас спросят 11 раз.</p>
<p>Откроется браузер для входа в <span class="inou-brand">inou</span>. После входа нажмите <strong>Открыть Claude</strong> для завершения подключения.</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">4</span>
<h3>Тест</h3>
<h3>Разрешить инструменты</h3>
</div>
<p>Откройте Claude Desktop и вставьте:</p>
<div class="code-wrapper">
<pre id="step3-test">Покажи мои доступные досье через мост inou.</pre>
<button class="copy-icon" onclick="copyCode('step3-test', this)" title="Копировать">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p>Вы должны увидеть ваше(и) досье. Готово!</p>
<p>Чтобы не разрешать доступ 11 раз:</p>
<ol style="margin: 8px 0 12px 20px;">
<li>В <strong>Настройки → Коннекторы</strong> найдите <strong>Inou Health</strong></li>
<li>Нажмите <strong>Настроить</strong> (значок шестерёнки)</li>
<li>В разделе <strong>Инструменты только для чтения</strong> выберите <strong>Всегда разрешать</strong></li>
</ol>
<p>Это даёт Claude разрешение читать ваши медицинские данные без повторных запросов.</p>
</div>
<details style="margin-top: 24px;">
<summary style="cursor: pointer; color: var(--text-muted); font-size: 0.9rem;">Ручная установка (продвинутый)</summary>
<div style="margin-top: 16px;">
<div class="step">
<div class="step-header">
<span class="step-num muted">1</span>
<h3>Скачайте мост</h3>
<span class="step-num">5</span>
<h3>Добавьте пользовательские инструкции (рекомендуется)</h3>
</div>
<p>Скачайте мост для вашей системы:</p>
<ul>
<li><a href="/download/inou_bridge_darwin_arm64">Mac Apple Silicon</a></li>
<li><a href="/download/inou_bridge_darwin_amd64">Mac Intel</a></li>
<li><a href="/download/inou_bridge_win_amd64.exe">Windows 64-bit</a></li>
</ul>
<p>Сохраните в ~/bin/inou_bridge (Mac) или %USERPROFILE%\inou\inou_bridge.exe (Windows). Сделайте исполняемым на Mac: chmod +x ~/bin/inou_bridge</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num muted">2</span>
<h3>Настройте Claude</h3>
</div>
<p>Отредактируйте конфигурацию Claude (Mac: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json) и добавьте в mcpServers:</p>
<p>Для автоматической загрузки контекста медицинских данных семьи в каждом разговоре:</p>
<ol style="margin: 8px 0 12px 20px;">
<li>В Claude Desktop перейдите в <strong>Настройки → Пользовательские инструкции</strong></li>
<li>В текстовое поле добавьте:</li>
</ol>
<div class="code-wrapper">
<pre id="manual-config">"inou": {
"command": "BRIDGE_PATH",
"args": ["--server=https://inou.com", "--account={{if and .Dossier .Dossier.DossierID}}{{.Dossier.DossierID}}{{else}}ВАШ_ТОКЕН_УЧЁТНОЙ_ЗАПИСИ{{end}}"]
}</pre>
<button class="copy-icon" onclick="copyCode('manual-config', this)" title="Копировать">
<pre id="custom-instructions">At the start of health-related conversations, use the family_health_context tracker from the Inou Health connector to understand what health data is available.</pre>
<button class="copy-icon" onclick="copyCode('custom-instructions', this)" title="Копировать">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p>Замените BRIDGE_PATH на фактический путь. Перезапустите Claude Desktop.</p>
<p>Это говорит Claude проверять, какие медицинские данные доступны для членов вашей семьи в начале каждого разговора, не заполняя контекстное окно фактическими медицинскими данными.</p>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">6</span>
<h3>Тестирование</h3>
</div>
<p>Откройте Claude Desktop и попробуйте:</p>
<div class="code-wrapper">
<pre id="step-test">List my available dossiers.</pre>
<button class="copy-icon" onclick="copyCode('step-test', this)" title="Копировать">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
<path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path>
</svg>
</button>
</div>
<p>Вы должны увидеть своё досье(а). Всё готово!</p>
</div>
</details>
</div>
<!-- Grok Tab -->
<div id="tab-grok" class="ai-content">
<p>Grok может получить доступ к вашим медицинским данным напрямую через наш API. Установка не требуется.</p>
<p>Grok может получить доступ к вашим медицинским данным через наш API с помощью HTTP-запросов. Установка не требуется.</p>
<div class="quick-start">
<h3>Быстрый старт</h3>
<p>Скопируйте это и вставьте в Grok:</p>
{{if and .Dossier .Dossier.DossierID}}
{{if .TempToken}}
<div class="step">
<div class="step-header">
<span class="step-num">1</span>
<h3>Вставьте это в Grok</h3>
</div>
<div class="code-wrapper">
<pre id="grok-code">Fetch https://inou.com/api/docs to see the API documentation.
Then fetch https://inou.com/api/dossiers?token={{if and .Dossier .Dossier.DossierID}}{{.Dossier.DossierID}}{{else}}ВАШ_ТОКЕН_УЧЁТНОЙ_ЗАПИСИ{{end}} to list my dossiers.
If there is more than one dossier, ask me which one to work with before proceeding.
Help me explore my health data - imaging studies, genome variants, and lab results.
<pre id="grok-code">Access my health data using the Inou API.
IMPORTANT:
- Allow 3 seconds for API responses before assuming failure.
- When sharing image links, use the exact image_url from responses.
- This is real medical data. NEVER hallucinate. Only describe what you actually see.</pre>
Fetch https://inou.com/api/v1/dossiers?token={{.TempToken}}
Show me the list of dossiers with their details and wait for my instructions.
API docs: https://inou.com/api/docs
IMPORTANT: This is real medical data. NEVER hallucinate. Only describe what you see.
If you get a 401 error with "token expired", ask me to visit https://inou.com/connect?tab=grok for a fresh token.</pre>
<button class="copy-icon" onclick="copyCode('grok-code', this)" title="Копировать">
<svg viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect>
@ -149,39 +146,57 @@ IMPORTANT:
</svg>
</button>
</div>
<p class="step-note">Токен истекает {{.TempTokenExpires}}. <a href="/connect?tab=grok">Обновите страницу</a> для получения нового токена.</p>
</div>
{{else}}
<div class="step">
<div class="step-header">
<span class="step-num">1</span>
<h3>Создать API-токен</h3>
</div>
<p>Для подключения Grok к вашим данным необходим API-токен.</p>
<form method="POST" action="/api/token/generate?return=grok" style="margin-top: 12px;">
<button type="submit" class="btn btn-primary">Создать токен</button>
</form>
</div>
{{end}}
{{else}}
<div class="login-tracker">
<a href="/start">Войдите</a>, чтобы создать API-токен и получить персонализированные инструкции по настройке.
</div>
{{end}}
<div class="step">
<div class="step-header">
<span class="step-num">→</span>
<h3>Что может делать Grok</h3>
<h3>Что умеет Grok</h3>
</div>
<p>После подключения попросите Grok:</p>
<ul>
<li>Показать все ваши исследования визуализации, геномные данные и результаты анализов</li>
<li>Вывести список всех исследований, геномных данных и результатов анализов</li>
<li>Показать серии в конкретном исследовании</li>
<li>Загрузить и проанализировать отдельные срезы</li>
<li>Сравнить изображения между разными последовательностями (T1, T2, FLAIR)</li>
<li>Перейти к определённым анатомическим областям</li>
<li>Найти геномные варианты по гену, категории или rsid</li>
<li>Получить и проанализировать отдельные срезы</li>
<li>Сравнить изображения в разных последовательностях (T1, T2, FLAIR)</li>
<li>Перейти к конкретным анатомическим областям</li>
<li>Запросить геномные варианты по гену, категории или rsid</li>
<li>Просмотреть реакции на лекарства и риски для здоровья</li>
<li>Отслеживать лабораторные показатели во времени</li>
<li>Отслеживать показатели анализов в динамике</li>
</ul>
</div>
<p style="margin-top: 24px;">См. <a href="/api/docs" style="color: var(--accent);">полную документацию API</a> для всех доступных эндпоинтов.</p>
<p style="margin-top: 24px;">Смотрите <a href="/api/docs" style="color: var(--accent);">полную документацию API</a> для получения информации обо всех доступных эндпоинтах.</p>
</div>
<!-- ChatGPT Tab -->
<div id="tab-chatgpt" class="ai-content">
<p style="color: var(--text-muted);">Не рекомендуется для медицинской визуализации из-за повышенного риска галлюцинаций в наших тестах.</p>
<p style="color: var(--text-muted);">Не рекомендуется для медицинской визуализации из-за повышенного риска галлюцинаций по результатам наших тестов.</p>
<div class="step">
<div class="step-header">
<span class="step-num muted">✗</span>
<h3>Почему не ChatGPT?</h3>
</div>
<p>Медицинская визуализация требует абсолютной точности. В наших тестах ChatGPT выдумывал информацию, даже когда правильные данные были чётко предоставлены. Мы не можем рекомендовать его для анализа медицинских данных, где ошибки имеют реальные последствия.</p>
<p>Медицинская визуализация требует абсолютной точности. В наших тестах ChatGPT придумывал информацию, даже когда корректные данные были явно предоставлены. Мы не можем рекомендовать его для анализа медицинских данных, где ошибки имеют реальные последствия.</p>
</div>
<div class="step">
@ -189,7 +204,7 @@ IMPORTANT:
<span class="step-num">→</span>
<h3>Рекомендуемые альтернативы</h3>
</div>
<p>Используйте <a href="#" onclick="showTab('claude'); return false;">Claude Desktop</a> для лучшего опыта с нативным доступом к инструментам, или <a href="#" onclick="showTab('grok'); return false;">Grok</a> для веб-доступа без установки.</p>
<p>Используйте <a href="#" onclick="showTab('claude'); return false;">Claude Desktop</a> для лучшего опыта с нативным доступом к инструментам или <a href="#" onclick="showTab('grok'); return false;">Grok</a> для веб-доступа без установки.</p>
</div>
</div>
@ -202,20 +217,20 @@ IMPORTANT:
<span class="step-num warning">⚠</span>
<h3>Gemini</h3>
</div>
<p>Веб-браузинг Gemini в настоящее время ограничен и может не загружать URL-адреса inou.com напрямую. Обходные пути:</p>
<p>Просмотр веб-страниц в Gemini в настоящее время ограничен и может не иметь возможности напрямую получать URL-адреса inou.com. Обходные пути:</p>
<ul>
<li>Скопируйте ответы API вручную и вставьте их в Gemini</li>
<li>Используйте Google AI Studio с вызовом функций</li>
<li>Рассмотрите вместо этого Claude Desktop или Grok</li>
<li>Рассмотрите использование Claude Desktop или Grok</li>
</ul>
</div>
<div class="step">
<div class="step-header">
<span class="step-num">→</span>
<h3>Создайте своё</h3>
<h3>Создайте собственную интеграцию</h3>
</div>
<p>Наш API — простой REST + JSON. См. <a href="/api/docs">документацию API</a> для эндпоинтов и аутентификации.</p>
<p>Наш API прост: REST + JSON. Смотрите <a href="/api/docs">документацию API</a> для получения информации об эндпоинтах и аутентификации.</p>
</div>
</div>
</div>
@ -239,5 +254,14 @@ function showTab(name) {
document.querySelector('[onclick="showTab(\'' + name + '\')"]').classList.add('active');
document.getElementById('tab-' + name).classList.add('active');
}
// Check for tab parameter on page load
(function() {
const params = new URLSearchParams(window.location.search);
const tab = params.get('tab');
if (tab && document.getElementById('tab-' + tab)) {
showTab(tab);
}
})();
</script>
{{end}}