Scority

Tutorial · 8 min read · ChatGPT Custom GPT

Add YouTube transcripts to your Custom GPT.

Use Scority’s REST API as a Custom GPT Action so your GPT can fetch transcripts for provided YouTube videos. Step-by-step setup with a narrow OpenAPI schema for the current API.

Last updated 14 May 2026 · Tested with ChatGPT Plus, ChatGPT Team

Direct answer

A Custom GPT action should do one transcript job.

Keep the action narrow: Scority fetches the transcript, and the GPT decides how to summarize, classify or answer questions from the returned text. Do not add search, channel, playlist or billing behavior to the schema.

Step 1

Create a server-side action

Step 2

Store your API key securely

Step 3

Call the transcript endpoint

Step 4

Handle errors

Step 5

Use transcript text in the GPT workflow

Endpoint

GET /v1/youtube/transcript on https://api.scority.ai.

Auth

x-api-key is stored in the Custom GPT action authentication settings.

Input

Send video_id or video_url, plus optional language or lang.

Output

Use text, language, source and timestamped segments in the GPT workflow.

Errors

Handle unauthorized, rate_limited, quota_exceeded, transcript_not_available and upstream_transcript_failed.

01Prereqs

What you need.

Three checkpoints:

  1. A ChatGPT Plus or Team subscription. Custom GPTs require Plus or higher. Free ChatGPT can use existing Custom GPTs but not build them.
  2. A Scority API key. Request one through the contact page. Scority can confirm current quota and access details for your workflow.
  3. Basic familiarity with the Custom GPT builder. If you’ve never built one, OpenAI’s Custom GPT documentation is a good start.
Step 1

Open the Custom GPT builder.

Either create a new GPT or edit an existing one.

  1. Go to chatgpt.com/gpts (or click your name → My GPTs)
  2. Click Create to make a new GPT, or Edit an existing one
  3. Click the Configure tab (not “Create” tab, which uses conversational setup)
  4. Scroll to the bottom and click Create new action

You’re now in the Action editor.

Step 2

Set authentication.

Scority uses an x-api-key header. Set this up before you paste the schema so requests authenticate correctly.

  1. Click Authentication at the top of the action editor
  2. Select API Key as the type
  3. Set:
    • API Key: Your Scority key (YOUR_API_KEY)
    • Auth Type: Custom
    • Custom Header Name: x-api-key
  4. Click Save

The key belongs in the action authentication settings, not in GPT instructions, prompts, screenshots or public config files.

Step 3

Paste the OpenAPI schema.

Custom GPT Actions are defined by an OpenAPI 3.1 schema. Scority publishes one at api.scority.ai/openapi.json — but for Custom GPTs, paste this trimmed version directly into the schema editor.

The public Scority API is intentionally narrow. This schema exposes the current transcript action and leaves out private dashboard, billing and operator routes.

scority-custom-gpt.yaml
openapi: 3.1.0
info:
  title: Scority API (for Custom GPTs)
  version: 1.0.0
  description: |
    YouTube transcript access for Custom GPT integrations.
servers:
  - url: https://api.scority.ai
paths:
  /v1/youtube/transcript:
    get:
      operationId: getTranscript
      summary: Fetch the transcript for a YouTube video
      description: |
        Returns transcript text and timestamped segments when captions are accessible.
      parameters:
        - name: video_id
          in: query
          schema: { type: string }
          description: YouTube video ID. Send either video_id or video_url.
        - name: video_url
          in: query
          schema: { type: string }
          description: Full YouTube URL. Send either video_url or video_id.
        - name: language
          in: query
          schema: { type: string }
          description: Optional requested caption language, such as en or en-US.
      responses:
        "200":
          description: Transcript fetched successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  text: { type: string }
                  language: { type: string }
                  source: { type: string }
                  segments:
                    type: array
                    items:
                      type: object
                      properties:
                        text: { type: string }
                        start: { type: number }
                        duration: { type: number }
        "400":
          description: Invalid or ambiguous request
        "401":
          description: Missing or invalid API key
        "404":
          description: Transcript not available
        "429":
          description: Rate limit or monthly quota reached
        "502":
          description: Upstream transcript fetch failed

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

security:
  - ApiKeyAuth: []
scority-custom-gpt.yaml67 lines

Click Save. The Custom GPT builder validates the schema and lists the available action.

Step 4

Add to GPT instructions.

The schema makes the action available; the GPT’s instructions teach it when to use the action.

Add to your GPT’s Instructions:

gpt-instructions.txt
You have access to the Scority Transcript API. Use it when:

