Vlogify

Turn any YouTube video into a polished, SEO-optimized WordPress blog post.

Version 1.0.0 WordPress 6.5+ PHP 8.1+ Powered by Google Gemini

Overview

Vlogify converts YouTube videos into complete, ready-to-publish articles. You paste a video URL, choose how you want the article written, and the plugin handles the rest: Google Gemini reads the video directly, and the plugin creates a WordPress post with a title, meta description, keywords, headings, an FAQ section, and structured data (schema) for search engines.

🎬 Any YouTube link

Supports standard watch links, short youtu.be links, and Shorts.

🤖 Reads the video

Powered by Google Gemini, which watches the video itself — so it works even without captions.

🔍 SEO built in

SEO title, meta description, slug, keywords, and JSON-LD schema generated automatically.

❓ Automatic FAQ

5–10 frequently asked questions with FAQ schema for rich results.

🖼️ Featured image

Pulls the YouTube thumbnail into your media library automatically.

🧱 Editor sidebar

Generate posts and insert transcripts directly inside the block editor.

Requirements

ItemMinimumNotes
WordPress6.5Tested up to 7.0.
PHP8.18.2 recommended.
Google Gemini API keyFree tier available at aistudio.google.com.
Outbound HTTPSYour server must be able to reach Google Gemini and YouTube.
A note on costGeneration uses your own Google Gemini account. Because Gemini reads the actual video, each article consumes many tokens (typically a few cents per video on the paid tier, or counted against free-tier limits). You control the model and length in Settings.

Installation & Activation

  1. Copy the ai-video-to-blog folder into wp-content/plugins/ (or upload the ZIP via Plugins → Add New → Upload Plugin).
  2. Go to Plugins in your WordPress admin and click Activate under “Vlogify”.
  3. On activation the plugin creates its database tables and grants administrators access. A new Vlogify menu appears in the left sidebar.
  4. Open Vlogify → Settings and enter your Google Gemini API key.
Don’t see the menu?The menu only appears when the plugin is active. If you just activated it, do a hard refresh (Ctrl + F5). You need an Administrator account. See Troubleshooting.

Quick Start

From a fresh install to your first article in five steps:

  1. Go to Vlogify → Settings, paste your Gemini API key, pick a model, and click Save Changes.
  2. Go to Vlogify → Create Post.
  3. Paste a YouTube URL into Video URL.
  4. Choose your length, style, tone, output type, and post status. If the video has no captions, paste a transcript into Manual Transcript (see Transcripts).
  5. Click Create Post. When it finishes, use the Edit Post link to review and publish.

Settings

The Settings page (built on the WordPress Settings API) is where you enter your Gemini API key and the default options applied to every new article. It has two sections: Google Gemini and Content Defaults.

Google Gemini & API Key

The plugin is powered by Google Gemini, which reads the YouTube video directly. This is what lets it work even when a video has no usable captions — there is no separate transcript step to fail.

ItemDetail
Where to get a keyaistudio.google.com/app/apikey (free tier available)
Key formatAlphanumeric string
Models2.5 Flash (default), 2.5 Pro, 2.0 Flash, 2.5 Flash-Lite

How to add your key

  1. Create a free key at aistudio.google.com/app/apikey.
  2. In Vlogify → Settings, paste it into Gemini API Key and choose a Gemini Model.
  3. Click Save Changes.

Choosing a model

  • 2.5 Flash — recommended default; fast and supports video.
  • 2.0 Flash — separate capacity, useful if 2.5 is busy; lower cost.
  • 2.5 Pro — highest quality, slower and pricier.
  • 2.5 Flash-Lite — cheapest.
Token cost of videoBecause Gemini processes the actual video, each generation uses many tokens (a long video can be hundreds of thousands). On the paid tier that is roughly a few cents per video; on the free tier it counts against daily limits. Flash models keep costs lowest.
Keys are stored encryptedYour API key is encrypted before it is saved to the database, and the field shows only a masked value (dots) afterward. Leave the field unchanged to keep your existing key; type a new key to replace it.

Content Defaults

These values pre-fill the Generate Blog form and are used by the Block Editor sidebar and REST API. You can still override them per article.

SettingWhat it does
Default LengthShort (~800), Medium (~1500), or Long (~2500) words.
Default StyleProfessional, Conversational, Technical, Educational, or Marketing.
Default ToneFormal, Friendly, Expert, or Persuasive.
Default Post StatusDraft, Pending Review, or Publish for newly created posts.
Auto-create CategoryWhen on, a category named after the video’s channel is created/assigned.
Featured Image SourceYouTube thumbnail (automatic), set manually later (on demand), default image, or none.
Generate FAQAdds an FAQ section and FAQ schema to each post.
Generate Schema (JSON-LD)Outputs Article, VideoObject, and FAQ structured data on the post.

