Přeskočit na obsah

PROPOJENÍ S VAŠIMI NÁSTROJI

Vaše přepisy.
Tam, kde pracujete.

Asistent si přečte historii přes MCP, skript zpracuje nahrávku přes CLI a Váš systém dostane hotový přepis webhookem.

Nejdřív osobní token a serverová historie.

Token vytvoříte v účtu → Tokeny. Pro čtení přepisů zapněte serverovou historii. Přepisy uložené pouze ve Vašem zařízení se tím automaticky nezpřístupní.

01 / MCP

Připojte svého asistenta

MCP server umí hledat v serverové historii nástrojem najdi_prepisy, načíst konkrétní záznam přes vrat_prepis a přidat vlastní výraz přes pridej_do_slovniku.

Balíček zatím není publikovaný na npm. Následující postup je pro uživatele, kteří už mají zdrojový kód Diktuj. Veřejný instalační balíček připravujeme.

Instalace ze zdrojů

Potřebujete Node.js 20 nebo novější. V adresáři repozitáře spusťte:

cd integrations/mcp
npm ci
npm run build

Claude Desktop

Do svého souboru claude_desktop_config.json přidejte konfiguraci níže. Cesty nahraďte skutečnými absolutními cestami; cestu k Node zjistíte příkazem command -v node. Ostatní servery v souboru zachovejte.

{
  "mcpServers": {
    "diktuj": {
      "command": "/absolutni/cesta/k/node",
      "args": ["/cesta/diktuj/integrations/mcp/dist/src/bin.js"],
      "env": { "DIKTUJ_TOKEN": "SEM_VLOZTE_OSOBNI_TOKEN" }
    }
  }
}

Vložte svůj osobní token a přístup ke konfiguračnímu souboru omezte na svého uživatele. Soubor s tokenem neposílejte dál ani neukládejte do repozitáře. Potom restartujte asistenta.

Claude Code a Codex

Proměnnou DIKTUJ_TOKEN nastavte v prostředí ze svého správce tajemství. Token nevkládejte do argumentů příkazu.

claude mcp add --transport stdio --scope user diktuj -- node /cesta/diktuj/integrations/mcp/dist/src/bin.js

Pro Codex přidejte do osobního souboru ~/.codex/config.toml:

[mcp_servers.diktuj]
command = "node"
args = ["/cesta/diktuj/integrations/mcp/dist/src/bin.js"]
env_vars = ["DIKTUJ_TOKEN"]

Ověřte připojení

Po spuštění asistenta napište: „Najdi moje poslední přepisy z diktuj.to.“ Pokud je historie vypnutá nebo token neplatný, MCP vrátí chybu s vysvětlením.

Osobní token nepovoluje nástroj shrn; ten vyžaduje širší token zařízení. Pro běžné připojení používejte osobní token. Vzdálený MCP pro přímé připojení ChatGPT zatím není připravený.

02 / CLI

Diktuj z terminálu

CLI čte historii, hledá přepisy a odešle zvukový soubor k přepisu. Balíček zatím není publikovaný na npm; ze zdrojového repozitáře jej nainstalujete s Node.js 20.3 nebo novějším:

npm install -g ./cli
diktuj --help

Přihlášení a první příkazy

Předejte token ze správce tajemství na standardní vstup. Zástupný příkaz prikaz-spravce-tajemstvi nahraďte příkazem svého správce, který vypíše jen Váš token.

prikaz-spravce-tajemstvi | diktuj prihlaseni --token-stdin
diktuj historie --limit 50
diktuj hledej "schůzka" --format json
diktuj prepis schuzka.m4a --format txt

Pro přepis souboru musí mít token oprávnění imports, v účtu označené „Povolit přepis nahrávek“. Přepis se účtuje z Vašeho kreditu. SRT zatím obsahuje jeden titulek přes celou nahrávku, bez časování jednotlivých vět.

CLI ukládá token do souboru ~/.config/diktuj/prihlaseni.json s oprávněním 600. Příkaz diktuj odhlaseni odstraní místní přihlášení; samotný token odvoláte v účtu.

03 / WEBHOOKY

Hotový přepis doručíme Vám

Ve správě webhooků zadejte veřejnou HTTPS adresu a vyberte události prepis.hotovy, import.hotovy nebo schuzka.hotova. Zpráva obsahuje text a metadata, nikdy zvuk.

Ověřte podpis před zpracováním

Každá zpráva má hlavičky X-Diktuj-Signature, X-Diktuj-Timestamp, X-Diktuj-Event a X-Diktuj-Delivery. HMAC-SHA256 podepisuje čas, tečku a původní bajty těla. Ukázka pro Node.js:

import { createHmac, timingSafeEqual } from 'node:crypto';

// teloRaw je Buffer se surovým tělem před JSON.parse.
function overPodpis(tajemstvi, hlavicky, teloRaw) {
  const cas = hlavicky['x-diktuj-timestamp'];
  const podpis = hlavicky['x-diktuj-signature'];
  if (typeof cas !== 'string' || !/^\d{1,15}$/.test(cas) ||
      typeof podpis !== 'string' || !/^v1=[a-f0-9]{64}$/.test(podpis)) return false;
  const ocekavany = createHmac('sha256', tajemstvi)
    .update(cas + '.').update(teloRaw).digest('hex');
  if (!timingSafeEqual(Buffer.from(podpis.slice(3), 'hex'),
      Buffer.from(ocekavany, 'hex'))) return false;
  const stari = Math.floor(Date.now() / 1000) - Number(cas);
  return stari >= -60 && stari <= 300;
}

Tajemství webhooku uchovávejte na serveru. Podpis kontrolujte nad surovým tělem před parsováním JSON. Odmítejte zprávy starší než pět minut a zprávy více než minutu z budoucnosti.

Otestujte doručení

Ve správě webhooků použijte test doručení. Ověřte podpis a odpovězte stavem 2xx. Testovací zprávu poznáte podle zdrojového id začínajícího test-; nezakládejte z ní skutečný přepis.

Opakované pokusy mají stejné zdrojové id, ale nové delivery_id. Zpracované události rozlišujte podle druhu události a zdrojového ID. Fronta je v paměti brány a po restartu se neobnoví, proto webhook není zárukou úplné synchronizace.