langchain-easytranscriber
LangChain integration for EasyTranscriber: load YouTube transcripts as Documents, and give agents tools to get a transcript, summarize a video, or search YouTube.
EasyTranscriberLoader: YouTube URLs toDocuments (transcript text plus metadata, optional AI summary)EasyTranscriberTranscriptTool: transcript of a YouTube videoEasyTranscriberSummaryTool: Markdown AI summary of a YouTube video, in 65 languagesEasyTranscriberSearchTool: YouTube video search, up to 10 resultsEasyTranscriberToolkit: the three tools with one API key
Transcripts come from the video's captions, or from speech-to-text when a video has no captions. Videos up to 4 hours are supported.
Install
pip install -U langchain-easytranscriber
Python 3.10+, langchain-core 1.x. Built on the
easytranscriber-sdk client.
API key
Create a free account at easytranscriber.com and a key in Dashboard > API Keys. Signup includes 5 credits, and 1 credit is added each day while the balance is below 5. API access is included on every plan.
export EASYTRANSCRIBER_API_KEY="et_..."
Or pass api_key="et_..." to any class.
Credits
| Call | Credits |
|---|---|
| Transcript of a cached video | 0 |
| Transcript of a new video, up to 2 hours | 1 |
| Transcript of a new video, over 2 hours (4-hour maximum) | 2 |
| Summary | 1, on top of the transcript |
| YouTube search | 1 |
Plans and prices: pricing.
Document loader
from langchain_easytranscriber import EasyTranscriberLoader
loader = EasyTranscriberLoader(
[
"https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"https://youtu.be/9bZkp7q19f0",
],
include_summary=True, # adds metadata["summary"], 1 credit per video
summary_language="English", # omit to match each video's language
)
for doc in loader.lazy_load():
print(doc.metadata["title"], doc.metadata["credits_used"])
print(doc.page_content[:200])
Each Document has the transcript as page_content and this metadata:
| Key | Value |
|---|---|
source |
the URL you passed |
video_id |
YouTube video ID |
title |
video title, or None |
method |
how the transcript was made: yt-dlp or innertube (captions), deepgram (speech-to-text) |
cached |
True when served from cache at 0 credits |
credits_used |
credits spent on this video, including the summary when requested |
summary |
Markdown summary, only with include_summary=True |
Use continue_on_failure=True to skip videos that fail instead of raising.
await loader.aload() and loader.alazy_load() use the async client.
Accepted URLs: youtube.com/watch?v=, youtu.be/, /shorts/ and /embed/ links. Bare video
IDs are not accepted.
Tools
from langchain_easytranscriber import EasyTranscriberTranscriptTool
tool = EasyTranscriberTranscriptTool()
print(tool.invoke({"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"}))
Invoked with a ToolCall, each tool returns a ToolMessage whose artifact holds the API
response, including credits_used:
message = tool.invoke(
{
"args": {"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"},
"id": "1",
"name": tool.name,
"type": "tool_call",
}
)
message.artifact["cached"], message.artifact["credits_used"]
In an agent
# pip install -qU "langchain[anthropic]"
from langchain.agents import create_agent
from langchain_easytranscriber import EasyTranscriberToolkit
agent = create_agent(
model="anthropic:claude-sonnet-5-5",
tools=EasyTranscriberToolkit().get_tools(),
)
result = agent.invoke(
{
"messages": [
{"role": "user", "content": "Find a recent video on Python asyncio and summarize it."}
]
}
)
print(result["messages"][-1].content)
API errors (for example insufficient_credits or unauthorized), timeouts and connection
errors are raised as ToolException. Pass handle_tool_error=True to a tool to return the
message to the agent instead.
Development
uv run --group test pytest # unit tests, mocked HTTP, no credits
uv run --group lint ruff check . && uv run --group lint ruff format --check .
uv run --group typing mypy
EASYTRANSCRIBER_API_KEY=et_... uv run --group test pytest tests/integration_tests # live, spends credits
Unit tests include LangChain's standard ToolsUnitTests from langchain-tests.
Links
- REST API docs: https://www.easytranscriber.com/docs/api
- Python and JavaScript SDKs: https://www.easytranscriber.com/sdk
- MCP server: https://www.easytranscriber.com/docs/mcp
EasyTranscriber is not affiliated with YouTube or Google. MIT licensed.
Metadata
Release files for langchain-easytranscriber 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| langchain_easytranscriber-0.1.0.tar.gz | 12.4 kB | With provenance | Details for langchain_easytranscriber-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| langchain_easytranscriber-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for langchain_easytranscriber-0.1.0-py3-none-any.whl |
Total release size: 24.2 kB
Release files / langchain_easytranscriber-0.1.0.tar.gz
| Download URL | langchain_easytranscriber-0.1.0.tar.gz |
|---|---|
| Size | 12.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
79894ada453972f18301b677ba3892eeecd42d739622e5f711965356893b78b7
|
|
BLAKE2b-256 checksum How to use checksums |
3f110b4f8e843e5c2089d59787b9885cbc21a2c4b675365162dc0c878316e394
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 14, 2026.
Transparency logRelease files / langchain_easytranscriber-0.1.0-py3-none-any.whl
| Download URL | langchain_easytranscriber-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
12bc0f85a7a3436727096814429bdd87411eafd04040fd7f4890126b48f53996
|
|
BLAKE2b-256 checksum How to use checksums |
69e6d3bab70a8068955a071e56b7f13c55588890da91a7c02bb8fdc985a3d413
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 14, 2026.
Transparency logSecurity for langchain-easytranscriber 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for langchain_easytranscriber-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.