- The user provides a YouTube URL — call getTranscript with the URL.
- The user provides a YouTube video ID — call getTranscript with video_id.
- If the user asks about YouTube content without sharing a URL or video ID,
  ask them for a specific video.
- For multi-video research tasks, ask for the list of URLs or video IDs,
  then call getTranscript for each one.

Use ChatGPT's own model for summarization, extraction and analysis after
the transcript is returned.

Always cite the YouTube URL when summarizing or quoting from a video.
gpt-instructions.txt13 lines

Keep Scority responsible for the transcript fetch only. Let ChatGPT handle summarization, extraction and analysis after the transcript is returned.

Step 5

Test the integration.

Test in the Preview pane on the right side of the Custom GPT builder before publishing.

Test prompts:

Test 1 — Direct URL

Fetch the transcript for https://youtu.be/dQw4w9WgXcQ and summarize the main topic in three sentences.

You should see a “Talking to Scority” indicator, then the GPT’s response.

Test 2 — Video ID

Fetch the transcript for video ID dQw4w9WgXcQ and list five timestamped moments.

Test 3 — Missing input

Summarize the latest video from a channel I follow.

The GPT should ask for a specific YouTube URL or video ID because the current action does not search YouTube or inspect channels.

If any of these fail, see Section 08 troubleshooting.

Step 6

Publish your GPT.

Once tests pass, publish the GPT for use.

  1. Click Update (or Save if first time) in the top-right
  2. Choose visibility:
    • Only me — testing
    • Anyone with the link — share with specific people
    • Public — listed in GPT Store
  3. Confirm
Sharing your API key with a public GPT is a billing risk. When the GPT is public, anyone using it makes API calls authenticated with your Scority key. Their usage is billed to you. For public GPTs, use a dedicated key and agree the monthly transcript quota before you share the GPT widely.
08Debug

Troubleshooting.

Common issues:

“Authentication failed” when calling actions

The x-api-key header is not being attached. Check:

  1. Authentication type is API Key, not None
  2. Auth Type is Custom, not Basic
  3. The custom header name is x-api-key
  4. The key isn’t expired or revoked (check contact page)

Schema validation errors when saving

The Custom GPT builder uses a strict OpenAPI 3.1 validator. Common issues:

  • Missing required: true on path parameters
  • Schema with no responses block (must have at least "200")
  • Trailing whitespace or BOM in the YAML

Copy the schema fresh from this page if your edited version isn’t validating.

“Action timed out”

Custom GPT Actions have a 45-second timeout. If you’re fetching a long video, transcript retrieval can exceed this. Keep the action limited to getTranscript and let the GPT handle summarization natively.

Tools listed but never called

The GPT’s instructions don’t make it clear when to use them. Update the instructions to be more explicit about triggering conditions (the example in Section 05 is intentionally explicit).

Fallback does not remove error handling

Scority can support fallback processing for harder videos, but a GPT action still needs a clear failure path. If a transcript cannot be returned, handle transcript_not_available or upstream_transcript_failed in the GPT instructions.

09Trade-offs

Custom GPT actions vs local tool runtimes.

Custom GPT Actions are good for shareable ChatGPT workflows. A local tool runtime is better when you control the client, need local configuration, or want agent tooling around the same transcript endpoint.

Custom GPT action constraints:

  • Stream results (Custom GPT Actions are request-response only)
  • The action contract must stay narrow and easy for ChatGPT to choose
  • API-key usage belongs in the action authentication settings
  • The GPT should ask for a video URL or ID instead of trying to search YouTube

What is better in Custom GPTs:

  • No local server install
  • Built-in user-friendly UI
  • Easy sharing inside ChatGPT
  • Useful for non-technical users who already work in ChatGPT

Recommendation: If you are building local agent tooling, read the MCP workflow notes. If you are building a shareable GPT for ChatGPT users, use a Custom GPT action and keep it focused on transcript retrieval.

10Examples

Example Custom GPTs you can build.

Five templates with system prompts, suggested settings, and the GPT you’d publish to clients or the GPT Store. Copy whatever fits, adjust to your use case.

1. Competitive Intelligence Assistant

For: Marketing teams, PMs tracking competitors who publish video content.

System prompt:

competitive-intel.txt
You analyze competitor videos that the user provides. When the
user shares one or more YouTube URLs, use Scority's getTranscript
action to:

1. Fetch transcripts for the provided videos
2. Pull out claims, positioning, objections and examples
3. Synthesize findings with timestamps and direct quotes

Always cite the URL and timestamp. Distinguish between competitor
claims (what they say) and observable facts (what they show).
competitive-intel.txt10 lines

Suggested settings: GPT-4o, web browsing disabled (don’t double-fetch).

