Introduction Patient intake forms are a necessary evil in healthcare, but what happens after a patient submits one?
Most clinics manually transcribe key information, write educational summaries, then either email text documents or schedule follow-up calls. It's repetitive, slow, and prone to errors. The real missed opportunity is that this intake data is already structured; it contains exactly the information you need to generate personalised patient education. Why not convert it straight into a video that's far more engaging than a PDF? This workflow takes patient intake forms, extracts the relevant clinical information, generates a customised education script tailored to their conditions and concerns, synthesises a natural-sounding voiceover, and renders it all as a polished video delivered to the patient before their first appointment. No manual copying, no PDF creation, no scheduling delays. Just form submission to patient education video in minutes. The clinic benefits from higher patient engagement, reduced pre-appointment phone calls, and better-informed patients walking through the door. Patients benefit from accessible, personalised education that they can review at their own pace. Let's build it.
The Automated Workflow This workflow runs best on n8n, which has excellent healthcare integrations and handles complex conditional logic without friction.
The pipeline consists of five core steps: form capture, clinical analysis, script generation, voiceover synthesis, and video rendering.
Step 1: Capture form submission
When a patient submits an intake form via your clinic's system (Google Forms, Typeform, or a custom web form), that submission triggers a webhook in n8n.
POST https://your-n8n-instance.com/webhook/patient-intake
Content-Type: application/json { "patient_name": "Sarah Chen", "date_of_birth": "1985-03-15", "chief_complaint": "Lower back pain for 6 weeks", "medical_history": "Type 2 diabetes, hypertension", "current_medications": "Metformin 1000mg daily, Lisinopril 10mg daily", "allergies": "Penicillin, NSAIDs", "patient_email": "sarah.chen@email.com"
}
Configure your form's webhook settings to POST to this endpoint whenever a new submission arrives. If you're using Google Forms, use Zapier as a bridge to trigger the n8n webhook (Zapier has direct integrations with Google Forms).
Step 2: Extract clinical context with Freed AI
Before generating educational content, you need to ensure the intake data is clinically accurate and complete. Freed AI's HIPAA-compliant scribe can parse unstructured clinical notes and structure them properly. In this case, feed the patient's intake information to Freed AI to validate and augment it. Create an n8n HTTP node that calls Freed AI's API:
POST https://api.freed.ai/v1/process
Authorization: Bearer YOUR_FREED_AI_API_KEY
Content-Type: application/json { "input_text": "Patient: Sarah Chen, DOB 15/03/1985. Chief complaint: lower back pain for 6 weeks. Past medical history: Type 2 diabetes, hypertension. Current medications: Metformin 1000mg daily, Lisinopril 10mg daily. Allergies: Penicillin, NSAIDs.", "output_format": "clinical_note"
}
Freed AI will return a structured clinical note that you can extract and pass forward. This step ensures consistency and reduces errors in the next phase.
Step 3: Generate personalised education script
Now you have clean clinical data. Use Claude Opus 4.6 to generate a brief, patient-friendly education script specific to the patient's conditions, medications, and concerns. Claude Opus 4.6 is ideal here because it's exceptionally good at producing medical content that's both accurate and accessible.
POST https://api.anthropic.com/v1/messages
Authorization: Bearer YOUR_ANTHROPIC_API_KEY
Content-Type: application/json { "model": "claude-opus-4.6", "max_tokens": 400, "messages": [ { "role": "user", "content": "Generate a 2-minute patient education script for Sarah Chen, a 38-year-old woman presenting with lower back pain lasting 6 weeks. She has Type 2 diabetes and hypertension. She is allergic to penicillin and NSAIDs. The script should explain what lower back pain is, how diabetes and hypertension may be related, and what she can expect at her first appointment. Use simple, friendly language. Do not mention brand names. Format as plain text suitable for text-to-speech conversion." } ]
}
Extract the generated script from Claude's response. Store it as a variable in n8n for the next step.
Step 4: Synthesise voiceover with ElevenLabs
Take the education script and convert it to speech using ElevenLabs Turbo v2.5, which is fast enough for near-real-time generation and produces natural-sounding voices.
POST https://api.elevenlabs.io/v1/text-to-speech/YOUR_VOICE_ID
Authorization: xi-api-key YOUR_ELEVENLABS_API_KEY
Content-Type: application/json { "text": "Hello Sarah. Welcome to your appointment. Today I'm going to explain what lower back pain is and how your existing health conditions might relate to it...", "model_id": "eleven_turbo_v2_5", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 }, "output_format": "mp3_44100_128"
}
ElevenLabs will return the audio file as a binary stream. Store this as a temporary file within your n8n execution context (n8n has built-in file handling).
Step 5: Generate video with Hour One
Hour One specialises in turning scripts into videos with virtual presenters. Send your script and audio file to Hour One's API to generate a polished video.
POST https://api.hourone.com/v1/videos
Authorization: Bearer YOUR_HOURONE_API_KEY
Content-Type: application/json { "script": "Hello Sarah. Welcome to your appointment...", "avatar_id": "professional_female_presenter_1", "audio_url": "https://your-storage.s3.amazonaws.com/audio_sarah_chen_2024.mp3", "video_title": "Patient Education: Lower Back Pain", "output_resolution": "1920x1080", "background": "clinic_interior"
}
Hour One processes asynchronously. You'll receive a job ID; poll the status endpoint until the video is ready.
GET https://api.hourone.com/v1/videos/JOB_ID_XXXXX/status
Authorization: Bearer YOUR_HOURONE_API_KEY
Step 6: Deliver video to patient
Once the video is complete, upload it to a secure, password-protected portal or email a time-limited download link directly to the patient. Use an HTTP node in n8n to call your clinic's email service or patient portal API.
POST https://your-clinic-api.com/v1/patient-communications
Authorization: Bearer YOUR_CLINIC_API_KEY
Content-Type: application/json { "patient_email": "sarah.chen@email.com", "patient_id": "PT_12345", "message_type": "education_video", "video_url": "https://your-storage.s3.amazonaws.com/education_sarah_chen_2024.mp4", "expires_in_days": 30, "subject": "Your Personalised Pre-Appointment Education"
}
Log the delivery timestamp in your n8n execution history for compliance and follow-up reporting. Error handling and retry logic Build in try-catch logic at each API call. If Freed AI times out, fall back to a simpler prompt to Claude. If ElevenLabs is slow, retry with a slightly lower quality setting. If Hour One reports an error, log it and send an alert to your clinic admin asking them to generate the video manually and upload it to the patient portal.
The Manual Alternative If you prefer more control over each step, or if you're testing this before full automation, you can run it semi-manually.
Extract the form data, open Claude's web interface and write the script yourself, download the audio from ElevenLabs manually, then upload both to Hour One. This takes roughly 10-15 minutes per patient but gives you editorial control over the script quality and lets you customise the avatar and background. Use this approach for high-risk cases or patients with complex presentations where you want clinical review before the video goes out.
Pro Tips Rate limits and quotas. ElevenLabs free tier allows 10,000 characters per month; the Starter plan gives 30,000.
If you're doing five videos per day, you'll hit free tier limits fast. Budget for at least the Starter plan. Hour One has per-video costs that scale with resolution and avatar type; their Pro plan includes monthly video allowances. Audio quality settings. ElevenLabs' stability parameter controls how much variation happens between repeated words (higher stability = robotic). Set it between 0.4 and 0.6 for patient education. If you want a more natural tone, increase similarity_boost to 0.8. Script length. Keep education scripts to 2-3 minutes of speech (roughly 250-400 words). Longer videos are rarely watched in full. For complex conditions, generate multiple videos: one for the patient, one for carers. HIPAA compliance. Freed AI is HIPAA-compliant by default. ElevenLabs and Hour One have HIPAA Business Associate Agreements, but you must sign them explicitly. Never pass unencrypted PHI through public APIs. Use your clinic's secure file storage (encrypted S3, Azure Blob, or similar) as the intermediary. Cost control. Batch process videos during off-peak hours if your tools offer reduced pricing. Most AI APIs charge the same regardless of time, but running large batches overnight reduces the chance of errors causing reruns. Set up n8n to execute the workflow only during scheduled windows.
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| n8n | Cloud Pro | £25 | Unlimited workflows; includes 200k executions. Self-hosted option is free but requires infrastructure. |
| Freed AI | HIPAA Pro | $200 | Unlimited clinical scribe usage; required for HIPAA compliance in healthcare. |
| Claude Opus 4.6 | Pay-as-you-go via API | £50–100 (estimated) | ~$0.015 per 1K input tokens, $0.075 per 1K output tokens. A 400-word education script costs roughly £0.30–0.50 per video. |
| ElevenLabs | Starter | £99 | 100,000 characters per month. At ~300 chars per minute of speech, that's roughly 333 videos. Overages charged at £5 per 10,000 characters. |
| Hour One | Professional | £400–600 | Includes 40 videos per month at 1080p. Additional videos at £10–15 each. |
| Secure storage (S3 or equivalent) | Standard | £5–10 | Minimal usage for temporary files and logs. |
| Total (5 videos/week) | Combined | ~£780–850/month | Breakeven around 8–10 clinic videos per week; scales well beyond that. |