Transcript: invictus_20250721_061832.html

View and copy the extracted transcript JSON

Back to Files

Narration Generator

Generate narration from your transcript

Leave empty to use default narration settings. Use this to customize the narration approach.

[
  {
    "slide": 1,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Invictus\nUnbowed, Unbroken.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 2,
    "fragments": [
      {
        "fragment_index": 1,
        "text_description": "Meet the Poet",
        "image_description": ""
      },
      {
        "fragment_index": 2,
        "text_description": "",
        "image_description": "https://asset.sparkl.ac/pb/sparkl-vector-images/img_ncert/1lg5URugVso6zVHsXyJG0vnFwI219tWfB0y4XyCB.png"
      },
      {
        "fragment_index": 3,
        "text_description": "William Ernest Henley (1849–1903)",
        "image_description": ""
      },
      {
        "fragment_index": 4,
        "text_description": "Henley’s fierce will to live shines through his poem “Invictus”.",
        "image_description": ""
      },
      {
        "fragment_index": 5,
        "text_description": "Key Points:\nBorn in 1849, Gloucester, England.\nLost his left leg to bone tuberculosis at 12.\nWrote “Invictus” while in hospital, saving the other leg.\nPersonal struggle shaped the poem’s message of courage.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 3,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Time & Setting",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "",
        "image_description": "https://asset.sparkl.ac/pb/sparkl-vector-images/img_ncert/vSEwudkzBb0I7L8QqABnqeK3Zi6TLRNcEYhIgDk9.png"
      },
      {
        "fragment_index": 2,
        "text_description": "Historical Context\nUnderstanding when and why Henley penned “Invictus” helps explain its message of self-mastery.\nKey Points:\nWritten in 1875 while Henley was hospitalised in Edinburgh.\nHe faced tuberculosis of the bone and possible leg amputation.\nVictorian Britain admired courage, duty, and self-discipline.\nThese pressures shaped his vow: “I am the master of my fate.”",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 4,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Core Message",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "Resilience",
        "image_description": ""
      },
      {
        "fragment_index": 2,
        "text_description": "Unbreakable spirit—continuing to fight when life feels painful and dark.\nHenley thanks “whatever gods may be” for his “unconquerable soul,” showing indomitable courage.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 5,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "A Dark Simile",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "",
        "image_description": "https://asset.sparkl.ac/pb/sparkl-vector-images/img_ncert/GT3o3mr1KLpovDohFrDhRwSd4cd0TUW9kcu333Qh.png"
      },
      {
        "fragment_index": 2,
        "text_description": "Meaning of “Black as the pit”\nA simile directly compares two things using “as” or “like”.\n“Black as the pit” turns the poet’s night of pain into a deep, endless hole, showing how overwhelming it feels.\nKey Points:\nSimile = comparison with “as” or “like”.\nPit suggests great depth and no escape.\nHighlights the total darkness of Henley’s suffering.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 6,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Fate vs Free Will",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "Fate (External Forces)\n“Night” symbolises overwhelming hardship.\n“Bludgeonings of chance” show random suffering.\nEvents lie outside the speaker’s control.",
        "image_description": ""
      },
      {
        "fragment_index": 2,
        "text_description": "Free Will (Inner Mastery)\n“I am the master of my fate” asserts choice.\nMind remains “unconquerable” despite pain.\nCourage lets the speaker stand “unafraid.”",
        "image_description": ""
      },
      {
        "fragment_index": 3,
        "text_description": "Key Similarities\nBoth themes shape human response to hardship.\nTheir tension drives the poem’s central message.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 7,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Check Your Ear\nconst correctOption = 1;\n        const answerCards = document.querySelectorAll('.answer-card');\n        const submitBtn = document.getElementById('submitBtn');\n        const feedbackCorrect = document.getElementById('feedbackCorrect');\n        const feedbackIncorrect = document.getElementById('feedbackIncorrect');\n\n        let selectedOption = null;\n\n        answerCards.forEach((card, index) => {\n            card.addEventListener('click', () => {\n                answerCards.forEach(c => c.classList.remove('border-blue-500', 'bg-blue-50'));\n                card.classList.add('border-blue-500', 'bg-blue-50');\n                selectedOption = index;\n            });\n        });\n\n        submitBtn.addEventListener('click', () => {\n            if (selectedOption === null) return;\n\n            if (selectedOption === correctOption) {\n                feedbackCorrect.classList.remove('hidden');\n                feedbackIncorrect.classList.add('hidden');\n            } else {\n                feedbackIncorrect.classList.remove('hidden');\n                feedbackCorrect.classList.add('hidden');\n            }\n        });",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "Question\nIdentify the rhyme scheme of the first stanza of “Invictus.”",
        "image_description": ""
      },
      {
        "fragment_index": 2,
        "text_description": "1\nA) AABB\n2\nB) ABAB\n3\nC) ABCB\n4\nD) ABBA",
        "image_description": ""
      },
      {
        "fragment_index": 3,
        "text_description": "Hint:\nCompare the ending words: night / plight and soul / goal.",
        "image_description": ""
      },
      {
        "fragment_index": 4,
        "text_description": "Submit Answer",
        "image_description": ""
      },
      {
        "fragment_index": 5,
        "text_description": "Correct!\nWell done. The stanza follows the alternating ABAB rhyme scheme.",
        "image_description": ""
      },
      {
        "fragment_index": 6,
        "text_description": "Incorrect\nReview the pattern: line 1 rhymes with 3, line 2 with 4 — ABAB.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 8,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Match Devices\nDrag each literary device onto the quotation it matches to practice identifying literary devices.\nCheck Answers\nResults\n// Drag and drop functionality\n        const draggableItems = document.querySelectorAll('.draggable-item');\n        const dropZones = document.querySelectorAll('.drop-zone');\n        const checkAnswersBtn = document.getElementById('checkAnswersBtn');\n        const feedbackArea = document.getElementById('feedbackArea');\n        const feedbackContent = document.getElementById('feedbackContent');\n\n        draggableItems.forEach(item => {\n            item.addEventListener('dragstart', handleDragStart);\n            item.addEventListener('dragend', handleDragEnd);\n        });\n\n        dropZones.forEach(zone => {\n            zone.addEventListener('dragover', handleDragOver);\n            zone.addEventListener('drop', handleDrop);\n            zone.addEventListener('dragenter', handleDragEnter);\n            zone.addEventListener('dragleave', handleDragLeave);\n        });\n\n        function handleDragStart(e) {\n            e.target.classList.add('opacity-50');\n            e.dataTransfer.setData('text/plain', e.target.dataset.id);\n        }\n\n        function handleDragEnd(e) {\n            e.target.classList.remove('opacity-50');\n        }\n\n        function handleDragOver(e) {\n            e.preventDefault();\n        }\n\n        function handleDragEnter(e) {\n            e.preventDefault();\n            e.target.closest('.drop-zone').classList.add('border-green-500', 'bg-green-50');\n        }\n\n        function handleDragLeave(e) {\n            e.target.closest('.drop-zone').classList.remove('border-green-500', 'bg-green-50');\n        }\n\n        function handleDrop(e) {\n            e.preventDefault();\n            const dropZone = e.target.closest('.drop-zone');\n            dropZone.classList.remove('border-green-500', 'bg-green-50');\n\n            const itemId = e.dataTransfer.getData('text/plain');\n            const draggedItem = document.querySelector(`[data-id=\"${itemId}\"]`);\n\n            if (draggedItem && dropZone) {\n                dropZone.appendChild(draggedItem);\n                dropZone.querySelector('.text-center').style.display = 'none';\n            }\n        }\n\n        // Check answers functionality\n        checkAnswersBtn.addEventListener('click', () => {\n            const correctMatches = {\n                quote1: 'device1',\n                quote2: 'device2',\n                quote3: 'device3'\n            };\n            let score = 0;\n            Object.keys(correctMatches).forEach(zoneId => {\n                const zone = document.querySelector(`[data-id=\"${zoneId}\"]`);\n                const child = zone.querySelector('.draggable-item');\n                if (child && child.dataset.id === correctMatches[zoneId]) {\n                    score++;\n                }\n            });\n            feedbackArea.classList.remove('hidden');\n            feedbackContent.innerHTML = `<p class=\"text-gray-800\">You matched ${score} out of 3 correctly.</p>`;\n        });",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "Draggable Items\nMetaphor\nSimile\nPersonification",
        "image_description": ""
      },
      {
        "fragment_index": 2,
        "text_description": "Drop Zones\n“My head is bloody, but unbowed.”\n“Black as the pit from pole to pole.”\n“In the fell clutch of circumstance.”",
        "image_description": ""
      },
      {
        "fragment_index": 3,
        "text_description": "Tip:\nFocus on the image or comparison in each line to spot the device quickly.",
        "image_description": ""
      }
    ]
  },
  {
    "slide": 9,
    "fragments": [
      {
        "fragment_index": -1,
        "text_description": "Key Takeaways",
        "image_description": ""
      },
      {
        "fragment_index": 1,
        "text_description": "Born from Struggle\nHenley’s illness sparked verses that radiate unyielding spirit.",
        "image_description": ""
      },
      {
        "fragment_index": 2,
        "text_description": "Resilience Defined\nThe speaker refuses to break, whatever pain or fate delivers.",
        "image_description": ""
      },
      {
        "fragment_index": 3,
        "text_description": "Stark Imagery\nNight and pit symbols underline the depth of hardship.",
        "image_description": ""
      },
      {
        "fragment_index": 4,
        "text_description": "Marching Rhythm\nABAB rhyme drives a steady, forward beat like marching feet.",
        "image_description": ""
      },
      {
        "fragment_index": 5,
        "text_description": "Claiming Free Will\n“I am the master of my fate” proclaims total self-command.",
        "image_description": ""
      }
    ]
  }
]