In modern SEO, small details often make a big difference. Meta tags such as meta_description, meta_keywords, and page_title still play an essential role in how your content is displayed and understood by search engines. They directly influence how your stories appear in results, and therefore how often users click them.
I’ve recently built a simple, lightweight utility that helps Geeklog site administrators automatically generate these fields using OpenAI’s API. It works with any Geeklog 2.x site and doesn’t require additional plugins or modifications.
The Geeklog AI SEO Updater connects directly to the Geeklog database and detects any stories missing a meta_description. For each one, it uses the gpt-4o-mini model to analyze the article’s title and introduction, then generates:
The script automatically detects the language of your site from $_CONF['language'] — it works in French, English, German, Spanish, Italian, and Japanese. You can test results safely in preview mode (?dry=1) or apply them in update mode with a defined article limit.
While modern search engines rely on full-page analysis, meta descriptions remain key to how your site looks in results. They act as your article’s “headline” on Google or Bing and have a strong effect on click-through rate.
Meta keywords, even though no longer used by Google for ranking, remain valuable inside Geeklog. They can be used for internal linking or automated features such as:
💡 For example, another script could automatically link stories that share two or more identical keywords, creating a stronger internal SEO structure.
The script only updates stories with empty meta descriptions and checks that you have the proper story.edit admin rights before execution.
# Preview mode (no database update)
https://yourdomain.com/admin/utils/update_meta.php?dry=1
# Update 10 stories
https://yourdomain.com/admin/utils/update_meta.php?limit=10
You can also schedule it as a weekly cron job to automatically optimize metadata for newly published stories.
This script lays the groundwork for more semantic features inside Geeklog. The generated keywords can later feed new modules such as:
By combining Geeklog’s simplicity with AI-assisted metadata, content becomes easier to navigate and better structured for both users and search engines.
The full documented code is available on the Geeklog Community Forum: 👉 https://www.geeklog.net/forum/index.php?forum=10
It supports PHP 5.6 +, Geeklog 2.x, and optionally integrates with the IndexNow plugin to notify Bing. Every line of the shared version is commented for easy understanding and adaptation.
With this AI-powered updater, Geeklog proves it can stay modern and efficient without losing its core simplicity. This approach helps keep older content relevant, visible, and better connected — with minimal effort and full control from the admin panel.
🧩 Author: Ben, Geeklog community contributor Discuss and download on the forum: https://www.geeklog.net/forum/index.php?forum=10
Posted October 28, 2025 | 7:41 pmI currently run several independent Geeklog websites — each with its own database, theme, and data — using one shared installation of Geeklog. This setup is simple, efficient, and ideal for multilingual or multi-domain projects.
Geeklog is normally designed to run one site per installation. In this setup, all sites share the same core codebase, but db-config.php and siteconfig.php detect the domain name ($_SERVER['HTTP_HOST']) to load the correct configuration for each website.
Each domain gets:
All logic resides inside the standard Geeklog configuration files — no plugins, no external includes.
db-config.php📁 File location:
/home/exampleuser/db-config.php
if (strpos(strtolower($_SERVER['PHP_SELF']), 'db-config.php') !== false) {
die('This file can not be used on its own!');
}
global $_DB_host, $_DB_name, $_DB_user, $_DB_pass, $_DB_table_prefix, $_DB_dbms;
$_DB_table_prefix = 'gl_';
$_DB_dbms = 'mysql';
// Site One
if ($_SERVER['HTTP_HOST'] == 'www.site-one.com' || $_SERVER['HTTP_HOST'] == 'site-one.com') {
$_DB_host = 'localhost';
$_DB_name = 'db_site_one';
$_DB_user = 'user_site_one';
$_DB_pass = 'password_one';
}
// Site Two
if ($_SERVER['HTTP_HOST'] == 'site-two.com') {
$_DB_host = 'localhost';
$_DB_name = 'db_site_two';
$_DB_user = 'user_site_two';
$_DB_pass = 'password_two';
}
This allows Geeklog to connect to a different database depending on which domain is being visited.
siteconfig.php📁 File location:
/home/exampleuser/public_html/siteconfig.php
if (strpos(strtolower($_SERVER['PHP_SELF']), 'siteconfig.php') !== false) {
die('This file can not be used on its own!');
}
global $_CONF, $_CONF_FCK;
// Common paths
$_CONF['path'] = '/home/exampleuser/';
$_CONF['path_system'] = $_CONF['path'] . 'system/';
$_CONF['path_html'] = $_CONF['path'] . 'public_html/';
$_CONF['path_language'] = $_CONF['path'] . 'language/';
$_CONF['path_editors'] = $_CONF['path_html'] . 'editors/';
$_CONF['path_pear'] = $_CONF['path'] . 'system/pear/';
$_CONF['default_charset'] = 'utf-8';
// Site One
if ($_SERVER['HTTP_HOST'] == 'www.site-one.com' || $_SERVER['HTTP_HOST'] == 'site-one.com') {
$_CONF['path_data'] = $_CONF['path'] . 'data/site-one/';
$_CONF['path_log'] = $_CONF['path'] . 'logs/site-one/';
$_CONF['path_images'] = $_CONF['path_html'] . 'images/site-one/';
$_CONF['cookiedomain'] = 'site-one.com';
}
// Site Two
if ($_SERVER['HTTP_HOST'] == 'site-two.com') {
$_CONF['path_data'] = $_CONF['path'] . 'data/site-two/';
$_CONF['path_log'] = $_CONF['path'] . 'logs/site-two/';
$_CONF['path_images'] = $_CONF['path_html'] . 'images/site-two/';
$_CONF['site_url'] = 'https://site-two.com';
$_CONF['site_admin_url'] = 'https://site-two.com/admin';
$_CONF['theme'] = 'custom_theme_two';
$_CONF['cookiedomain'] = 'site-two.com';
}
Each domain now loads its own paths and design while still relying on the same core Geeklog system files.
This approach is particularly useful for multilingual setups or networks of related projects.
The only drawback: during a Geeklog update, the installer might overwrite db-config.php and siteconfig.php. Since your multi-site logic lives in these two files, you’ll need to reapply your domain rules after each update.
Before updating Geeklog:
cp /home/exampleuser/db-config.php /home/exampleuser/backups/db-config.php.backup
cp /home/exampleuser/public_html/siteconfig.php /home/exampleuser/backups/siteconfig.php.backup
After the update:
This process takes only a minute and keeps the setup compatible with all Geeklog releases.
Even if two files must be updated manually after each upgrade, this solution remains the simplest, most stable, and easiest to understand.
In short, it’s the perfect balance between flexibility and simplicity: a single Geeklog installation serving multiple, completely independent sites.
Posted October 20, 2025 | 8:26 pmWe’re excited to announce the release of the Maintenance Plugin, a simple yet powerful way to place your Geeklog site into maintenance mode whenever you need to perform updates, upgrades, or testing.
When maintenance mode is enabled, regular visitors and non-administrative users see a customizable maintenance message instead of your website content. Root users, however, can continue accessing and managing the site normally — with a clear red alert banner reminding them that maintenance mode is active.
maintenance_check for status displayDownload the plugin from GitHub: 👉 https://github.com/Geeklog-Plugins/maintenance
Copy the maintenance/ folder to your /plugins/ directory.
Log in as a Root user and go to: Admin → Plugins → Install New Plugin
Click Install next to Maintenance — and that’s it!
You’ll find new configuration options under Admin → Configuration → Maintenance, where you can toggle the mode and edit your maintenance message.
This plugin is open-source software released under the GNU General Public License v2 (or later). You’re free to use, modify, and redistribute it under the same license.
Developed and maintained by Ben, with community support. Special thanks to all contributors who keep Geeklog flexible and up to date.
Posted October 18, 2025 | 7:20 pmWe’re happy to announce the release of the AmazonLinks Plugin, a lightweight and practical addition for Geeklog users who want to enrich their articles with relevant affiliate links automatically.
The plugin scans each article’s content for specific keywords defined in a configuration file and displays a small block of stylish, clickable buttons linking to relevant Amazon products. It’s ideal for blogs, review sites, or any publication that wants to recommend related books, tools, or resources — while generating affiliate revenue effortlessly.
amazonlinks_config.php) located in the /data directory./plugins/ directory.amazonlinks_config.php file to your /data directory and adjust the keywords, titles, and affiliate tag to match your site.{amazonlinks} below the story body section.That’s it — the plugin will automatically add your affiliate block below your articles.
If your article mentions “business strategy”, “finance”, or “leadership”, the plugin can automatically insert relevant buttons such as: “Recommended Business Books” or “Top Leadership Guides” — each linking to Amazon products you’ve configured.
The complete source code and setup instructions are available on GitHub: 👉 https://github.com/Geeklog-Plugins/amazonlinks
Posted October 16, 2025 | 9:51 pmThe IndexNow plugin for Geeklog brings an important enhancement to content visibility. It automatically notifies supported search engines whenever new content is created or existing content is updated. As a result, your pages get indexed faster and appear in search results sooner.
The plugin is open source and available on GitHub: 👉 Download the IndexNow plugin for Geeklog
With the IndexNow plugin, Geeklog site owners benefit from accelerated indexing and improved search visibility. It’s a simple yet powerful tool to ensure your content gets noticed quickly by search engines.
Posted September 25, 2025 | 8:32 pmHere is a list of the latest plugins to receive updates since the release of Geeklog v2.2.2. Some of these plugins will require this version.
Please note, we will continue to add to this list as plugins are released.
Here is a list of updated plugins expected to be release in the next few months:
These updated plugins support PHP 8.1 and also contain new features and bug fixes as well. Please visit the download page of the specific plugin to find out more information. The plugins above can also be found on Github in our Geeklog Plugins Repository.
For a list of plugins that where updated after Geeklog 2.2.1sr1 was released back in April 18 2020, please see the article titled: Geeklog Plugins that Support v2.2.1.
All of these older plugins will work with Geeklog v2.2.2 as well.
Developers if you have a plugin which supports Geeklog v2.2.2 which has not been included in the list above please comment on this article to give us more information, and we will add it in. Remember you can also submit an article (and upload the file) about your plugin and after review (and editing if required) we will post it on Geeklog.net.
Posted October 3, 2022 | 6:38 amGeeklog v2.2.2 is now available for download and is the recommended version for all production sites. An update package is also available that contains only the files needed to upgrade from Geeklog v2.2.1sr1 to 2.2.2.
This version of Geeklog now fully supports PHP v8.1. The minimum system requirements for installing Geeklog v2.2.2 is:
There was 95 closed issues for this version of Geeklog which resulted in 468 code commits (with 2,342 changed files). The major new features, improvements and fixes in this version include:
... as well as a lot of other improvements and bug fixes. The complete list can be found on Github and in the history text file located in the docs directory of this release.
In the next month or so we plan to release a number of updated 3rd party plugins that include bug fixes, support for PHP v8.1, and support for the latest Geeklog v2.2.2 features (where needed). This includes:
These plugins can be found on Github in our Geeklog Plugins Repository. Most are currently in testing and have close to final code. Feel free to test these updated plugins and provide any feedback.
If you have any questions about this Geeklog release please comment on this post or create a topic in our Support Forum.
Posted September 27, 2022 | 5:17 amThe oldish Glossary Plugin is re-released. The code is re-developed, but the database stays the same for now. See latest developments or demo yourselves with a large grossary.
The plugin is intended to create glossaries for your site, whilst your content can be enriched with links to known glossary entries. Multiple subjects are supported and a autotag lets you choose which subject to use for a certain text.
Make sure you have users added to the glossary.admin and/or glossary.edit security groups.
Glossary catches the userID that submits a term, and the userID that edits a term. Along with a timeStamp. Categories can be defined which work site wide.
Configuration is still old-fashioned; find them in config.php. Available languages are English and German (with thanks to Alexander Schmacks).
Usage.
Browse the Glossary; select a category, or a subject, or a letter. Admins may select additionally contributing authors, or a time period. The list display all found terms in a abbreviated form, and when less that 2, their full details.
Submit a new term and make sure the correct subject / category is et for the term. The plugin will check them uniqueness. The same term can appear is a different category or a different subject.
Edit the Term as often as you like. The lookup in your content is dynamic and shows immediately the new meaning(s).
Browse your content and see the links appear that are created by the lookup. Don't forget to insert the autotag or apply the proposed hack. The links to the glossary entries uses a title attribute to be shown in a dropdown. Hoovering on the link will do.
You can download the Glossary plugin from here.
Posted November 13, 2021 | 8:37 amHere is a list of the latest plugins to receive updates since the release of Geeklog v2.2.1sr1. Some of these plugins will require this version.
Please note, we will continue to add to this list as plugins are released.
Here is a list of updated plugins expected to be release in the next few months:
These updated plugins support PHP 7.0+ and also contain new features and bug fixes as well. Please visit the download page of the specific plugin to find out more information. The plugins above can also be found on Github in our Geeklog Plugins Repository.
Updated: 2020-04-22 - Please note, that the new reCaptcha Plugin included with Geeklog v2.2.1 is not compatible with how the old reCaptcha plugin determines whether to display the reCaptcha or not on a page. This means older versions of plugins like the Forum that uses reCaptcha will either have to be updated to version 2.9.4 or the older plugin's code will have to have a small manual update (only if you want the reCaptcha to be used). See this Forum post for more information on the code you need to add to your older plugins if you want it to continue to use reCaptcha with it.
For a list of plugins that where updated after Geeklog 2.2.0 was released back in June of 2018, please see the article titled: Geeklog Plugins that Support v2.2.0.
All of these older plugins will work with Geeklog v2.2.1 as well.
Developers if you have a plugin which supports Geeklog v2.2.1 which has not been included in the list above please comment on this article to give us more information, and we will add it in. Remember you can also submit an article (and upload the file) about your plugin and after review (and editing if required) we will post it on Geeklog.net.
Posted April 18, 2020 | 6:49 amGeeklog v2.2.1sr1 is now available for download and is the recommended version for all production sites.
This is a security update for Geeklog v2.2.1 with a few fixes and improvements as well. This is a complete tarball, to be used for fresh installs and upgrades from all previous releases.
There was 14 closed issues for this version of Geeklog which resulted in 68 code commits and 214 changed files. The important new features, improvements and fixes in this version include:
... as well as a few other improvements and bug fixes. The complete list can be found on Github and in the history text file located in the docs directory of this release.
To expand on the functionality of your Geeklog website, check out the list of plugins that support this version.
Posted April 16, 2020 | 7:41 am