Documentation
Table of contents
About
Welcome to SEO Studio! This is a small script that contains specialized tools for search engine optimization. These tools make a great offering to your visitors and customers.
Requirements
Before installing, please ensure that you have a web server which meets these requirements:
- PHP:
8.0.0+
(recommended) or5.6.1+
(minimum)
- PHP extensions:
mysqli
&curl
- MySQL:
5.5+
You will also need an empty MySQL database to install the script into. Please do not use a database that is shared with another platform at the same time. Please ensure it is indeed empty before installing.
Please note that if you install the script in an environment with a PHP version older than 8.0
, your installation may stop receiving automatic updates in the next few years until you upgrade to 8.0
or newer.
Installation
Installation is very simple!
Inside the download from codecanyon.net, there is a folder called Upload These Files
. Open
this folder and look for the install.php
file. Upload this file to your website and open it in your browser. Then follow the on-screen instructions to complete the installation.
Common installation questions
How do I upload the file?
You’ll want to use a file manager to upload the file. This can be done with a software application such as FTP or SFTP. It can also be done with some web hosting control panels, such as cPanel with their file manager interface.
Because the process for this will vary depending on your web hosting company, if you’re not sure how to upload the file, please contact your web host’s support team and ask them how you can upload a PHP file.
What folder do I upload the file into?
The answer to this depends on the setup of your server. In most cases, you will want to upload it into a folder called
public_html
which you will often see as soon as you open the file manager. Some file managers will even start inside this folder by default.If you’re setting up the server manually, it will depend on the web server package and your server distribution, but these files typically go inside
/var/www/html
.You will want to upload the
install.php
file so that it resides inside the target folder. This means the resulting path should look something like this:/home/username/public_html/install.php
/var/www/html/install.php
If you’re not sure which folder corresponds to your website’s home page, ask your web host.
Can I install into a subdirectory or subdomain?
Yes, this script will work inside subdirectories and subdomains. You’ll simply need to upload the
install.php
file inside the directory for the subdirectory or subdomain and then proceed as normal.If you’re not sure how to create a subdirectory or a subdomain, contact your web host.
How do I open the file in my browser?
Assuming you uploaded it into the correct folder, you can then access it in your browser by manually typing the URL to your website and adding
/install.php
to the path.For example:
https://example.com/install.php
In some cases, if your website is empty other than the
install.php
script, you can also open the home page of your website and you will see an index where the installer file is listed. Simply click on it to proceed.
How do I create a database for the installation?
This process varies greatly by web host, control panel, and the configuration of your server, so I recommend contacting your web host if you’re not sure.
Most likely, your web host will have some online documentation showing you how to create a MySQL database. You will need to create a MySQL user, attach it to the database, and grant it all permissions for that database.
What do I enter for the database options?
The hostname is almost always
localhost
unless your web host has told you otherwise.You will create or receive the other parameters (database name, username, password) when you create the database. If unsure, ask your web host.
If your database server is running on a port different than
3306
, then you should specify it as part of the hostname using a colon, for example:localhost:3307
Do I need to activate the product?
The installer will ask you to sign in with your Envato account. This will activate the product automatically.
Product activation does not unlock any features. It only grants access to automatic updates, free search proxying, and one-click cron job setup.
You can skip this step if you’d like — click the green sign-in button and then click on the deny button to proceed with the installation.
You can also activate after installation if desired. You’ll see prompts throughout the admin panel allowing you to activate easily at any time.
Do I need to configure file permissions on the server?
No. The installer will configure file permissions on its own. Please do not modify file permissions after installation unless you know what you’re doing, as that may break automatic updates.
How do I install script updates?
You should never attempt to install an update on your own. Instead, log into the admin panel for your script, go to the updates page, and check for updates there. If updates are available, click the install button and they will be installed for you.
You might periodically receive update notifications from CodeCanyon. You should still use the admin panel’s update system to install the update, rather than downloading it from CodeCanyon.
Common installation issues
The installer says it encountered an unexpected error, is it safe to proceed?
No, it is not safe to proceed. This often means something is so drastically wrong with the server that the installer died while it was checking if the requirements were met.
Please contact support and send me the URL to your installer: https://codecanyon.net/user/baileyherbert
If you’re experienced with web development, you can open your developer console to the network tab and check the response in the failed request for more information on what’s wrong. If you believe it’s safe to ignore, then you can proceed, or contact me if unsure.
I’m receiving an error on the database step.
If you’re seeing an access denied error, check if it says “using password: yes”. If it does say “yes”, then the password you entered is incorrect. If it says “no” or is missing, then the username or database name is incorrect.
Make sure that you’ve attached the username to the database. This is something you typically have to do manually. After attaching them, you will be asked to select permissions. Grant the user all permissions for the database, and then try again.
If you’re seeing a connection error, double check the hostname and try again. If it still fails, contact your web host and send them the error message as well as a screenshot of the database credentials you’re entering into the script.
I’m having trouble verifying my license.
If you see an option to skip the activation step, click it. You’ll be able to activate the product later from the admin panel, so don’t worry about it too much.
If you don’t see an option to skip, please contact support: https://codecanyon.net/user/baileyherbert
The installer appears to be stuck at the “installing” step?
Please don’t worry, the installer is almost certainly not frozen.
I distribute small updates for this script “over the air” and only submit major updates to CodeCanyon.
Most likely, the installer is currently installing a large number of small updates for your script, which can take 2-3 minutes depending on the number of updates and the server’s internet speed.
Please allow up to 15 minutes for the installation to finish. Do not close the page until it has completed.
I’m receiving an error when activating the free Google proxying or Instant Cron?
In most cases, these errors are caused when a security plugin on your server, or an intermediary like Cloudflare, blocks my server from connecting to your server because it looks like a robot.
Check with your security plugin, intermediary, or web host to see if there’s a way to exclude blocking requests from my user agent:
Mozilla/5.0 (compatible; Baileybot; +https://bailey.sh)
Support
If you’re having trouble with the installation, or need help with anything else, please visit my profile at the following link and send me a message using the contact form on the right side:
https://codecanyon.net/user/baileyherbert
Developers
If you’re a developer, please do not use the Source
folder included in the product download. This folder exists for reference only and is not suitable for installation.
Instead, please the install.php
file on your local web server and run it in your browser to install the application in the same directory. Then, you can delete the installer files and commit the remaining files if desired. Follow the above installation instructions if needed.
Should I activate the product on a local installation?
If you would like to be able to easily install updates into the locally-installed script later, then yes, you should activate it locally. If you don’t need updates, you don’t need to activate it.
You will still need to attempt the activation step, but you can either deny the permission on the Envato side, or click the cancel button if presented with the license management screen.
If necessary, you may contact me via the support link above and I can register an additional license under your account so that you may activate both the production and development versions of your website at once.
Why is the installer encrypted?
This is a common question, so I’ll put this here. The installer is not encrypted. It’s simply packaged into a bundle for ease of upload, and compressed as well as encoded to avoid corruption during file transfers in ASCII modes.
The bundle can be unpacked (expanded) with my command line tool here: https://github.com/baileyherbert/packr
For example, you can run the
packr expand install.php installer
command in the same working directory to extract all of its files into theinstaller
folder.You can also read any of the encoded strings by decoding them (base64) and then inflating them (gzip). Some of the data is binary, such as the archive for the application’s files.
Tools
Google & Bing SERP
These tools will test a provided keyword against your website in order to find your rank on the search results page. They will check up to 100
results depending on the query and position of your target website. The number of results may increase in the future.
Top Search Queries
This tool uses spyfu.com to find a website’s most popular search queries in a small number of popular regions around the world. The following columns are displayed:
- Rank – The average rank of the website in search results for the query.
- Volume – The average monthly search volume for that query in the region.
- CPC – The broad cost-per-click for advertising that query in the region if available. If no data is displayed in this column, then the keyword is not advertised enough in that region, or Google AdWords did not provide data for it during the last index.
- Difficulty – An estimation of how difficult it is to rank for this keyword, on a scale from 0 to 100.
- Clicks – An estimation of how many clicks your website receives from this keyword.
- Homepages – The average number of top results for this keyword that point to a home page.
Indexed Pages
This tool checks both Google & Bing to determine the number of indexed pages.
Robots.txt
This tool parses and displays the rules in your robots.txt
file, organized into a table. It also displays any sitemaps from the robots.txt
file, followed by the raw text.
Sitemap
This tool looks for sitemaps on a domain like a web crawler would, and shows the following information for each:
- Status – The HTTP status code for the sitemap.
- Type – The format of the sitemap.
- Entries – The number of location entries inside the sitemap.
- Visibility – A rating for how easy it was to discover the sitemap. For example, a score of 100% shows that the sitemap was immediately discovered upon crawling, while a score of 70% means that it took a considerable number of HTTP requests to discover the sitemap.
This tool is capable of reading sitemaps in the XML
or RSS
format. It will discover sitemaps from the robots.txt
file, and will attempt to load the root sitemap.xml
file. It will also follow a single layer of nested sitemaps from inside the sitemap.xml
file.
Submit Sitemaps
This tool can be used to easily submit a root sitemap to Google and Bing. It is recommended to instead use the Webmaster Tools for the respective services if possible, as those requests are likely prioritized and their statuses can be tracked.
High Quality Backlinks
This tool shows up to 250
backlinks for the target website. For a backlink to show on this page, it must have a page authority score of at least 20
and a domain authority score of at least 50
.
New Backlinks
This tool shows up to 250
backlinks that were discovered in the last two months for the target website, sorted by newest first.
Poor Backlinks
This tool checks the last 500
backlinks to be discovered for the target website to see if they are low quality, risky, or spammy. For a backlink to show on this page, it must have a page authority score below 7
and must not be marked as nofollow
. These rules might change in the future.
Top Referrers
This tool shows the top 100
domain names which link to your website, sorted by the number of backlinks. It also shows the number of dofollow
links, the domain’s authority score, and the date at which the first backlink was discovered.
Check Domain Authority
This tool estimates the authority of a domain name.
This is a score which estimates the link’s popularity and importance, and is determined by the number and quality of incoming links to the page (both internal and external). It’s calculated logarithmically on a scale from 0 to 100 and is updated for all domains at least once per month.
Check Page Authority
This tool estimates the authority of a specific page on a domain name. The scoring works just like described in the tool above.
Crawlability Test
This tool allows you to test specific pages on your website to see if they can be crawled and indexed by the various search engines. It looks at rules defined in meta tags and the website’s robots.txt
file.
Mobile Support Test
This tool checks a website’s source code to detect whether or not it will be considered responsive or mobile friendly by a search engine. It checks meta tags, stylesheets, and embedded styles. Please note that this is a best guess tool, and may not always be fully accurate.
Headers
This tool shows the headers of a specific page on your website. It also checks for redirection and explains whether the redirection is permanent or temporary.
Speed Test
This tool uses pingdom.com to test the performance of a website at one of a selection of regions across the world.
The results of the test will be displayed, including the overall load time, a score of the website’s performance, the total size of the page as transmitted over the network, and the number of HTTP requests it took to load.
The response codes for the various content will also be displayed. In general, you will want to avoid redirections (301
and 302
) and any erroneous requests in the 400
s or 500
s.
Finally, it will show a breakdown of the types of content which make up the page’s size and request count.
Link Analysis
This tool analyzes and shows a breakdown of the links on a webpage. You will see the anchor text, link location, the type (external or internal) and whether it or not search engines can follow it.
Keyword Density
This tool analyzes a webpage and shows a breakdown of the density of its keywords. It will analyze the page’s title, meta tags, and body content.
Each phrase will show the number of occurrences on that page, whether or not the phrase is in the title and description, as well as a computed weight score for the phrase.
Extract Meta Tags
This tool analyzes a webpage and shows its meta tags. It also indicates whether each tag is used by Google and Bing.
Keyword Research
This tool finds keyword suggestions based on your input keyword and region using a combination of Google Suggest and Surfer SEO. It shows the cost-per-click and search volume in the specified region for each keyword.
Competition
This tool performs a Google search with the specified query and checks up to 200
results for the rank of your website. It will then show your website with the surrounding results, and will show a comparison of backlink and authority data for those results.
Administration
Accessing the admin panel
To access the admin panel you must sign into the public website as an account with admin privileges. Then a dark gray bar will appear at the top of the screen with a link to the admin panel.
Configuring the script
The Settings page in the admin panel has various subsections which allow you to change the configuration of the website. Each ambiguous item will have an encircled question mark (?) which you can hover with your mouse to learn more about.
Configuring tool caching
The Settings > Cache subsection allows you to configure tool caching. Most data-driven tools cache their results into the database, while site-driven tools like Keyword Density will avoid caching their results at all.
You can configure the duration to store cached results on this page in days, or disable caching completely. When configuring a number of days, it will only apply to tools that need caching (data-driven tools).
Running the script with a cache is recommended. If desired, set the cache to 1 day to maintain freshness. Also make sure the cron job is running as it will clean the cache periodically.
Configuring outgoing mail
The Settings > Mail subsection configures the outgoing mail server settings. If you’re on a server that supports sending email, such as a cPanel server, the default Built-in PHP mail()
option should work for you. Try the “send a test email” feature and check your spam inbox just in case.
For servers that do not support email, or for advanced users, you can configure a mail service from the available options: SMTP, Mailgun, and SendGrid.
You will also see the following options:
- From Address – The email address that emails will be sent from. If you’re using a service like SMTP, MailGun, or SendGrid, make sure this matches the username or sender email on the account to avoid the spam folder.
- From Name – The display name for the sender. This can be set to anything, like the name of your brand or website.
Configuring email templates
The Settings > Email templates subsection allows you to customize the plain-text email templates that the script uses when sending various messages to users.
Configuring permalinks
The Settings > Permalinks subsection allows you to enable permalinks (pretty URLs) on the public website on supported servers. To enable it, the script will first perform an eligibility check where it tests a temporary directory on the server to make sure permalinks won’t cause any fatal errors.
Once enabled, you can customize the permalink paths across the script.
Please note that the permalinks will be written directly to the .htaccess
file in the root directory of the script. If something goes wrong and the website starts displaying an error after changing permalinks, try renaming this file to .htaccess.old
to access the website again.
Configuring rate limiting
The Settings > Rate limiting subsection allows you to block or CAPTCHA users who are sending too many requests for tools, login, and contact form submissions.
On this page, you will see a table of number inputs. Each column in this table represents a time interval, while each row represents a type of user action. If a user performs any action more than the specified number of times within each interval, they will be rate limited for the specified duration (in minutes).
Changing the website’s appearance
The admin panel has a Customize section in the sidebar which is dedicated to changing the appearance of the website. You will find three subsections under this section:
- Branding – Configure the logo and favicon for the public website.
- Navigation – Add custom navigation links to the header.
- Colors – Customize the color scheme of the website to match your branding.
For now, this is as much as we can customize the appearance. There are additional customization features planned for the future, but no immediate guarantees.
Changing the website’s content
The admin panel has a content section in the sidebar which is dedicated to changing the content of the website, such as the text, tools, and advertising banners.
Translating the website
The Content > Languages subsection allows you to create and manage languages for the website. When multiple languages exist at the same time, a language selector bar will automatically appear at the top of the website. You can edit or set a language as the default by clicking the ••• button.
To create a new language, click the Create new button at the top right of the page. Give the language a name, a display direction, a default Google domain, and set the locales. Then translate each row on the screen and click the Create button at the very bottom to finish.
Editing pages
The Content > Pages subsection allows you to edit one of the script’s default pages. It is not possible to fully customize these built-in pages, but you will find many customization options. In addition to editing page titles and meta tags, you will find the following specialized options:
- Home – Easily edit the translations for the home page content.
- Tools – Manage tool categories, descriptions, and sorting.
- Terms of Service – Create a terms of service page & require agreement from users.
- Privacy Policy – Create a privacy policy page & require agreement from users.
Editing tools
The Content > Tools subsection allows you to manage the tools on the system, including:
- Enabling and disabling tools
- Changing tool icons
- Changing tool names
- Setting page titles and meta tags for tools
- Adding custom content to tool pages
- Generate tool embedding snippets
With these options it is possible to further personalize your website, and to further increase the content value and search indexability.
Embedding tools onto another website
It is quite common that this script is installed into a hidden subdirectory on a WordPress website, and then the tools are embedded individually onto the main WordPress website, effectively turning this script into a WordPress plugin.
To embed a tool, go to Content > Tools and click the Embed tools button at the top right. Select the tool that you’d like to embed and customize the options to suit your needs, then click Generate. You will want to copy and paste the resulting snippet onto another website.
Inserting ad banners
The Content > Advertising subsection allows you to insert ad banners into the script. I do not recommend any specific advertising vendor. However, if you have an approved advertising account, you may insert your ad banner snippet codes into the slots shown in this section.
You will find various slot sizes, such as 728x90
and 120x600
. Generate banner codes with your advertising vendor that are equal to or slightly less than the specified sizes. Do not exceed these sizes in either direction to ensure a consistent layout.
There is a Preview mode available for your convenience. Simply enable this mode and view the public website to see where the various ad banner slots will appear. Please note that this is not fully accurate, as the slots can rearrange slightly based on which slots are filled and which are empty.
You will also find a settings section on this page, where you can limit the number of ad banners that will be shown on a single page at once, as well as disable advertising banners for certain user groups (such as for premium users).
Managing cloud services
Setting up the cron job
The Services > Cron subsection helps configure or track the status of the application’s cron job. This cron job is a small script that must run periodically. It will perform various important functions:
- Cleaning up the database (e.g. of expired cache)
- Checking for and installing new updates
- Sending usage telemetry to the developer
There are two ways to activate the cron job:
- Remotely – I’ve designed a cloud-based system that will run your cron job over the internet every few hours. It’s free, all you need to do is click the Activate button.
- Manually – If you’re experienced with setting up cron jobs, you can set it up locally with the instructions on this page.
So which method is best? Well, the remote method is most ideal if you have a high traffic website, because my system will always run your cron job immediately after a new update is released. This means if a new update is released to fix a broken tool, for example, your downtime will be minimal.
Please note that the remote method only works on public web servers. In some cases, firewalls or security services (such as Cloudflare) may prevent the connection, in which case the script will tell you that it cannot activate the service.
Finally, please note that enabling the remote service will send the public URL of your website to me, the developer (it’s required in order to run the cron job remotely, after all). This information is normally private to me, but I won’t abuse it in any way, I promise! 👍
Setting up custom proxies
The Services > Proxies subsection allows you to import HTTP proxies into the script. When importing proxies, you can choose which service(s) they can be used for. In most cases, you will want to enable proxying for all services, unless your proxies have a transfer cap.
If a connection error is encountered, the script will temporarily disable the proxy and will use another. If too many proxies fail or no working proxies are available, the user will be shown an error.
We recommend enabling rate limiting (from Settings > Rate limiting) when using proxies to prevent bots from using up your resources.
We also recommend enabling the script’s free automatic search proxies (detailed in the section below) when using custom proxies. These will be used as fallbacks if your proxies go offline or are being used too frequently.
Setting up free automatic search proxying
This script comes with a built-in service at Services > Search that offers free, automatic proxying of Google & Bing searches with a daily quota.
When enabled, the script will continue to use your server’s own IP address for scraping from these search engines. However, if your server’s IP is being used too often (and the risk of being rate limited is elevated) then it will temporarily switch to using our network of servers.
Enabling this service will opt your own server into the network to perform occasional queries for other users, in exchange for an increased daily quota. Work is being done to make this an option, check back soon if you don’t want to opt your server into the network.
Installing updates
The Updates section in the admin sidebar allows you to check for and install the latest updates. This is the only recommended way to install updates to the script.
It is recommended to enable the Automatically update Studio setting in the Settings > Configuration subsection of the admin panel, and to ensure the cron job is running periodically. This will automatically install updates to keep your tools working, as they do sometimes break.
You can monitor when updates are installed automatically in two ways:
- The admin dashboard will show each version that was installed automatically in the activity log.
- The updates page will show each update under the View history menu.
Managing users & groups
The Users section in the admin sidebar allows you to manage users and groups, and to monitor the usage of your website’s tools.
Managing users
The Users > Users subsection shows a list of users registered in the system. By default, you will see your default administrative account as the first user. Click on an email address or the ••• button to view and edit the user’s profile.
While viewing a user’s profile, you will see a list of the websites saved to their account and a list of their recent tool usage. You’ll also find options at the top right to change their password, override their email address, and assign them to a new group.
You can also create new users, and export a list of users as a CSV file, from the top right of the users list.
Managing user groups
The Users > Groups subsection shows a list of groups registered in the system. Groups are a way to organize your users and to change what permissions they have. Other parts of the application, such as the advertising system or extensions, can change their behavior for specific groups.
Monitoring tool usage
The Users > Tool usage subsection shows a complete list of recent tool usage by both your registered users and visitors.
For each row, you will find the unique ID of the tool, the domain name that was entered into the tool (if applicable) as well as any extra tool input (where applicable), and the time at which this usage occurred. You can hover over the time to see a full timestamp.
Extensions
Setting up a contact page
The application includes a free, built-in extension which adds a contact page to the public website when enabled. You can enable this extension from Settings > Extensions > Easy Contact Page.
Once enabled, if the extension has not yet been configured, a message will appear at the top of the admin panel saying:
The contact page will not work until you configure the extension.
In this case you must head into the extension’s settings, either by clicking the Settings button from the extension list, or by clicking on the configure the extension link in the notification bar as was quoted above.
Then configure the following options on the extension:
- Subject – The subject of the email that will be sent to you when the form is submitted.
- Example: New contact form submission from Website Name
- Send messages to – Enter the email address where you’d like to receive form submissions.
Finally, make sure that your system is configured to send email by going to Settings > Mail and sending a test email, or you can test the contact form on the website to see if it works.
Setting up subscription plans
The application includes an experimental extension which adds pricing plans to the script. These pricing plans can be assigned recurring or one-time fees which will be charged using PayPal. If this sounds interesting to you, please review the following warnings first:
First, enable the extension under Settings > Extensions from within the admin panel. You will see an extension named Subscriptions & Plans, with a button to enable it.
Once the extension is enabled, two new links will appear in the left admin sidebar under a category named Subscriptions. Follow the below instructions to set up the extension:
- Click on the Subscriptions > Options link in the admin sidebar and configure the extension’s settings. You will need to enter your PayPal account’s business email address and set the currency code to match your account.
- Click on the Subscriptions > Plans link in the admin sidebar. You will see that a default Free plan has been configured automatically. The following instructions will assume that you wish to enter a free plan. Even if you don’t want this, you should still try it out for learning.
- Click the Edit button on the Free plan.
- Note that the plan has been assigned to the default user group, which is normally named Standard unless you have customized it. This extension uses user groups to determine which plan a user is on. This means each plan must be assigned its own unique group.
- The Allowed tools section will grant users on this plan access to all of the selected tools. By default, all of the tools will be selected. Edit this field and select which tools you want users to access for free. Hold the Ctrl key to select multiple tools.
- The Pricing section allows you to define the cost for one-time, monthly, and annual subscriptions to this plan.
- Setting all of the costs to 0 will make the plan free.
- However, if you set a cost greater than 0 for one field, setting the others to 0 will disable them. For example, if monthly cost is $20, and annual cost is $0, then users can pay monthly but not annually.
- The Options section allows you to change the behavior of the plan. In nearly all cases, you will want to set the When a user purchases this plan, move them to the following group field to match the user group defined in step b.
- Click the Save button.
Now with the Free plan configured as desired, it’s time to create a new premium plan. These instructions will create a new plan named “Pro” which costs $9 /month or $90 /year.
- Create a new user group at Users > Groups named “Pro”. Leave all permissions at their default selections unless desired and click the Create group button.
- At the top right of the Subscriptions > Plans page, click the New plan button.
- Enter the name “Pro”.
- Select the “Pro” group.
- Select the tools that this group will have access to. Hold the Ctrl key to select multiple. You will also need to make sure you select all of the tools that the lesser plan(s) have access to. In this case, make sure to also select everything that you selected in the Free plan configured above.
- Enter a monthly cost of
9
and an annual cost of90
.
- Under the When a user purchases this plan, move them to the following group option, select the “Pro” group.
- Click the Save button.
Now visit the public website and head over to the new Pricing page in the header. You should see your two plans with a breakdown of their enabled tools and their prices.
I recommend creating a new standard account on the website for testing. Go ahead and sign out, then register a new account from the pricing page by clicking “sign up” under the free plan. In the below section, I’ll show you how to manage that user’s subscription from the admin panel.
Managing user subscriptions
When the subscriptions extension is active, the Users > Users subsection of the admin panel will have additional options when viewing a user’s profile. Click on the user you’d like to manage.
At the top of their profile will appear a subscription section showing their current plan and details about the subscription, such as when it expires, when they first subscribed, and when their last payment was received.
To change the user’s plan, click on the Change plan button and select the new plan. By default, their current expiration date will be transferred to the new plan. If you are moving a user from the Free plan to a premium plan, this means their premium plan will never expire.
To change the user’s expiration date, click on the Manual adjust button. If the user’s subscription is currently set to never expire, you should first click the Expire now button. Then, click on either the +1 month or the +1 year button to set or add to the duration of the subscription.
Debugging
Due to the dynamic nature of this application, errors do periodically occur. In most cases, the application will handle those errors silently and the page will work as expected. If something isn’t working quite right in the application, here are some things you can try.
Viewing the error log
Open the Help > Diagnostics subsection of the admin panel. You will find an Errors section near the bottom of this page which shows recent errors that have occurred in the script.
Running diagnostic tests
If there is a problem in the script, the diagnostics in the admin panel might be able to detect the issue and provide further details. Open the Help > Diagnostics subsection of the admin panel and click the Start button near the top.
Activation
Activating the application
To activate the application from the admin panel, go to the Help > Diagnostics admin subsection and click the activate button on the right side. You will be prompted to sign in with your Envato account, after which you will be able to choose from a list of licenses under your account.
Deactivating or moving the license
You don’t need to deactivate your application under any circumstance. If you wish to activate an installation with the same license later, you will automatically be taken to a license manager where you can deactivate the old installation.
In some cases, the license manager will deactivate the old installation automatically, and the new activation will be seamless. Regardless, you don’t need to worry about it, just follow the steps during the new activation and you’ll be on your way. 👍
Technical information
Telemetry & data collection
In the Settings > Configuration subsection of the admin panel, an option is presented titled Send anonymous usage info. When enabled, the application will send some basic information to the developer (that’s me!) every few days. This information is limited to:
- PHP version
- PHP extension versions
- SEO Studio version
- Whether or not the application is licensed
- cURL versions
- MySQL server version
- The number of times each tool was used in the time period
This information does not include any data on you or your users, it does not include any inputs or script settings, it’s exactly as listed above.
I use this information to make informed decisions about increasing server requirements. For instance, in 2018 I increased the script’s minimum PHP version 5.5 when I actually wanted to increase it to 5.6, however my telemetry showed too many users were still on 5.5.
I also use this information to monitor the popularity of tools, which allows me to focus my development in those areas.
I strongly recommend enabling this option to make sure you are included in these kinds of decisions and targeted development!
Update backups
In the Settings > Configuration subsection of the admin panel, an option is shown titled Save files before updating. When enabled, the script will create before each update a zipped archive with a copy of all files that the update will modify.
For example, if you’ve made changes to a file in the script and accidentally left updates enabled, your work is saved inside one of these archives and can be recovered.
These archives are saved under the /resources/bin/
directory and have randomized names in the format: backup-update-7b0e0a11a2180-d1315e94dab53d64a6-1651992500.zip
. You can reference the creation time of these files to find the one from the most recent update.
Recovering from failed updates
This is such a rare event that to my knowledge it hasn’t happened even once in the lifetime of this application. For example, if server unexpectedly shuts down while the script is updating, corruption may occur.
In this case, the update manager will automatically lock both the public website and the admin panel with the following message:
Critical error A recent update failed during file extraction. In order to protect the system, the site has been disabled. Please contact customer support for help on restoring the overwritten files.
This error is shown due to the presence of a lock file at one or both of the following locations which signals that the update process did not exit cleanly:
/lock
/resources/bin/lock
You can open these files with a text editor to learn more about what went wrong. There will be a list of files that the update manager successfully modified, as well as a file path under the FAILED_ON
key which is where the failure occurred.
To recover from this event, please refer to the Update backups section directly above this section, where you will learn how to restore the modified files to their original versions.
Please restore all files in the backup, even if they were not responsible for the failure, to fully return to the prior version. Then delete both of the lock files and reattempt the update.
Disclaimers
This script is a web scraper
It’s important to note that this application is a web scraper. This means it retrieves most of its data from other websites, and it typically does so by disguising itself as a normal user of those websites. This has some important implications:
- When a data source experiences an outage, the relevant tools will temporarily stop working.
- When a data source shuts down their operations, the relevant tools will be permanently broken unless the developer can find a new alternative data source.
Data sources can go offline
The above scenarios happened in 2022, when the data sources we used for domain analysis (alexa.com) and backlinks (seoprofiler.com) both shut down within a week of eachother.
I managed to find alternative data sources for both and released an update after about one week of downtime, but we had to remove an Alexa Rank tool. In its place, I released two new tools for checking page and domain authority.
There’s no guarantee that when a data source shuts down we’ll be able to find a replacement for it. This means you should be prepared, however unlikely it may be, that tools can be suddenly removed from the script if absolutely necessary.
However, my guarantee to you is that when tools are removed from the script, I will endeavor to add at least the same number of new tools to the script as quickly as possible.
Credits
The following assets and libraries were used in this application. Please note that all of these assets have been licensed for this usage.
You are not authorized to use these assets and libraries without acquiring your own additional license, except in the context of this application, or a single derived work without modifying the assets.
You are not authorized to modify any bundled image assets derived from the following items without acquiring your own additional license. For example, you cannot take the existing SEO Studio logo and change its text.
- SEO & Internet Marketing Icons https://graphicriver.net/item/seo-internet-marketing-icons/4432000
- Optimiez Logo https://graphicriver.net/item/optimiez-logo-/4965349
- Simple HTML DOM Note: I’ve made heavy modifications to this code under the MIT license. https://sourceforge.net/projects/simplehtmldom/