Back to Alchemy
Alchemy RecipeAdvancedautomation

Healthcare clinic intake forms to personalised patient education videos automatically

A patient arrives at your clinic and completes the intake form. They mention a diagnosis they've never heard of, ask about medication side effects, and wonder what recovery looks like. Your clinic has excellent educational materials, but they're generic. The patient gets a one-size-fits-all PDF. What they really need is something tailored to their specific condition, their literacy level, and their concerns. This scenario repeats dozens of times a week across most healthcare practices. Staff spend hours matching patients to materials, or worse, don't bother at all. The result is confused patients, follow-up calls, and potentially worse health outcomes. What if instead you could capture intake data and automatically generate a personalised video in the patient's preferred language, complete with a professional presenter explaining their specific situation? This workflow combines five tools to turn paperwork into personalised video guidance without anyone touching the files in between. Let's build it.

The Automated Workflow

We'll use n8n as the orchestration backbone because it handles file uploads cleanly, integrates well with webhook-based services, and lets you store state between steps without writing much code. Here's how data flows: 1. Patient completes intake form (Google Forms, Typeform, or your clinic system).

  1. Webhook triggers n8n workflow.

  2. Cogram notes are fetched or intake data is passed to Claude Code for content generation.

  3. Generated content is sent to ElevenLabs for voice synthesis.

  4. Audio and script go to Hour One for video creation.

  5. Freed AI documents the encounter (optional clinical note).

  6. Final video is emailed to the patient.

Step 1: Capture the trigger

Your intake form (Google Forms, Typeform, or direct API call from your EHR) sends data to n8n via webhook. Here's what a basic webhook payload looks like:

POST https://your-n8n-instance.com/webhook/patient-intake
Content-Type: application/json { "patient_name": "Sarah Chen", "condition": "Type 2 Diabetes", "age": 52, "literacy_level": "college", "preferred_language": "en", "concerns": ["medication side effects", "diet changes", "exercise routine"]
}

Set up an n8n Webhook node to receive this. Keep the authentication simple for now; tighten it later with API keys if this is production.

Step 2: Generate personalised content with Claude Code

Instead of storing templates, ask Claude Opus 4.6 to generate a 2-3 minute video script tailored to the patient's situation. Claude Code lets you iterate and refine the script in context. In n8n, add an HTTP Request node or use the native Anthropic node:

POST https://api.anthropic.com/v1/messages
Content-Type: application/json
Authorization: Bearer YOUR_ANTHROPIC_KEY { "model": "claude-opus-4.6", "max_tokens": 1500, "messages": [ { "role": "user", "content": "Create a 2-3 minute educational video script for a 52-year-old patient recently diagnosed with Type 2 Diabetes. Focus on: medication side effects, diet changes, and exercise routine. Use simple language (college reading level). Make it conversational and reassuring. Include specific examples. Output as plain text, suitable for text-to-speech." } ]
}

Claude will generate something like:

Hello Sarah. I'm here to help you understand your Type 2 Diabetes diagnosis and what comes next. You've just been prescribed metformin. Many patients worry about side effects, so let's talk about what's normal and what isn't. Metformin can cause mild stomach upset for the first week or two, usually in the morning. That's normal and almost always improves. If it persists, tell your doctor. Now, diet. This doesn't mean you can never eat your favourite foods again. It means paying attention to portion sizes, especially carbohydrates...

Store this output in an n8n variable called $json.script_content.

Step 3: Generate voice with ElevenLabs

Pass the script to ElevenLabs Turbo v2.5 for voice synthesis. Use a professional, calm voice profile. ElevenLabs returns an audio file URL.

POST https://api.elevenlabs.io/v1/text-to-speech/YOUR_VOICE_ID
Content-Type: application/json
Authorization: xi-api-key YOUR_ELEVENLABS_KEY { "text": "{{ $json.script_content }}", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 }
}

ElevenLabs responds with a URL to the MP3 file. Save this as $json.audio_url.

Step 4: Create the video with Hour One

Hour One takes your script and audio, pairs it with a virtual presenter, and outputs a finished video file. This is where the workflow feels magical to the patient.

