Last active
June 23, 2025 00:49
-
-
Save chriswingler/1c9daa8092920f4568a68e0e1849879b to your computer and use it in GitHub Desktop.
Browser console script to extract complete Zoom cloud recording transcript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Zoom Cloud Recording Transcript Extractor | |
* | |
* HOW TO USE: | |
* 1. Go to your Zoom cloud recording page | |
* 2. Click on "Audio Transcript" tab to view the transcript | |
* 3. Open browser developer tools (F12 or right-click -> Inspect) | |
* 4. Go to the "Console" tab | |
* 5. Paste this entire script and press Enter | |
* 6. The script will automatically scroll through the entire transcript | |
* 7. Wait for it to complete (you'll see "=== COMPLETE TRANSCRIPT ===" when done) | |
* | |
* IMPORTANT: If the transcript is very long, the console output may be truncated. | |
* Look for a "Show more" button at the bottom of the console output and click it | |
* to see the complete transcript text. | |
* | |
* The script works by: | |
* - Finding the scrollable transcript container | |
* - Automatically scrolling through the virtualized list | |
* - Collecting all transcript segments as they become visible | |
* - Outputting the complete transcript when finished | |
*/ | |
function extractZoomTranscript() { | |
console.log('π Starting Zoom transcript extraction...'); | |
var container = document.querySelector('.vue-recycle-scroller'); | |
if (!container) { | |
console.log('β Container not found - make sure you are on the Audio Transcript tab'); | |
return; | |
} | |
var allText = []; | |
var lastItemCount = 0; | |
var noNewItemsCount = 0; | |
var lastScrollTop = -1; | |
function getVisible() { | |
var items = document.querySelectorAll('.text'); | |
for (var i = 0; i < items.length; i++) { | |
var text = items[i].textContent.trim(); | |
if (text && allText.indexOf(text) === -1) { | |
allText.push(text); | |
} | |
} | |
console.log('π Found: ' + allText.length + ' transcript segments'); | |
return allText.length; | |
} | |
function scroll() { | |
var currentItemCount = getVisible(); | |
var currentScrollTop = container.scrollTop; | |
if (currentItemCount === lastItemCount) { | |
noNewItemsCount++; | |
} else { | |
noNewItemsCount = 0; | |
} | |
// Stop if no new items found for 5 attempts and scroll position hasn't changed | |
if (noNewItemsCount >= 5 && currentScrollTop === lastScrollTop) { | |
finish(); | |
return; | |
} | |
// Stop if reached the bottom of the container | |
if (currentScrollTop + container.clientHeight >= container.scrollHeight - 10) { | |
console.log('π Reached bottom of transcript container'); | |
finish(); | |
return; | |
} | |
lastItemCount = currentItemCount; | |
lastScrollTop = currentScrollTop; | |
// Continue scrolling | |
container.scrollTop += 800; | |
setTimeout(scroll, 300); | |
} | |
function finish() { | |
getVisible(); // Final collection | |
var result = allText.join('\n'); | |
console.log('\n' + '='.repeat(50)); | |
console.log('β EXTRACTION COMPLETE!'); | |
console.log('π Total segments: ' + allText.length); | |
console.log('β οΈ IMPORTANT: If output is cut off, click "Show more" below'); | |
console.log('='.repeat(50)); | |
console.log('\n=== COMPLETE TRANSCRIPT ===\n'); | |
console.log(result); | |
console.log('\n=== END TRANSCRIPT ==='); | |
console.log('\nπ‘ If you don\'t see the full transcript above, look for a "Show more" button and click it!'); | |
} | |
// Start extraction | |
container.scrollTop = 0; | |
setTimeout(scroll, 500); | |
} | |
// Run the extraction | |
extractZoomTranscript(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment