Tino SEO & GEO

Description

Tino writes and publishes SEO + GEO articles and helps you rank on Google and in AI assistants (ChatGPT, Gemini, Perplexity). This plugin connects your WordPress to your Tino dashboard with a secure key and takes care of:

  • Publishing the articles you approve in Tino (no duplicates).
  • Outputting the structured data (JSON-LD Article + FAQPage) in the <head>, so it always reaches Google and AI assistants even if you run security plugins.
  • Allowing the relevant AI bots (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended and others) in your robots.txt.
  • Notifying IndexNow (Bing/Yandex) about each new article to speed up discovery.

It does not use your account password: it authenticates with its own API key that you can regenerate at any time.

External services

This plugin connects to external services only when the corresponding feature is enabled. What it sends, when and where:

IndexNow (search engine notification of new or updated URLs)

When you publish or update an article, the plugin notifies IndexNow so that compatible search engines (Microsoft Bing, Yandex and others) discover the change sooner. It sends the public URL of the post, your site host name and a random verification key that the plugin itself hosts on your site. It does NOT send the article content or any personal data. This happens only if IndexNow is enabled in Settings -> Tino (on by default; you can turn it off there).

  • Service: IndexNow – https://www.indexnow.org/
  • Endpoint: https://api.indexnow.org/indexnow
  • Documentation: https://www.indexnow.org/documentation – the data (public URLs) is shared with the participating search engines; e.g. Microsoft Bing privacy policy: https://www.microsoft.com/privacy

Tino (connection with your Tino account)

The plugin does not send data to Tino on its own. It exposes a private REST endpoint that your Tino dashboard calls, authenticated with the API key you generate in Settings -> Tino, to publish the articles you approve. You control the key and can regenerate or disconnect it whenever you want.

  • Service: Tino – https://trytino.com
  • Terms: https://trytino.com/terminos
  • Privacy: https://trytino.com/privacidad

Installation

  1. Install and activate the plugin.
  2. Go to Settings -> Tino and copy your API Key.
  3. In your Tino dashboard, paste the key and click Connect.

FAQ

Do I need to give my WordPress username and password?

No. The plugin generates its own key; Tino connects using only that key.

Does it work with Wordfence or other security plugins?

Yes. The schema is output in the <head> from the plugin itself, without relying on the open REST API or on application passwords.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Tino SEO & GEO” is open source software. The following people have contributed to this plugin.

Contributors

Translate “Tino SEO & GEO” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.11.0

  • Fix: the article’s structured data now says which page it belongs to. Tino builds the schema on its
    server, where the final permalink is not known yet, so the Article node was published without a
    URL, without mainEntityOfPage and without the featured image. Search engines saw a description of
    an article that never said which page it described. The plugin now fills those in from WordPress
    itself, which is the only place that knows them. Your theme’s or SEO plugin’s own schema is left
    untouched: nothing is merged, only anchored.

1.10.0

  • New: the questions Tino writes for the pages you already have are now published as a VISIBLE
    “Frequently asked questions” block inside the page, and only after you approve that page in your
    Tino dashboard. Until you approve it, nothing on your site changes.
  • Fix: the question block is no longer declared in the page head when it is not on the page. Google’s
    structured data policy requires FAQ questions and answers to be visible on the page, so declaring
    them invisibly put your site at risk of a manual action for no measured gain. The markup is now
    emitted only alongside the visible block, so it always matches what a reader sees.
  • Your content is still never rewritten: the block is rendered by the plugin on top of your page, so
    removing it is one click and leaves your text exactly as you wrote it.
  • New: Tino can now delete an article it published (it moves the post to the trash). Until now,
    deleting an article in Tino left an orphan draft behind in WordPress.

1.9.0

  • New: your business entity (Organization / LocalBusiness) is now also declared in the head of your
    HOME page, not only inside each article. The home page is where an AI learns what a business is;
    until now that node — name, official profiles, what the business is best at, the area it serves —
    only travelled with the articles. It carries the same @id as the articles, so engines merge the
    pieces into one entity instead of several similar ones.
  • Nothing visible changes: it mirrors what your site already says, and Tino only sends what it can
    back with your own pages. New route tino/v1/entidad (POST / GET / DELETE): every field is
    length-capped and stripped of markup, URLs must be http(s), and anything else is discarded.
    Removing it is one call, and uninstalling the plugin deletes it.

1.8.0

  • New: Tino can now make the pages you ALREADY have citable — your services and your “about us” —
    without touching a single visible word of them. It adds a machine-readable question block in the
    page head, and removing it is one click. Your content is never rewritten: only your own words
    decide what the page says.
  • Works with any kind of page: WooCommerce products, custom post types and normal pages alike.

1.7.0

  • New: articles published by Tino now declare in the page head that their text was generated by an
    AI model, using the IPTC digital source type vocabulary, so that automated checkers can detect it.
    This is what Article 50(2) of the EU AI Act requires, and it applies from 2 December 2026.
    The marker is added ONLY to posts Tino published: marking the rest of the site would falsely
    declare human-written pages as machine-generated.
  • Nothing changes for readers: the declaration is machine-readable only and is not displayed.

1.6.2

  • Fix: the plugin reported the wrong version number to the Tino dashboard. The version lives in the
    file header and in an internal constant, and only the header had been updated, so the dashboard
    believed sites were running an older release than they were.

1.6.1

  • Fix: uninstalling the plugin no longer deletes your Tino API key. Reinstalling is a normal support
    action, and deleting the key silently disconnected the site — Tino kept the old key, could no
    longer publish, and nothing said so until someone noticed articles had stopped appearing.

1.6.0

  • New: the plugin counts visits that arrive from an AI assistant (ChatGPT, Perplexity, Gemini,
    Copilot, Claude), so you can finally see whether being cited by an AI brings anyone to your site.
  • Privacy first: only a per-day counter per assistant is stored. No IP, no user agent, no tracking
    cookie, no identifier — nothing that would require consent.
  • Honest by design: a lot of AI traffic arrives with no referrer and is indistinguishable from
    direct. The number is reported as a FLOOR (“at least this many”), never as a total, and the note
    travels with the data so it cannot be shown without it.
  • The plugin now opts itself into WordPress auto-updates, so fixes and improvements reach your site
    without anyone having to click Update.

1.5.0

  • New: search-engine verification from the Tino dashboard. Reading how often an AI answer cites your
    pages requires the site to be verified in Bing Webmaster Tools, and verifying requires a tag in the
    . Until now that meant doing it by hand for every site; the plugin can now place it for you.
  • The new tino/v1/verify route accepts ONLY a well-formed verification code (hexadecimal) and stores
    it as an option. It cannot be used to inject anything else into your site’s head.
  • The tag is printed on every page (Bing looks for it on the home page) and only when a valid code
    is stored, so nothing changes for sites that do not use this.

1.4.0

  • IndexNow submissions are now VERIFIED instead of fire-and-forget. Until 1.3.0 the ping was sent
    with ‘blocking’ => false, so the response was never read: an invalid key, a 4xx or a network error
    looked exactly like a success and articles silently never reached Bing/Copilot via IndexNow. The
    request now waits for the response, and the result (HTTP code and reason) is stored per URL.
  • New: the last IndexNow submissions (URL, timestamp, HTTP code, outcome) are kept in a small
    rotating log and exposed in the tino/v1/status response as indexnow_state, so the Tino dashboard
    — and you — can see whether pings are actually landing instead of assuming they do.
  • Submissions can be disabled from Settings; a disabled submission is also logged with its reason,
    never silently skipped.

1.3.0

  • IMPORTANT: the plugin folder is now “tino-seo-geo”, matching the WordPress.org directory. Until
    1.2.2 the ZIP served from trytino.com created a folder called “tino”, which WordPress treated as a
    DIFFERENT plugin: updates from the directory were never offered, and installing both at once
    crashed the site with a fatal error. If you installed from trytino.com before, deactivate and
    delete the old “tino” plugin and reconnect with your API key. The plugin now detects a duplicate
    copy and disables itself instead of taking the site down.
  • AI crawler access is now fixed even when the site has a PHYSICAL robots.txt. WordPress’s robots_txt
    filter only applies to the virtual file, so on sites with a real robots.txt in the web root the
    plugin’s Allow rules never reached the served file. The plugin now detects that case and, on
    request, prepends its own marked block. The edit is additive: none of your existing rules are
    touched (in robots.txt the most specific group wins, so a per-bot “Allow: /” already overrides a
    general “Disallow: /”), it is idempotent, and the original file is backed up as
    robots.txt.tino-backup before the first write.
  • New REST route POST tino/v1/robots to apply that fix, and the tino/v1/status response now reports
    whether robots.txt is virtual or physical, whether it is writable, and whether the block is
    already in place.

1.2.2

  • Plugin Check compliance: the Settings -> Tino page now enqueues its CSS and JS via wp_add_inline_style() and wp_add_inline_script() on the admin_enqueue_scripts hook (loaded only on that page). Removed the inline / blocks and inline event handlers.

1.2.1

  • Plugin Check compliance: output escaping, wp_parse_url(), wp_delete_file(), sanitized server input, English readme.
  • Brand logo shown in the Settings -> Tino header.

1.2.0

  • Blog page management from the plugin (endpoint /tino/v1/blog): the “Activate blog” button in Tino now works with the plugin connection (previously only with Application Passwords).

1.1.0

  • The SEO slug curated in Tino is applied when the post is created (clean URL).
  • Outputs <meta name="description"> in the <head> (with the curated meta description), avoiding duplicates when Yoast, Rank Math, SEOPress or AIOSEO are present.

1.0.0

  • Initial version: connection via API key, article publishing, schema in <head>, AI bot access and IndexNow.