POST https://api.hourone.com/api/v1/videos
Content-Type: application/json
Authorization: Bearer YOUR_HOURONE_KEY { "title": "Your Type 2 Diabetes Education", "script": "{{ $json.script_content }}", "presenter_id": "professional_female_01", "audio_url": "{{ $json.audio_url }}", "output_format": "mp4"
}

Hour One queues the video for processing. You'll get a job ID back. Poll their /status endpoint every 30 seconds until the video is ready.

GET https://api.hourone.com/api/v1/videos/{job_id}/status
Authorization: Bearer YOUR_HOURONE_KEY

Once status returns "complete", grab the video URL from the response.

Step 5: Optional: Clinical documentation with Freed AI

If your clinic wants an automatic clinical note of the intake (separate from the video), send data to Freed AI:

POST https://api.freed.ai/v1/document
Content-Type: application/json
Authorization: Bearer YOUR_FREED_KEY { "patient_id": "{{ $json.patient_id }}", "encounter_type": "intake", "summary": "Patient {{ $json.patient_name }} presents with newly diagnosed {{ $json.condition }}. Key concerns: {{ $json.concerns.join(', ') }}."
}

Freed AI returns a structured clinical note you can store in your EHR.

Step 6: Send video to patient

Use n8n's Email node to send the final video link:

Email node configuration:
To: {{ $json.patient_email }}
Subject: Your Personalised Education Video: {{ $json.condition }}
Body: Hi {{ $json.patient_name }}, We've created a personalised video to help you understand your condition and next steps. Watch it at your own pace. Video: {{ $json.video_url }} Questions? Reply to this email or call us.

Alternatively, if the video file is under 25 MB, attach it directly. Otherwise, upload to a secure patient portal and link from there.

Error handling

Add error catch nodes after each API call: - If Claude fails, log the error and send you an alert; don't proceed.

  • If ElevenLabs times out, retry once with a shorter script.

  • If Hour One is slow, set a 5-minute timeout; if exceeded, notify staff and fall back to emailing the script to the patient instead.

{ "error_handler": { "node": "HTTP Request - ElevenLabs", "on_error": { "type": "retry", "attempts": 2, "delay_seconds": 5, "fallback": "email_script_to_patient" } }
}

The Manual Alternative

If you want more control over the script or presenter, stop the workflow after Claude generates the script. Download it, edit it in Google Docs or Word, then manually upload to Hour One with a chosen presenter. This takes 15 minutes per patient instead of 2 minutes fully automated, but gives your clinicians a chance to add specific warnings or adjust tone. You can still automate the video delivery and clinical documentation.

Pro Tips Rate limits on ElevenLabs.

Turbo v2.5 allows 10,000 characters per minute. If you're batching multiple patients, queue them with 5-second spacing to avoid hitting the ceiling. n8n's "Delay" node is your friend here. Video processing time. Hour One typically takes 2-5 minutes. Don't email the patient immediately; wait for the status check to confirm the file is ready. Build in a 10-minute timeout with a fallback email: "Your video is being created; we'll send it shortly." Cost per patient. At 2-3 minutes of video, you're spending roughly 15p on ElevenLabs, 20p on Hour One, and 5p on Claude. Total: about 40p per personalised video. Compare that to 30 minutes of staff time at £20/hour: you save money after the second video. Multilingual patients. Pass preferred_language to Claude and ask it to generate the script in that language. ElevenLabs supports 30+ languages. Hour One's presenters work with any language. The entire workflow adapts without code changes. Compliance and storage. Freed AI is HIPAA-compliant. Store the video link in your EHR, not the file itself (saves storage). Set a 90-day auto-delete policy on the Hour One server if your clinic protocol requires it. n8n should run on a secure server, not your local machine.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
n8nCloud Professional£60Covers 5M executions/month; one workflow fits easily
Claude Opus 4.6Pay-as-you-go£10–20Approximately £0.015 per 1K input tokens; scripts are small
ElevenLabs Turbo v2.5Creator£1150,000 characters/month; scales to Professional (£50) if needed
Hour OneStandard£80–150Depends on video minutes; budget £0.20 per video
Freed AIHIPAA Plan£200+Includes EHR integration; clinic-wide license
Total per month~£370–450Supports 100–150 personalised videos/month