Create Post

This is the main workspace. Paste a video URL, adjust the options, and click Create Post. The request runs in the background (AJAX) with a progress spinner — the page does not reload. When it completes you’ll see Edit Post and View buttons, plus the number of tokens used.

Supported URL formats

https://www.youtube.com/watch?v=VIDEO_ID
https://youtu.be/VIDEO_ID
https://www.youtube.com/shorts/VIDEO_ID
It runs in seconds, not minutesA typical generation takes a few seconds to under a minute, depending on length and the AI model. The spinner disappears automatically when the article is ready or if an error occurs.

Generation Options

OptionChoicesEffect
Article LengthShort / Medium / LongTarget word count (~800 / ~1500 / ~2500).
Writing StyleProfessional, Conversational, Technical, Educational, MarketingSets the voice and structure of the writing.
ToneFormal, Friendly, Expert, PersuasiveAdjusts the emotional register.
Output TypeBlog Post, Tutorial, Listicle, Review, GuideShapes the format (e.g. numbered steps for a tutorial).
LanguageEnglishOutput language of the article.
Post StatusDraft, Pending Review, PublishThe status of the created post. “Publish” requires publishing rights.
Manual TranscriptFree text (optional)Used instead of automatic retrieval — see below.

Transcripts

The article is written from the video’s transcript, so a transcript is required. The plugin tries to obtain one using this fallback chain:

  1. YouTube captions — automatic retrieval from the video.
  2. Manual transcript — text you paste into the form.
  3. Error — if neither is available, generation stops with a clear message.

Automatic retrieval discovers all of a video’s caption tracks and picks the best one for your language. If the captions are only available in another language (for example, a video captioned only in Hindi), the plugin asks YouTube to auto-translate them to your target language. So many videos work automatically — no pasting required.

When automatic retrieval can still failYouTube actively limits programmatic access to captions, so automatic retrieval is not guaranteed. It will fail when:
  • The video has no captions at all — nothing exists to fetch. “This video has no captions available…”
  • YouTube is rate-limiting your server after many requests in a short time — wait a few minutes and retry. “YouTube is temporarily rate-limiting…”
  • The captions are protected and YouTube returns them empty. “This video has captions, but YouTube did not return them…”
In any of these cases, paste the text into the Manual Transcript box and generation proceeds normally. The error message tells you which case you hit.
No transcript? Let Gemini read the videoIf you set your AI provider to Google Gemini (in Settings), the plugin can skip transcripts entirely: when no caption can be retrieved, it sends the YouTube URL straight to Gemini, which watches the video — audio and visuals — and writes the article from the actual content. This is the most reliable option for videos with auto-generated or no captions, and it works in any language. You only need a free Gemini API key from aistudio.google.com. Note that processing a video uses more tokens than text and is subject to Gemini's video length limits.

How to get a transcript to paste

  • On YouTube, open the video → click “…more” under the description → Show transcript → copy the text.
  • Or use any transcript/caption tool, then paste the plain text into the Manual Transcript field.

Dashboard

The Dashboard gives you an at-a-glance summary:

  • Videos Processed — how many unique videos have been handled.
  • Posts Generated — total articles created by the plugin.
  • API Tokens Used — cumulative AI tokens consumed (useful for tracking cost).
  • Last Generated Post — quick link to your most recent article.
  • Recent Activity — a live feed of successes and failures.

Generated Posts

A table of every video the plugin has processed, with its channel, status, the linked WordPress post (with Edit / View links), and the date. Use this to find and revisit articles created from your videos.

Logs

The Logs page records every processing attempt — the video, success or failure, tokens used, the message, and a timestamp. This is the first place to look when something doesn’t work. Use Clear Logs to empty the table.

Reading a failureIf an article didn’t generate, open Logs and read the most recent error row. It tells you exactly what happened (e.g. an invalid API key, or no transcript available).

Block Editor Sidebar

While editing any post you can open the Vlogify panel from the editor’s top-right plugin menu (the icon looks like a video screen). From there you can:

  • Generate Post From Video — enter a URL, length, style, and tone, then create a fully written draft and jump straight to it.
  • Insert Transcript — fetch a transcript and drop it into the editor as a paragraph block.

SEO Optimization

Every generated article is built for search from the ground up:

ElementDetails
SEO TitleClick-worthy, under 60 characters.
Meta DescriptionUnder 160 characters; also used as the post excerpt.
HeadingsProper H2 sections and H3 subsections (the post title is your H1).
SlugClean, hyphenated URL slug.
KeywordsA primary keyword plus secondary keywords (added as tags).
Keyword densityCalculated and stored for reference.
SEO plugin fieldsTitle, description, and focus keyword are also written to Yoast SEO and Rank Math meta fields, so they appear automatically if you use those plugins.

