(0 votes) 12:52 pm
July 9, 2026
OfflineI just started using this plugin. At first, it was working fine. It published 2 posts after clicking the "Pull selected feeds now!" button. But then it only pulled the YT video title and description. I wanted it to generate content and pull the thumbnail from the YT video. So, I modified the settings. But just after the modification, it no longer does anything. It's no longer generating any posts.
What am I missing here?
2:17 pm
July 9, 2026
OfflineThe reason why no post has been added is fully explained in these two lines of your log:
You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs:
Login to see this link.
OpenAI was unable to complete the assignment. The post will not be added
The best way to avoid problems with OpenAI's limits is to use the OpenRouter API instead: https://www.cyberseo.net/blog/openrouter-one-key-to-rule-them-all/
Regarding issues with saving settings: This can happen if you try to save your feed's settings while a script is processing that feed in the background, in a parallel PHP thread. It looks like you clicked "Pull selected feeds now!" and are trying to modify the settings of one of the feeds that is currently being processed. So, based on your initial post, it doesn't look like it's a permanent problem since you have already successfully changed the settings multiple times.
3:05 pm
July 9, 2026
OfflineThe issue is not related to Claude or OpenRouter. The problem is with yt-dlp, which CyberSEO Pro uses to extract YouTube video transcripts. yt-dlp is an open-source command-line utility for downloading transcripts from YouTube. You can find it here:
Login to see this link
According to your log:
yt-dlp not found, attempting to install - CyberSEO Pro did not find the yt-dlp binary on your server and tried to install it automatically.
Failure:
Login to see this link is disabled on this server - your hosting provider has disabled PHP's exec() function. CyberSEO Pro uses exec() to install and run yt-dlp, so when it is disabled, the installation cannot proceed.
As a result, transcript extraction fails and the post is not added.
If you want to import YouTube transcripts, you'll need to contact your hosting provider and ask them to enable the PHP exec() function (or move to a hosting environment where it is available). Once exec() is enabled, CyberSEO Pro should be able to install and run yt-dlp, allowing transcript extraction to work normally.
5:08 pm
July 9, 2026
OfflineThank you. I confirmed that WP Engine permanently disables exec(), so CyberSEO cannot run yt-dlp.
Does CyberSEO Pro provide a supported way to:
- disable its built-in YouTube transcript extraction, and
- supply the transcript through custom PHP, a custom field, placeholder, shortcode, or external HTTP API?
I can retrieve the transcript from an external transcript API using PHP/cURL, but I need to know:
- which $post variable or placeholder CyberSEO expects for the transcript;
- whether the built-in yt-dlp step can be skipped;
- and whether a failed transcript extraction can be configured not to cancel the post.
The current log ends with:
Failure: exec() is disabled on this server
yt-dlp installation failed
The post will not be added
Since you are already using OpenRouter in CyberSEO Pro, you can handle the whole workflow in Custom PHP without using the %youtube_transcript[...]% placeholder: https://www.cyberseo.net/blog/import-youtube-video-transcripts-into-ai-generated-wordpress-articles/
The %youtube_transcript[...]% placeholder is only a shortcut that tells CyberSEO to run its own transcript extraction process. Since your hosting blocks exec(), remove that placeholder from your post template.
Your Custom PHP code can do the following:
- Get the YouTube transcript using your external API (via PHP/cURL).
- Send that transcript to OpenRouter using CyberSEO's cyberseo_openrouter_shortcode() API function.
- Save the generated article directly into $post['post_content']
The transcript itself does not need to be stored in a CyberSEO variable. It can simply be a normal PHP variable:
Login to see the code
So the solution is not to override %youtube_transcript%, but to replace that part of the workflow completely with your own PHP code.
9:16 pm
July 9, 2026
OfflineI just upgraded PHP from 7.4 to 8.4, but it seems the plugin has crashed. I switched it to 8.2, but nothing changed.
The syndicated feed had gone.
Login to see this link
I checked the original CyberSEO ZIP and the installed directory. Both contain only cyberseo.php and index.php, so the installation matches the supplied package.
However, cseo_load_presets() returns false, and showPresetBox() then calls array_shift(false), which crashes the Syndicator page.
The configured preset directory is:
/nas/content/live/proearth1dev/wp-content/plugins/cyberseo/presets
Could you confirm how that directory is created and populated, and whether I should use the “Update plugin core” button to restore it? Also, could you provide a patch so the plugin handles a failed preset load without causing a fatal error?
Thank you so much for your help and patience.
You ask, "Why can't my server load the preset file?" The only place you'll find a clear, definitive answer is in your server's PHP error log. Everything else is just speculation and guesswork. For example, since you updated your PHP, you need to check that its settings meet CyberSEO Pro's system requirements:
- WordPress 6 or greater.
- PHP ver. 7.4.32 or higher (PHP 8 or higher is recommended).
- Essential PHP extensions: curl, gd, imagick, json, libxml, mbstring, openssl, simplexml, xml, zip, zlib.
- Access to cron on server (recommended).
- PHP exec() function must be enabled to run external tools such as yt-dlp (recommended).
- A live web site with a domain name. The plugin can’t be activated at unnamed IP address or at localhost.
Please note the requirement for the zip and zlib extensions. Since the plugin conserves bandwidth, all data is downloaded by the plugin in an archived format. Therefore, your server must be able to extract these files. Since your hosting provider has restricted your ability to use the exec() function, for example, it's reasonable to assume that they haven't enabled these extensions in your php.ini file either.
Therefore, I recommend contacting your hosting provider for assistance and asking them to resolve the issues causing the errors logged in your server log. They have access to it because it's their server. Only they know how to fix the settings.
The error handling for this situation will be fixed in the next release. It won't fix the problem with missing PHP extensions, so you still have to enable them on your server manually, but in case if they are still missing, the user interface won't break up.
Thank you for the heads-up!
6:54 pm
July 9, 2026
OfflineThank you for your helpful response regarding the PHP upgrade issue. I was able to resolve this issue.
I would like to go back to the original issue on why I created this thread for support.
This is regarding your suggestion to use cyberseo_openrouter_shortcode() in custom PHP. The function exists (confirmed via function_exists()) and executes without any PHP errors, but consistently returns an empty string (0 characters) regardless of the parameters I pass. I've tried:
Login to see the code
and:
Login to see the code
Both return an empty string with no error. Could you confirm the exact parameter array structure this function expects — specifically the correct keys for the prompt text, the model/engine identifier, and max tokens? Or is there a way to enable error logging/debug output from this function so I can see what's actually failing internally?
Also, do you have a working, copy-pasteable example of a full custom PHP snippet using this function (not just a short 6-line sample)? A complete working example would be the fastest way for me to confirm the correct syntax rather than reconstructing it piece by piece.
Thank you so much in advance for your help.
The cyberseo_openrouter_shortcode() function has no 'engine' parameter. It uses 'model' instead. E.g.:
Login to see the code
10:01 am
July 9, 2026
OfflineThanks — I tried the exact example you provided (the "heroic cat" story with model => '~anthropic/claude-haiku-latest' and max_tokens => 1000) as a standalone test, and it also returned an empty string with no PHP error.
I suspect this may be related to my OpenRouter account rather than the code itself — I'm currently on a free/low-credit OpenRouter plan and previously hit a credits error on a separate request. Since I'm actually paying for Anthropic's API directly (not OpenRouter), is there an equivalent function that calls Claude directly through my Anthropic API key instead of routing through OpenRouter? I noticed the plugin has a [claude] shortcode mentioned in your documentation — is there a corresponding PHP function like cyberseo_claude_shortcode() I could use in custom PHP instead of cyberseo_openrouter_shortcode()?
If there's a way to confirm from your side whether this is an OpenRouter credits/auth issue versus something else, that would also help me narrow it down faster.
The code is working correctly as everything is being tested before posting here. If you got an empty result, check your Syndicator log for the exact error message. Perhaps there is something wrong with your OpenRouter API key.
As for the Claude shortcode, its function is described on the same page of the documentation: https://www.cyberseo.net/cyberseo-pro-api-functions/#cyberseo_claude_shortcode
Most Users Ever Online: 1026
Currently Online:
37 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
ninja321: 87
harboot: 75
s.baryshev.aoasp: 68
Freedom: 61
Pandermos: 54
tormodg: 53
Member Stats:
Guest Posters: 338
Members: 3322
Moderators: 0
Admins: 1
Forum Stats:
Groups: 1
Forums: 5
Topics: 1760
Posts: 9080
Newest Members:
ntzaferis, mario.claroarcos, welf.kienle.kienle, lapageparfaite27, vardis11, miranewsruAdministrators: CyberSEO: 4276

Log In
Home
All RSS