Deploying Claude Code Against the Empire of Inaccessible iframes
iframe Title Remediation · Claude + MCP WorkflowThe Problem. Every video embedded in Canvas lives inside an <iframe> tag.
Without a title attribute, a screen reader announces only "iframe" — and nothing else.
A student using assistive technology has no way to know what they're about to watch.
This is a WCAG 4.1.2 Level A violation — required for ADA/Section 508 compliance. It affects every course with embedded video.
Fixing this one page at a time takes hours. Claude Code does it in minutes — with a human review step built in so nothing gets changed without your approval.
The same workflow runs on any course. Once you've done it once, it's three commands.
"Impressive. Most impressive."
— Darth Vader, The Empire Strikes Back
Before engaging hyperdrive, confirm you have both:
https://canvas.asu.edu/courses/12345
📁 Task folder: C:\Users\Jcampb70\Downloads\TRAINING_iframe-title-remediation\
Open Claude Code from here — CLAUDE.md loads automatically and orients Claude to the task.
Claude needs to launch from inside the task folder so it knows the context of your work. Here's how:
claude and press EnterWhen Claude opens from this folder, it automatically reads a file called
CLAUDE.md — a briefing written specifically for this workflow.
Think of it like handing someone a brief before the meeting starts. Claude already knows:
You don't explain any of that. Just tell it which course you're working on.
CLAUDE.md
Auto-loaded when Claude opens from this folder — orients it to the task and the rules it must follow
ATTENDEE_PROMPTS.md
Ready-to-copy prompts for every step of the workflow — keep this open alongside Claude
TASK_REFERENCE.md
Full directives and title inference logic — Claude reads this file to run the task. Lives inside the iframe-title-remediation folder.
EXAMPLE_iframe-title-review.md
Real example of a completed review file — useful for understanding the format before you review your own. Lives inside the iframe-title-remediation folder.
This is all you need to say. Claude handles everything from here.
I want to run the iframe title remediation task.
Course URL: https://canvas.asu.edu/courses/[ID]
Issues file: C:\path\to\your\student_facing_issues.md
Please orient yourself with CLAUDE.md, then read iframe-title-remediation/TASK_REFERENCE.md
and follow the Claude + MCP workflow. When you build the review table, save it as a .md file
using iframe-title-remediation/EXAMPLE_iframe-title-review.md as the format reference.
Claude will read your issues file, fetch every flagged page in Canvas, and build a review table with a proposed title for each iframe. Nothing in Canvas is touched yet.
Open ATTENDEE_PROMPTS.md, copy Prompt 1 into Notepad to fill in your course URL and issues file path, then paste into Claude.
ATTENDEE_PROMPTS.mdClaude reads your report, fetches every flagged page, and reads each
<iframe> — suggesting a title based on nearby headings and
page context. Nothing is changed in Canvas.
When the scan is complete, Claude presents a review table directly in the session — one row per iframe, grouped by confidence level. This is your approval checkpoint.
→ A review file is also saved automatically to your task folder.
Open the review file. Every iframe row is grouped by confidence:
| Flag | What It Means | Your Action |
|---|---|---|
| ✅ Confident | Known platform + heading found above the iframe | Spot-check a few, then approve the batch |
| ⚠️ Verify | Title from transcript link or less specific context | Click each Canvas link — confirm the video matches |
| ❓ Check | Unknown platform or no context found | Surveys and LTI tools land here — review carefully |
Edit any Suggested Title cell directly in the review file.
Save the file before telling Claude to apply. Markdown files do not auto-save — use Ctrl+S (or your editor's save command) after making any edits so Claude reads your final version.
📄 See a real example:
SOC 101 iFrame Title Review Markdown File
1. Complete your checks/edits of the review table markdown file and save any changes made (File → Save) — then tell Claude it can proceed:
The file was reviewed and edits made. Now update the iframe titles.
2. Claude will give options to deploy the changes:
Pick any page from your review file and spot-check in Canvas:
<iframe — the title attribute should now appear with your descriptive labeltitle="[your title]" — not blank, not generic✅ File housekeeping: Move your review file and change log to the course's Accessibility Remediation folder — not the task folder. The task folder stays clean and reusable across all courses.
📁 Accessibility Workflow\[Course Name] Accessibility Remediation\
| Situation | What Claude Does |
|---|---|
| Page ID returns a 404 | Auto-retries using the URL slug from the report's File: field |
| ID resolves to wrong page + no iframes | Auto-retries by URL slug before filing as "nothing to fix" — no silent skips |
| ❓ Check rows — "Unknown" platform | Usually surveys or LTI tools — review before approving |
| Multiple iframes on one page | Each gets its own row (if:1, if:2) — fixed independently |
| New platform "Unknown" at scale | Add its URL pattern to PLATFORM_PATTERNS in fix_iframe_titles.py |
Use your own course. Bring the student_facing_issues.md
for a course you're currently remediating and run the full workflow with real data.
No file ready? Use the SOC 101 file in
Accessibility Workflow\SOC 101 Accessibility Remediation\
title="…" on the <iframe>Mission Complete
WCAG 4.1.2 Name, Role, Value (Level A) · iframe Title Remediation · Canvas LMS
Developed by Jaclyn Campbell · ASU Learning Enterprise · Instructional Designer