FAQ & Schema

When enabled in Settings, each post includes:

  • A Key Takeaways list and a Frequently Asked Questions section (5–10 Q&As) in the post body.
  • JSON-LD structured data printed in the page head: Article, VideoObject, and FAQPage. This helps Google understand your content and can enable rich results (FAQ accordions, video badges).
No theme changes neededThe schema is output automatically on single posts created by the plugin — you don’t have to edit your theme.

REST API

The plugin registers authenticated REST endpoints under the avtb/v1 namespace. Every route requires a logged-in user with plugin access and a valid REST nonce.

MethodEndpointPurpose
POST/wp-json/avtb/v1/process-videoValidate a URL and store the video record.
POST/wp-json/avtb/v1/generate-postRun the full pipeline and create a post.
POST/wp-json/avtb/v1/get-transcriptResolve a transcript for a video.
POST/wp-json/avtb/v1/set-featured-imageSet a post’s featured image from its source video thumbnail.
GET/wp-json/avtb/v1/logsRetrieve paginated log entries.

For Developers

Add your own AI provider

Implement the provider interface and return your instance through the avtb_ai_provider filter:

add_filter( 'avtb_ai_provider', function ( $provider, $slug ) {
    if ( 'my_llm' === $slug ) {
        return new My_Local_LLM_Provider();
    }
    return $provider;
}, 10, 2 );

Useful hooks

HookTypeDescription
avtb_loadedactionFires after components are wired; passes the Plugin instance.
avtb_ai_providerfilterSwap or extend the active AI provider.
avtb_required_capabilityfilterChange the capability required to use the plugin.

Custom database tables

TableStores
{prefix}_avtb_videosProcessed videos and their metadata.
{prefix}_avtb_transcriptsResolved transcripts.
{prefix}_avtb_logsActivity and error logs.

Security & Privacy

  • Access control — only users with the plugin capability (granted to Administrators) can use it.
  • Nonces & permission callbacks protect every form, AJAX call, and REST route against CSRF.
  • Input is sanitized, output is escaped, and all database queries are prepared.
  • API keys are encrypted at rest and never displayed in full.
  • Data sent to Google Gemini — the YouTube URL (and the video title/transcript when used) is sent to Google Gemini, subject to Google's privacy policy. No data is sent anywhere else.

Troubleshooting

The admin menu doesn’t appear

  • Make sure the plugin is Activated under Plugins.
  • Hard refresh the admin (Ctrl + F5).
  • Confirm you’re logged in as an Administrator.

“No transcript could be retrieved automatically”

Expected for most videos — YouTube restricts automatic captions. Paste the transcript into the Manual Transcript box and try again. See Transcripts.

“API key not valid” / authentication error

Your Gemini API key is wrong or incomplete. Re-copy the full key from aistudio.google.com/app/apikey and paste it into the Gemini API Key field in Settings.

The progress spinner never stops

Fixed in v1.0.0. If you upgraded from an earlier build, hard refresh (Ctrl + F5) so your browser loads the updated stylesheet.

“This model is currently experiencing high demand” (Gemini)

A temporary capacity error on Google's side (HTTP 503), not a plugin fault — most common on the free tier at peak times. The plugin automatically retries a few times with backoff, so brief spikes are usually absorbed. If it still fails: wait a minute and retry, switch to 2.0 Flash (separate capacity) in Settings, or enable billing on your Google AI key (the paid tier rarely overloads).

Generation fails or times out

  • Check the Logs page for the exact error.
  • Verify your server can make outbound HTTPS requests to your AI provider.
  • Try a shorter article length, or a faster model in Settings.

Frequently Asked Questions

Do I need my own API key?

Yes. The plugin uses your account with OpenAI, Claude, or Gemini, so you’ll need an API key from one of them.

How much does each article cost?

It depends on the provider, model, and article length, but it’s typically a few cents per article on the default models. Track usage on the Dashboard’s “API Tokens Used” card.

Will the content be unique?

The AI rewrites the transcript into an original article. As with any AI tool, always review and edit before publishing.

Can I generate the same video twice?

Each video is recorded once to avoid accidental duplicates. The existing record is reused if you submit the same URL again.

Does it work with my SEO plugin?

Yes — the SEO title, description, and focus keyword are written to both Yoast SEO and Rank Math fields automatically.

What happens to my data if I delete the plugin?

Deleting (not just deactivating) the plugin removes its tables, options, and the metadata it added to posts. Your published posts themselves remain.