2. Research Synthesis Agent

For: Knowledge workers who watch a lot of conference talks and want structured summaries.

System prompt:

research-synthesis.txt
The user shares YouTube URLs of talks, lectures, or interviews.
For each, call getTranscript and produce:

1. Three-line abstract
2. 5-7 key claims with timestamps
3. List of papers/people/projects mentioned
4. Open questions or contradictions

Format the output as Markdown for easy copying into Notion or
Obsidian. Don't editorialize — stick to what was said.
research-synthesis.txt10 lines

Suggested settings: GPT-4o, custom Markdown formatting in instructions.

3. Content Repurposing Assistant

For: Solo creators turning long-form content into social posts, newsletters, blog drafts.

System prompt:

content-repurposing.txt
The user shares a YouTube URL of their own content (interview,
tutorial, or talk). Call getTranscript, then generate the
following deliverables in one response:

- 5 LinkedIn posts (200-300 chars each, hooks + insight)
- 3 Twitter/X threads (hook + 4-7 follow-up tweets each)
- A 600-word blog post draft summarizing the key points
- 10 short-form video clip suggestions with timestamps

Match the user's voice as it appears in the original transcript.
Don't add facts or claims not present in the source.
content-repurposing.txt11 lines

Suggested settings: GPT-4o, no web browsing, 4-action turns max (Custom GPT limit).

4. Educational Course Creator

For: Educators building lessons from existing video content.

System prompt:

educational-course.txt
The user shares a YouTube URL they want to teach from.
For a single video: call getTranscript, then produce:

1. Lesson objective (1 sentence)
2. 3-5 key concepts with quoted definitions
3. 5 discussion questions
4. 2 practical exercises
5. Vocabulary list

If the user wants to work from multiple videos, ask them to paste the
video URLs first. Save the user's time — they want the lesson plan,
not just a summary.
educational-course.txt12 lines

Suggested settings: GPT-4o, optional web browsing for cross-reference.

5. Sales Discovery Assistant

For: SDRs and AEs who research prospects' content before calls.

System prompt:

sales-discovery.txt
The user gives you one or more YouTube URLs from a prospect
(podcast appearances, conference talks, founder interviews).

For relevant videos, fetch transcripts and produce:

