MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
제작자가 쓴 설명(영어 원문)
LinkedIn Learning catalog, reviews, and syllabus as JSON via the Apify Actor, hosted MCP.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
https://mcp.apify.com/?tools=johnvc/linkedin-learning-api터미널에서 이 명령어를 실행하세요
claude mcp add --transport http linkedin-learning 'https://mcp.apify.com/?tools=johnvc/linkedin-learning-api'프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"linkedin-learning": {
"url": "https://mcp.apify.com/?tools=johnvc/linkedin-learning-api"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"linkedin-learning": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/linkedin-learning-api"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
https://mcp.apify.com/?tools=johnvc/linkedin-learning-api메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
서버가 도구 목록을 보여 주기 전에 로그인을 요구해요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 johnisanerd 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
434ms 만에 응답(HTTP 401)
OAuth 로그인을 지원한다고 밝혀서, AI 앱이 로그인 화면으로 안내해 줘요
아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 3개 중 3개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(1.0.0)은 5일 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
An MCP server retrieving transcripts of YouTube videos
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
A Python and MCP quick-start for the LinkedIn Learning API on Apify. Search the public LinkedIn Learning course catalog by keyword, skill level, length or software, then pull the full record for any course: rating and rating count, written learner reviews, the complete syllabus with a description and a free-preview flag on every lesson, instructors with profile links, skills taught and certificate details. None of it needs a login, a cookie or a site license.
LinkedIn's own Learning API is available only through its Partner Program or a purchased site license, with OAuth keys an admin has to provision. This Actor reads the pages LinkedIn Learning already publishes to logged-out visitors and returns the same catalog metadata as JSON: course title, link, instructors, duration, viewer count and thumbnail from a search, or the full record with reviews and table of contents from a course URL. It covers the public catalog only. LinkedIn's reporting API, which returns learner activity for a licensed organization, is a different product and nothing here reads it. You pay per row: $0.10 per 1,000 search results and $0.50 per 1,000 full course records. Apify also applies its platform accounting events, $0.00001 per Actor start (one event per GB of run memory, at least one) and $0.00001 per stored dataset row.
The LinkedIn Learning API has two modes, set by mode. In search mode you pass queries (up to 25 keywords) or topics, optionally narrowed by sortBy, difficultyLevel, entityType, duration and softwareNames, and each course comes back as a search_result row with title, courseUrl, courseId, entityType, instructors, durationText, viewersText, releaseText and thumbnailUrl. LinkedIn serves at most 50 results per query, so expandWithFilters re-runs the query across LinkedIn's own filter combinations and merges the unique courses when you need a fuller course list. In details mode you pass courseUrls (course, lesson or learning path links, up to 200) and get a course_detail row with ratingValue, ratingCount, enrollmentCount, reviews, tableOfContents with a per-lesson isFree flag, skills, instructors, lessonCount, freeLessonCount, hasCertificate and certificateName. Setting enrichDetails to true on a search opens each found course and returns the full record instead, billed once at the full-record rate. The published task Extract LinkedIn Learning Course Reviews and Ratings runs details mode on three course URLs and returns the written review text with each reviewer's name, job title and profile link; run_course_reviews() in the example file makes the same details-mode call from Python, trimmed to the first of those three URLs so the first run costs about $0.0005.
Prerequisites: Python 3.11 or newer, uv, and a free Apify API token from apify.com.
git clone https://github.com/johnisanerd/Apify-LinkedIn-Learning-API.git
cd Apify-LinkedIn-Learning-API uv sync cp .env.example .env # paste your token into .env uv run python linkedin-learning-api-example.py
Each example is a separate flag:
uv run python linkedin-learning-api-example.py --example default # search "python", 5 rows
uv run python linkedin-learning-api-example.py --example catalog # course catalog rows, each printed as JSON uv run python linkedin-learning-api-example.py --example reviews # written reviews for one course uv run python linkedin-learning-api-example.py --example new-courses # newest releases on a topic uv run python linkedin-learning-api-example.py --example all
Every example asks for a small number of rows on purpose. You pay per row delivered, so confirm the shape of the data first, then raise maxItems.
If you do not want a .env file, export the token instead:
export APIFY_API_TOKEN="paste_your_real_token_here" # replace with the token from your Apify account
uv run python linkedin-learning-api-example.py
A short list of what the Actor returns and what it costs, before the field-level detail in Features and Output Format.
The Actor reads only what LinkedIn Learning shows a logged-out visitor. There is no field for a session cookie and no OAuth step. Anyone with a free Apify token can run it.
tableOfContents lists every section and lesson with its own title, description, durationSeconds, url and an isFree flag, with freeLessonCount totalled on the course. That is how you find the free preview lessons without opening each page.
Search results are billed on the course-found event at $0.10 per 1,000; full records on course-detail at $0.50 per 1,000. Duplicates, error rows and the popular-courses page LinkedIn substitutes when a query matches nothing are never charged at the course-found or course-detail rate.
A full course record carries reviews whenever the course page publishes written reviews: the review text, its star rating, and the reviewer's authorName, authorJobTitle and authorProfileUrl, plus datePublished. Other course data tools stop at the star average and rating count; the written text and who wrote it are only on the course page.
LinkedIn shows at most 50 results for any one search. Run search mode across a set of keywords or topic pages, turn on expandWithFilters to get past that ceiling, and export the dataset as JSON, CSV or Excel. expandWithFilters repeats each query across LinkedIn's own filter combinations and merges the unique courses; within each query rows deduplicate on courseId, lessons on their own URL, so a course reached through two slugs is returned once; a course that matches two different queries appears once under each searchQuery. It is the closest thing to a LinkedIn Learning course catalog download that needs no account.
entityType separates COURSE, VIDEO and LEARNING PATH in search results. A learning path URL in details mode returns pathUrl, courseCount and the ordered courses inside it; a lesson URL returns that lesson joined to its parent courseId.
queries or topics, narrowed with sortBy, difficultyLevel, entityType, duration and softwareNames.expandWithFilters re-runs a query across LinkedIn's own filter combinations, the only route past the 50-results-per-query cap, so a course list longer than 50 rows comes from one run.course_detail, lesson or learning_path row for each.enrichDetails turns a search into full course records in one run, billed once per row at the full-record rate.freeLessonCount and the per-lesson isFree flag in tableOfContents show how much of each course is watchable without a subscription.queries or topics in one search and export the rows from every query, each labelled with its searchQuery, as JSON, CSV or Excel.body, rating, authorName, authorJobTitle, authorProfileUrl and datePublished.tableOfContents has its own description, durationSeconds, url and isFree flag.courseUrl is the canonical link with tracking parameters stripped; within each query (and within a details run) rows deduplicate on courseId, lessons on their own URL, so a course reached through two slugs is returned once; a course that matches two different queries appears once under each searchQuery.no_results and error rows are pushed so you can see what failed, and are never billed at the course-found or course-detail rate.Ready-made configurations with their own Store landing pages:
"project management" with maxItems 25; each row has title, link, instructors, duration, viewer count and thumbnail. Local: uv run python linkedin-learning-api-example.py --example catalog"cybersecurity", proving the catalog reads with no account and no session cookie.ratingValue, ratingCount and the written reviews. Local: uv run python linkedin-learning-api-example.py --example reviews"python" with enrichDetails true and maxItems 5, so each course row is a full record with rating, rating count, learner numbers, level and duration (learning path hits stay as search rows)."artificial intelligence" with sortBy RECENCY, newest first. Local: uv run python linkedin-learning-api-example.py --example new-coursesSchedule tip. Save any of these inputs as a Task on the Actor page and schedule it to run weekly. With sortBy set to RECENCY the dataset lists the newest courses on a topic every week, and with enrichDetails on it refreshes ratingValue, ratingCount and the written reviews for every course, without anyone touching it.
Basic, matching the default run:
{
"mode": "search", "queries": ["python"], "sortBy": "RELEVANCE", "difficultyLevel": "ANY", "entityType": "COURSE", "duration": "ANY", "maxItems": 5 }
Advanced, a filtered search enriched to full records:
{
"mode": "search", "queries": ["excel"], "softwareNames": ["Microsoft Excel"], "difficultyLevel": "BEGINNER", "duration": "BETWEEN_1_TO_2_HOURS", "sortBy": "POPULARITY", "maxItems": 10, "enrichDetails": true, "maxConcurrency": 5 }
Details mode, full records for URLs you already have:
{
"mode": "details", "courseUrls": [ "https://www.linkedin.com/learning/python-essential-training-18764650", "https://www.linkedin.com/learning/paths/getting-started-with-python" ] }
Only mode is required. Search settings apply when mode is search; courseUrls applies when mode is details. In search mode at least one of `qu
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요