- Brand
- Blog2Video
- Category
- Content & Design
- Primary Subcategory
- AI Video Generation
Integration details
Description
Create narrated videos from blog posts and documents. Start a project, choose a template and voice, generate scenes, edit them, and render the final video, all from chat. Blog2Video only accesses the account you sign in with. Learn more at https://blog2video.app.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Video Generation
- Secondary Subcategories
- None listed
- Brand
- Blog2Video
- Access
- Account required
- First tracked
- 2026-10-30
- Tool count
- 33
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Blog2Video
Get updates when Blog2Video’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Video Generation
View Category33 tools agents can invoke
INTERNAL — do not call this in response to a user's request for a video. `start_video` is the entry point; it asks the user Auto or Manual and delegates here when they choose Auto. Only call auto_video directly when the user has EXPLICITLY opted out of being asked — e.g. 'skip the questions', 'don't ask me anything, just build it'. In every other case call `start_video` instead. Behaviour: zero-config. The template is auto-picked from the source site's visual identity and article content, the account's DEFAULT voice is used (never a specific/custom voice), and stock b-roll is on. Returns as soon as the project is created and generation has started — it does NOT wait for the video. Poll `check_generation_status` with the returned project_id every ~15s until it reports complete. NEVER call this tool a second time for the same URL while a generation is in flight: each call costs the user a video credit. Set `render: true` to instead block through generation AND produce a downloadable MP4 (slow, ~5–13 min; may exceed the client timeout).
Translate an existing project into another language — on-screen text, narration and voiceovers are all regenerated. Use for: 'translate this to spanish', 'make a french version'. ⚠️ COUNTS AS A NEW VIDEO and costs one video credit, and takes a few minutes. Tell the user the cost and get their agreement BEFORE calling. Never call it twice for the same request. Blocks until the translation finishes.
Switch an existing project to a different template. The backend regenerates every scene's layout to fit the new template — this takes ~30 seconds. RETURNS IMMEDIATELY. After calling, you MUST poll `check_template_change_status` every 10s until complete.
Change the narration VOICE of an existing project and re-record every scene's voiceover in that voice. The narration wording is unchanged — only the speaker. Use for: 'switch to a male voice', 'use a british narrator', 'narrate this with <voice name>'. This is NOT part of `update_project_settings` — the voiceovers must actually be re-synthesised. ⚠️ COSTS ONE VIDEO CREDIT and takes a few minutes (it regenerates every scene). Tell the user the cost and get their agreement BEFORE calling. Never call it twice for the same request. ALWAYS call `list_voices` FIRST so the user can hear the options and click one — exactly like the web app, where Change voice opens a voice picker. Then pass the `voice_id` they chose as `custom_voice_id`. Do NOT invent a voice or pick one on the user's behalf. Blocks until the re-recording finishes.
Check the current generation status of a project. Use this ONLY when the user explicitly asks about the status of an existing project (e.g. 'what's the status of project 42?'). Do NOT call this after generate_video — that tool handles polling internally and returns when complete.
Check the current render status of a project. Use this ONLY when the user explicitly asks about render progress for an existing project. Do NOT call this after render_video — that tool handles polling internally and returns the final video URL when complete.
Poll template-change progress. Returns the updated scenes once done. Call every 10s after change_template until you see '✅ Template switched' or '❌ failed'.
Step 4 of the create-template flow. Poll generation progress. Returns one of: '⏳ Step N/6 (<label>)' — still running, call again in 15s '✅ Template #X is ready to use' — STOP polling. Mention the user can now use `template="custom_<id>"` in `create_project`. '❌ Generation failed: <reason>' — STOP polling, surface error.
Step 2 of the create-template flow. Persists the extracted (or user-edited) theme as a new custom template. Auto-creates a linked brand kit. Returns a confirmation card with the new template id. AFTER this returns, ask the user whether to start code generation now (~5 minutes) or save it for later. If they agree, call `start_template_code_generation`.
INTERNAL. Called by the setup widget. Do not call directly for a 'make me a video' request — that is `start_video`. Create a new video project from a blog URL. HARD REQUIREMENT — DO NOT skip or shortcut these steps. DO NOT list templates or voices from your own knowledge or from this tool's parameter descriptions. The user MUST see and interact with the visual galleries. Mandatory sequence BEFORE calling create_project: 1. If blog_url not provided — ask for it (this is the ONLY thing you may ask in plain text). 2. Call list_templates — REQUIRED. This renders an interactive template gallery widget the user clicks to pick. NEVER enumerate templates in text. NEVER ask 'which template would you like'. Just call the tool. 3. Call list_voices — REQUIRED. This renders an interactive voice gallery with audio previews the user clicks to pick. NEVER ask about gender or accent in text. NEVER enumerate voices. Just call the tool. 4. Wait for the user to confirm both their template AND voice selections via the widgets before calling create_project. AFTER create_project returns, IMMEDIATELY call generate_video — it handles generation silently and asks the user about rendering when done. Do NOT auto-call render_video. To narrate with ONE specific named voice, pass its id as `custom_voice_id` (get ids from `list_voices` / the user's saved voices); it overrides voice_gender/voice_accent.
Use this when a user wants to create a custom template from a website — 'make a template from <url>', 'build a template like <site>'. Does the WHOLE flow in ONE call: scrapes the site, extracts the brand theme (colours, fonts, logos), saves the template, and starts code generation. Do NOT call `extract_template_theme` / `create_custom_template` / `start_template_code_generation` separately — this replaces all three. ⚠️ Code generation takes 5–8 minutes and uses 1 of the user's 20 daily AI generation credits. Mention the cost when you report back. Returns as soon as generation has STARTED, with a template_id. Then poll `check_template_code_generation_status` with that id every ~15s until it reports ready. Do not call this tool twice for the same site — each call spends a credit. If the site cannot be scraped, this returns a message saying so and creates nothing (no credit spent). Only then fall back to `create_custom_template` with a theme the user describes.
Remove the project's voiceover and make the video MUTE. Every scene's narration audio is stripped; the on-screen text and visuals are untouched. Use for: 'remove the voiceover', 'make it silent', 'I want it without narration'. Unlike `change_voice`, this is FREE — it does not use a video credit. It does not clear an existing render either, so re-render afterwards to get a muted MP4. To give the video a DIFFERENT voice rather than no voice, use `change_voice`. Blocks until the audio has been stripped.
Step 1 of the create-template flow. Call this FIRST when the user wants to create a custom template from a website URL. Scrapes the URL and uses AI to extract a brand theme — colors, fonts, style, logos, screenshot. Sync, takes ~10–20 seconds. Returns a markdown card with the extracted theme so the user can review and confirm before saving. AFTER calling this, ask the user to confirm the name and (optionally) tweak any field before calling `create_custom_template`.
Start the AI generation pipeline and wait silently until complete (1–5 min). Call this automatically right after create_project — no user confirmation needed. Polling happens internally; do NOT call check_generation_status after this. Returns a project view link and asks the user whether they want to render/download as MP4. Only call render_video if the user says yes.
Get full details for a single custom template (color swatch, theme metadata, code-generation state, editor link). Call this when the user references a specific custom template by id.
Return a shareable preview link so the user can watch a project's video in the browser (mints or reuses the project's public /embed/<token> URL — anyone who has the link can watch the video, without signing in). Use after the project has been generated (e.g. via create_video).
Get the full details for a single project: header card + scenes table + edit-verb hints. Call this whenever the user references an existing project by id, OR after generation completes.
Return all built-in video templates as plain JSON (NOT a widget): a list of {id, name, genres}. ONLY for automation contexts (e.g. n8n) that need machine-readable options to build a dropdown. Do NOT use this when a human asks to see, list or pick a template — that is `list_templates`, which shows the interactive gallery. Using this tool for a user-facing request produces a bare markdown table instead of the widget.
Return available narration voices as plain JSON (NOT a widget): a list of {voice_id, name, description}. ONLY for automation contexts (e.g. n8n) that need machine-readable options to build a dropdown. Pass the chosen voice_id as custom_voice_id to create_video. Do NOT use this when a human asks to see, list or pick a voice — that is `list_voices`, which shows an interactive gallery with audio previews. Using this tool for a user-facing request produces a bare markdown table instead of the widget.
List all custom templates the authenticated user has created (separate from the 12 built-in templates shown by `list_templates`). Returns a markdown table with each template's color swatch, name, code-generation status, and a link to the editor. Call this when the user asks 'what templates have I made' or wants to pick an existing custom template for a project.
List the authenticated user's video projects as a compact table (id, name, status emoji, scene count, relative time). Call when user asks 'what projects do I have' or similar.
Use this when the user wants to see, browse, or pick a video template (without immediately creating a video). Shows a visual gallery of every template with real preview images. Each template has an `id` used in create_project / change_template. This tool renders an interactive widget. Do NOT describe, enumerate, or summarize the templates in your text reply — the widget IS the user-facing output. Reply with at most one short sentence. WAIT for the user to actually pick a template (they click a card, which sends a message like `use nightfall`). Only THEN call `list_voices` so they can also pick a voice. Do not call `list_voices` in the same turn.
Use this whenever the user wants to see, browse, list or pick a voice, voiceover or narrator. Shows an interactive gallery of all available voices with audio previews. Do NOT use `get_voices_json` for a user-facing request (it is for automation only), and do NOT ask the user about voice gender or accent in text — call this tool so they can hear and click to select a voice. This tool renders an interactive widget. Do NOT describe, enumerate, or summarize the voices in your text reply, and do NOT render them as a markdown table — the widget IS the user-facing output. Reply with at most one short sentence. In the Manual video flow: WAIT for the user to actually pick a voice (they click a card, which sends a message like `use voice Rachel (id)`). Only THEN call `show_settings` — the final step, which creates the project itself.
Regenerate a single scene with fresh AI takes — useful when the user dislikes the current narration, wants a different layout, or wants new visuals. Optionally provide a `description` (what the scene should be about), `layout` (force a specific layout), or `narration_text` (use exactly this script). Setting regenerate_voiceover=true also re-records the audio.
Renders the project as an MP4 video and returns the download link when it is ready (about 3–8 minutes). Use it when the user asks to render or download the video. Progress is tracked internally, so check_render_status is not needed afterwards. Returns the video URL and an inline preview. By default an existing rendered video is reused; set force_rerender=true to render again and replace it.
Reorder all scenes in a project. Pass `scene_ids` as the FULL list of scene IDs in the desired new order. Example: if scenes are currently [10,11,12,13] and the user says 'move scene 4 before scene 2', call with scene_ids=[10,13,11,12].
Combined template + voice + settings picker panel — the whole Manual setup in ONE widget. `start_video` decides whether to use this or the step-by-step chain (`list_templates` → `list_voices` → `show_settings`), because the two render differently across hosts. **Call this when `start_video` tells you to, and follow whichever tool it names.** Do not choose between them yourself. Do NOT call this as the FIRST response to a user's request for a video — `start_video` is the entry point and asks Auto or Manual first. blog_url is MANDATORY and MUST be the actual http(s) URL the user provided. If the user has not given a URL yet, ASK them for it first in one short sentence — do NOT call this tool with an empty or fake URL. The whole pipeline (project creation, voiceover, rendering) depends on this URL being a real, fetchable article. DO NOT first respond in text. DO NOT enumerate templates or voices in text. DO NOT ask 'which template would you like' or 'male or female?' — this widget shows ALL templates and ALL voices visually so the user picks both in one step. After the user clicks Create in the widget, a project is created automatically and generate_video is called next.
Final step of the Manual flow. Shows an interactive panel with the remaining video settings — length, style, stock footage, background music, aspect ratio, playback speed, captions and colours — plus the Create Video button. Call this AFTER the user has picked a template (`list_templates`) and a voice (`list_voices`). Every setting is optional and pre-set to a sensible default, so the user can simply click Create Video. Do not ask about length, music, captions or colours in text — the widget collects them. Reply with at most one short sentence. When the user clicks Create Video the widget sends a message like `create the video — medium length, captions on, music: moment_of_peace` (or just `create the video` if they changed nothing). On receiving it, call `create_project` IMMEDIATELY. Reading that message: it lists ONLY the settings the user changed — everything it does not mention keeps its default, so do not invent values for the rest. Phrases map onto create_project parameters (`medium length` → video_length='medium', `captions on` → captions_enabled=true, `1.25× speed` → playback_speed=1.25). Values after `music:` and any `#rrggbb` colour are LITERAL parameter values — pass them exactly as written, do not translate them. You MUST also pass the `template` the user picked in `list_templates` and the `custom_voice_id` they picked in `list_voices` — both were announced earlier in this conversation as `use <template_id>` and `use voice <Name> (<voice_id>)`. Do not ask the user to confirm again. AFTER create_project returns, immediately call `generate_video`.
Step 3 of the create-template flow. Kicks off AI generation of the React/Remotion scene code for a custom template. RETURNS IMMEDIATELY. Takes 5–7 minutes total. Uses 1 of the user's 20 daily generation credits. AFTER calling this, you MUST poll `check_template_code_generation_status` every 15 seconds until status is `complete` or `error`. Narrate the step label between polls so the user sees progress.
Entry point for turning a blog post or URL into a video. Use it for the first such request — do not call auto_video, setup_video, create_video or create_project first; those are internal steps this tool routes to. TWO-STEP. Step 1: call with ONLY `blog_url` and no `mode`. It returns a short question asking the user to choose Auto or Manual. Relay that question in one line and STOP — do not call another tool, do not guess a mode. Step 2: once the user answers, call start_video AGAIN with the SAME blog_url plus mode='auto' or mode='manual'. • mode='auto' — user said auto / just do it / whatever's best / you pick. Returns once generation has STARTED; then poll `check_generation_status` with the returned project_id every ~15s until complete. • mode='manual' — user said manual / I'll choose / let me pick / custom. NEVER call start_video twice for the same URL once a project exists — each creation costs the user a video credit. If the user's FIRST message already states the mode, skip step 1 and call once with both blog_url and mode. If no URL was given, ask for it in one sentence first — never invent one.
Rearranges images between two scenes of a project. `mode='swap'` (default) exchanges the images of two scenes (first_scene_id and second_scene_id). `mode='move'` moves the image from from_scene_id to to_scene_id, so the source scene no longer has it. Only the project's scenes are changed.
Update project-level settings on an EXISTING project: captions (on/off, position, font, size, offset), background music and volume, playback speed, video length, colors, font, language, aspect ratio. Pass only the fields you want to change. Common asks: 'turn captions on', 'use the oswald caption font', 'add calm background music', 'make accent color #FF0000', 'speed up to 1.25x'. These are the same settings the web app's Settings tab saves, so anything editable there can be changed here. Do NOT pass these here — they are not settings writes: - narration VOICE (gender/accent/specific voice) → use `change_voice`; it re-records every voiceover and costs one video credit - the video's LANGUAGE → use `change_language`; it counts as a new video and costs one credit - `video_style` → fixed when the project is created; tell the user it cannot be changed afterwards For the first two, confirm the credit cost with the user, then call that tool — not this one.
Update one or more fields on a single scene before rendering. Returns a before/after diff table. Common uses: 'shorten scene 2' (narration_text), 'change the title of scene 3', 'replace the on-screen text in scene 5'. Only fields you supply are changed.
Blog2Video ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Blog2Video's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Blog2Video alternatives on ChatGPT?
As of 2026-10-30, Blog2Video competes with Runway, HeyGen, AdKraft, AdsTurbo, AI Avatar Video by ManyMotions, AI Video Maker, AI Video Maker FX, AI Video Maker Gem and 58 more in ChatGPT AI Video Generation, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.