1. Their stated business priorities (with timestamps)
2. Pain points they've described publicly
3. Quotes that could lead a discovery call
4. Topics to avoid (positions they've taken strongly)

Output as a 1-page brief, formatted for paste into Salesforce notes.
sales-discovery.txt11 lines

Suggested settings: GPT-4o, no web browsing (discovery happens via YouTube content).

11Customise

Customising the manifest.

The OpenAPI schema in Section 04 is a starting point, not a fixed contract. Custom GPTs accept any valid OpenAPI 3.1 spec — adjust the schema to expose only the actions you want, restrict parameters, or add custom server URLs.

When to customise

Three good reasons:

  1. Privacy. Restrict which fields are exposed to ChatGPT. Keep the schema limited to transcript fields the GPT actually needs.
  2. Branding. Add clear descriptions around the video identifier and language parameters so the GPT asks for the right input.
  3. Limiting cost. Keep the action read-only and transcript-only so the GPT cannot drift into unsupported workflows.

How to customise

Copy the schema from Section 04 into your editor. Edit, validate, paste the result back into the Custom GPT builder.

Validate the schema before pasting:

validate-schema.sh
# Install validator
npm install -g @apidevtools/swagger-cli

# Validate
swagger-cli validate your-manifest.yaml
validate-schema.sh5 lines

If it doesn’t validate, the Custom GPT builder will reject it.

Common customisations

Language parameter guidance:

language-parameter.yaml
parameters:
  - name: language
    in: query
    schema: { type: string }
    description: Optional requested caption language, such as en or en-US.
language-parameter.yaml5 lines

Handling channel or topic requests (for a client-facing GPT scoped to their content):

Add this note to the GPT instructions:

single-video-guidance.txt
If the user asks for a channel, playlist or broad topic, ask for
specific YouTube video URLs first. This action only fetches transcripts
for provided video IDs or URLs.
single-video-guidance.txt3 lines

This keeps the GPT honest when the user asks for broad channel or topic research that the current action cannot perform by itself.

Adding rate-limit headers in description:

rate-limit-description.yaml
description: |
  ...
  Note: rate-limited to 10 calls per minute per user. If you hit
  the limit, slow down and retry after 60 seconds.
rate-limit-description.yaml4 lines

ChatGPT’s model reads action descriptions when deciding when to call them. Telling it about rate limits in the description reduces excessive calls.

Hosting your custom manifest

If you make significant changes, host the manifest at a stable URL you control:

hosting-url.txt
https://your-domain.com/openapi.json
hosting-url.txt1 lines

Then in the Custom GPT builder, click Import from URL and paste it. Updates to the file propagate to the GPT next time it loads — useful for managing many GPTs against a single manifest.

12Privacy

Privacy and data handling.

What ChatGPT, OpenAI, and Scority each see when a Custom GPT calls a Scority action. Plain language version.

What ChatGPT sends to Scority

When the GPT calls a Scority action, ChatGPT sends:

  • The action's input parameters, such as video_id, video_url or language.
  • An x-api-key header with your API key
  • Standard HTTP metadata (User-Agent, request ID)

ChatGPT does not send:

  • The user's full conversation
  • The system prompt of your Custom GPT
  • Other actions' previous results
  • The user's account ID

What Scority sees

We log the action call (which tool, which parameters, response time, byte size) for billing and debugging. We don’t see:

  • Who the end-user is (ChatGPT doesn't tell us)
  • The conversation context
  • Any data not in the action call itself

Logs are retained for 30 days for diagnostic purposes, then deleted. Data policy: scority.ai/privacy.

What gets back to ChatGPT

Scority’s response (transcript text, timestamped segments, source and language) goes back to ChatGPT. ChatGPT incorporates it into its model context for the current turn. After the conversation ends, the response data follows OpenAI’s standard data retention policy (consult openai.com/privacy for current details).

For consultants and teams: disclosure recommendations

If you’re building a Custom GPT for a client, disclose this in the GPT’s description:

“This GPT uses the Scority API (scority.ai) to fetch YouTube transcripts. Your queries are sent to Scority for transcript retrieval. Scority does not retain user-identifying data beyond standard request logs (retained 30 days for billing).”

Treat this as a product note, not legal advice. Teams with regulated data or client-facing deployments should review the final disclosure before publishing.

13Operations

Operating client GPTs safely.

If you build a Custom GPT for a team or client, document the transcript action and the API key owner. Keep the commercial agreement outside the GPT instructions.

What to hand over

A useful handoff is short and practical:

  1. GPT ownership. Publish the GPT in the client’s OpenAI workspace when they should own the tool.
  2. Action contract. Include the OpenAPI schema, expected input format and the real operation name, getTranscript.
  3. Key ownership. Decide whether the client uses their own Scority key or a dedicated key you operate for them.
  4. Test prompts Keep a small regression set: URL input, video ID input, missing input, rate-limit handling and transcript unavailable.

Disclosure

The GPT description should say that the action uses Scority to fetch YouTube transcripts. That avoids confusion when users ask where transcript data comes from and helps teams review data handling before sharing the GPT.

Do not describe the GPT as a YouTube search tool or a general video processing tool. It has one transcript action, and that is enough for summaries, briefs, lesson plans and research notes when the user provides a video URL or ID.

14FAQ

Common questions.

Do I need a Scority paid plan to use this?
You need a Scority API key with enough quota for the GPT's expected traffic. Contact Scority for current access and quota options.
Can the Custom GPT use speech-to-text fallback?
Scority has fallback infrastructure for supported accounts, but a Custom GPT should still handle transcript_not_available and upstream_transcript_failed. Do not write GPT instructions that assume every video will resolve.
My Custom GPT is calling actions but ChatGPT says they failed. What's wrong?
Almost always one of three things: (1) x-api-key is missing or invalid, (2) the schema’s response definitions don’t match Scority’s actual responses (rare with the manifest from Section 04), (3) ChatGPT’s 45-second action timeout was hit. Check the action card in the GPT preview for the exact error.
Can I have multiple Custom GPTs share one Scority key?
Yes, but they share the same quota and rate-limit behavior. For isolation between clients or environments, ask Scority to issue separate keys.
Will my GPT work after ChatGPT model updates?
Usually yes, but not always. ChatGPT occasionally changes how it interprets action descriptions. Keep your test prompts (Section 13’s deliverables) as a regression suite — run them after any major ChatGPT update.
Can I use Scority for non-YouTube content through a Custom GPT?
No. The current Scority API is for YouTube transcript requests only.
How do I migrate my Custom GPT to MCP later?
Use the same transcript contract first: video_id or video_url in, transcript text and timestamped segments out. If you wrap that in MCP later, keep the tool narrow and store SCORITY_API_KEY in the local environment.
Is there a public list of Custom GPTs using Scority?
Not currently. If you’ve built a public GPT and want it featured, email vitaly@scority.ai with the GPT URL and a 1-paragraph description.