Back to Alchemy
Alchemy RecipeBeginnerworkflow

Technical specification to user guide conversion pipeline

24 March 2026

Introduction

Converting technical specifications into user-friendly guides is tedious work. A technical writer receives a PDF spec from engineering, manually extracts the key information, rewrites it in plain language, then creates a video walkthrough. Each step requires context switching and human judgment. The whole process takes days.

What if you could automate most of this pipeline? Feed a technical spec into an AI, have it extract and rewrite the content, then generate a polished video guide, all without touching a single file yourself. This workflow combines three tools that handle distinct jobs: document extraction, content generation, and video creation. By connecting them through an orchestration platform, you eliminate the manual handoffs entirely.

This guide walks you through building a technical specification to user guide conversion pipeline. We'll use Chat with PDF by Copilotus to extract content, Hour One to generate a video presenter, and Mintlify to format the documentation. The entire flow runs on autopilot once you trigger it.

The Automated Workflow

Orchestration Tool Choice: n8n

For this workflow, n8n is the best choice. It's self-hosted, handles file uploads natively, and supports complex conditional logic without additional subscription costs. Zapier would work but charges per task; n8n gives you unlimited executions. Make (Integromat) is viable but adds unnecessary complexity for a three-step pipeline.

We'll assume you're running n8n locally or on a cloud instance with access to your file storage.

Step 1: Trigger on File Upload

The workflow starts when someone uploads a PDF technical specification to a designated folder. In n8n, use the Google Drive Watch trigger (or Dropbox, OneDrive, or local filesystem depending on your setup).


Trigger Configuration:
- Event: New file created in folder
- Folder: /uploads/technical-specs/
- File type filter: application/pdf

When a PDF lands in the folder, the workflow fires and captures the file metadata.

Step 2: Extract Content from PDF

Next, send the PDF to Chat with PDF by Copilotus. This API accepts a file and a question, then returns extracted text. The Copilotus API endpoint is:


https://api.copilotus.io/v1/chat-with-pdf

In n8n, create an HTTP Request node. Configure it as follows:


Method: POST
URL: https://api.copilotus.io/v1/chat-with-pdf
Headers:
  Authorization: Bearer YOUR_COPILOTUS_API_KEY
  Content-Type: application/json

Body (JSON):
{
  "file_url": "{{ $node['Google Drive Watch'].data.webViewLink }}",
  "question": "Extract the main features, technical requirements, and use cases from this specification. Format as sections with bullet points."
}

The API returns structured JSON with the extracted content. Store this in a variable for the next step. In n8n, map the response as:


{{ $node['Chat with PDF'].data.response.text }}

Step 3: Generate Presenter Video Script

Now you have extracted content. Feed it to Hour One, which generates a video of an AI presenter reading a script. First, you'll create a refined script from the extracted content using Claude via an HTTP request or Claude Code integration.

If using Claude Code (recommended for its ability to handle JSON processing):

const extractedContent = context.previousNodeOutput;

const scriptPrompt = `You are a technical writer. Take this extracted specification and write a 2-3 minute video script. The script should:
1. Open with a brief introduction to the feature or product
2. Explain each main feature in simple terms
3. Walk through a basic use case
4. Close with next steps for the user

Keep language conversational and avoid jargon. Format with line breaks between sections.

Extracted content:
${extractedContent}`;

const response = await context.callTool('claude', {
  model: 'claude-3-5-sonnet-20241022',
  messages: [{ role: 'user', content: scriptPrompt }]
});

return response.content[0].text;

This generates a natural, conversational script optimised for video presentation.

Step 4: Create Video with Hour One

Now send the script to Hour One's API. Hour One generates a video with an AI presenter speaking the script.


POST https://api.hourone.com/v1/videos
Headers:
  Authorization: Bearer YOUR_HOURONE_API_KEY
  Content-Type: application/json

Body:
{
  "name": "{{ $node['Google Drive Watch'].data.name.replace('.pdf', '') }} - User Guide",
  "script": "{{ $node['Claude'].data.output }}",
  "presenter_id": "anna-female-en-uk",
  "settings": {
    "video_quality": "1080p",
    "background": "white",
    "subtitle_style": "professional"
  }
}

The API response includes a video_id and status. Store the video_id for polling.

Step 5: Poll for Video Completion

Hour One processes videos asynchronously. Use a Wait node (typically 30 seconds) followed by an HTTP Request that polls the status:


GET https://api.hourone.com/v1/videos/{{ $node['Hour One'].data.video_id }}
Headers:
  Authorization: Bearer YOUR_HOURONE_API_KEY

Check the response status. If status is "completed", proceed to step 6. If "processing", loop back with another Wait and poll. If "failed", trigger an error notification.

Step 6: Generate Documentation with Mintlify

Mintlify generates polished API documentation from structured content. You'll convert your extracted specification into Mintlify's OpenAPI format, then use Mintlify's API to build the docs site.

Create a JSON object matching Mintlify's OpenAPI structure:

{
  "openapi": "3.0.0",
  "info": {
    "title": "{{ $node['Google Drive Watch'].data.name.replace('.pdf', '') }}",
    "description": "{{ $node['Chat with PDF'].data.response.summary }}",
    "version": "1.0.0"
  },
  "paths": {
    "/overview": {
      "get": {
        "summary": "Feature Overview",
        "description": "{{ $node['Chat with PDF'].data.response.features }}"
      }
    }
  }
}

Then POST this to Mintlify's deploy endpoint:


POST https://api.mintlify.com/v1/docs
Headers:
  Authorization: Bearer YOUR_MINTLIFY_API_KEY
  Content-Type: application/json

Body: {{ $node['Mintlify Formatter'].data.openapi_spec }}

Mintlify returns a deployed docs URL.

Step 7: Combine Outputs and Create Summary

Finally, gather all outputs, create a summary document, and store it in your knowledge base or email it to stakeholders.

const summary = {
  spec_name: context.triggerData.file_name,
  extraction_timestamp: new Date().toISOString(),
  video_url: context.nodeOutputs['Hour One'].video_download_url,
  documentation_url: context.nodeOutputs['Mintlify Deploy'].site_url,
  status: 'completed'
};

// Save to Google Sheets or send email
return summary;

Use n8n's Google Sheets node to log the summary, or an Email node to notify the team.

Full n8n Workflow Outline

Here's how the nodes connect in n8n:


1. Google Drive Watch (trigger)
   ↓
2. HTTP Request: Chat with PDF API
   ↓
3. Claude Code: Script generation
   ↓
4. HTTP Request: Hour One video creation
   ↓
5. Wait (30 seconds)
   ↓
6. HTTP Request: Poll Hour One status
   ├─ If processing: Loop back to 5
   ├─ If completed: Continue to 7
   └─ If failed: Send error notification
   ↓
7. Function: Format for Mintlify
   ↓
8. HTTP Request: Mintlify deploy
   ↓
9. Google Sheets: Log summary
   ↓
10. Email: Notify stakeholders

Each node's output becomes the next node's input. No manual file transfers, no context switching.

The Manual Alternative

If you prefer human oversight at key points, keep the workflow but add approval nodes. After step 3, before creating the video, insert a Slack notification asking a team member to review the generated script. Use n8n's Wait for Webhook node to pause until they approve.


After Claude Code step:
- Slack notification with script preview
- Wait for webhook response (approval/rejection)
- If approved: Continue to Hour One
- If rejected: Send script back to Claude with feedback

This gives you automation benefits whilst keeping humans in the loop for quality control. The trade-off is that your workflow takes longer, but you catch errors before video generation wastes compute.

Alternatively, run the full automated pipeline, then have someone review the outputs before publishing. This is faster than the manual process but still allows edits.

Pro Tips

1. Rate Limiting and Retry Logic

Hour One's API has rate limits. If you're processing multiple specs, queue requests with delays. In n8n, use the Delay node between API calls:


After each Hour One request:
- Delay: 2 seconds
- Then send next request

For API failures, add retry logic. Most HTTP Request nodes support automatic retries; configure 3 retries with exponential backoff.

2. Cost Optimisation with Conditional Logic

Not every spec needs a video. For internal-only specs, skip Hour One and save money. Use an n8n Switch node to check a tag or folder name:


If folder == "/uploads/public-specs/":
  - Generate video (costs money)
Else:
  - Skip to Mintlify only

This reduces video generation costs by 50-70% if half your specs don't need videos.

3. Error Handling and Notifications

When Copilotus fails to extract text from a corrupted PDF, your workflow breaks silently. Add error handlers:


After Chat with PDF request:
- Check response.success == true
- If false: Send Slack alert + store PDF in quarantine folder
- If true: Continue

4. File Storage and Archival

After processing, your workflow should clean up. Store the original PDF, generated script, video, and docs link together. Create a folder structure:


/processed-specs/
  ├── {spec-name}/
      ├── original.pdf
      ├── extracted-content.json
      ├── generated-script.txt
      ├── video.mp4
      └── docs-url.txt

Use n8n's File operation nodes to organise outputs automatically.

5. Analytics and Performance Tracking

Log workflow execution time and cost per spec. Create a Google Sheet that tracks:


Spec Name | Extraction Time | Script Gen Time | Video Gen Time | Total Cost | Success/Failure

Over time, you'll see which specs take longest and identify optimisation opportunities. Some PDFs are harder to extract from; you might need to adjust your prompt.

Cost Breakdown

ToolPlan NeededMonthly CostNotes
Chat with PDF by CopilotusPro£25Includes 500 API calls; £0.05 per additional call
Hour OneCreator Plan£99Includes 10 videos/month; £9.90 per additional video
MintlifyFree tier£0Free for up to 50 docs; Pro is £19/month for unlimited
n8nSelf-hosted Free£0Unlimited executions; pay only for hosting (AWS/Digital Ocean: £5-15/month)
Claude API (via Copilotus or direct)Pay-as-you-go£5-10Depends on script complexity; ~0.003 USD per 1K tokens
Total Minimum£34-49/monthAssumes 5-10 specs/month and free n8n hosting
Total with Growth£150-200/month30+ specs/month; Hour One overage costs add up

If you process 10 specs per month, cost per spec is roughly £10-15. Compared to a technical writer charging £50+ per guide, this saves 70-80%.

If you opt for Claude Code integration instead of calling Claude separately, costs reduce slightly because tokens are computed within your Copilotus or n8n plan.