inemaSEO · 5 local tools · MIT

The open Semrush for your own site

Five command-line tools that run on your computer, with just Python, no paid API and no account on any service other than Search Console and Bing Webmaster, which are free.

Banner: the open Semrush for your own site — 5 local tools, no paid API
In short

inemaseo-sistemas is a set of five free programs for handling the SEO (how your site shows up on Google and in AIs) of your own site. It is for anyone who has a site and wants to know what is broken, who finds you, which AI bots read your pages and whether the site is ready for AI agents. Everything runs on your computer, with Python 3.10 or newer, using only free data: the site, the server log and the files that Search Console and Bing Webmaster let you download.

What it is

Five questions, five tools

Each tool answers one question, reads data you already have and delivers an HTML report (INEMA standard) plus JSON and CSV for another tool to read.

Banner: the open Semrush for your site, with the five tools gsc-historico, bing-ia, botlog, auditor and agente-ready
1

📈 gsc-historico

How many searches without your brand found you, week by week, forever. Search Console only keeps 16 months; here it stays in a SQLite database that never deletes.

Data: CSV from gsc_semanal.py (Search Console)

2

💬 bing-ia

Which pages Copilot and Bing cited in AI answers and whether they also get clicks on Google. The AI queries you don't cover yet become content ideas.

Data: export of the Bing Webmaster AI Performance report

3

🤖 botlog

Which AI bots actually read the site, separated by purpose (search, user request, training), and which ones are fake, with the IP checked against the official lists.

Data: your server's access log + official IP lists

4

🩻 auditor

What is broken in the HTML the server delivers: canonical, hreflang, sitemap, robots.txt by AI bot purpose, CDN blocking, orphan pages. Each finding comes with a "how to fix" line.

Data: your site, crawled politely

5

🎯 agente-ready

A 0 to 100 readiness score for AI and agents, with public weights in pesos.json: you can disagree, change them and compare. Includes WebMCP (document.modelContext).

Data: your site

✓

🧾 Nothing made up

Bot names, official IPs, CSV columns and Google rules only get in with a source (link in each tool's README). Where there is no source, it says [to be confirmed].

License: MIT · Python standard library only

How it works

Free data goes in, report comes out

Nothing goes to the cloud. You point the tool at a file or at the site's address, it works on your computer and writes the results to a folder.

Your free data→ Local tool (Python)→ relatorio.html+ JSON / CSV→ Next tool

Files you download

The weekly Search Console CSVs go into gsc-historico. The AI Performance CSV goes into bing-ia, which cross-references it with the gsc-historico database.

Server log

botlog reads nginx/Apache (combined, including .gz) and Cloudflare Logpush. Before sharing, the filtrar command keeps only the bot lines with an official IP (LGPD (Brazil's data protection law)).

The site itself

auditor and agente-ready read the HTML like a bot that doesn't run JavaScript: GET only, 1 s pause, respecting robots.txt. agente-ready imports the auditor's core.

Prerequisites

What you need

For the auditor and agente-ready, Python and an internet connection are enough. The other three need a file from you.

Python 3.10+ and git

Standard library only: there is no pip install.

python3 --version
git clone https://github.com/inematds/inemaseo-sistemas
cd inemaseo-sistemas

Search Console and Bing

For gsc-historico: the CSVs from gsc_semanal.py (inemaseo-metodo repository). For bing-ia: the CSV exported from AI Performance in the Bing Webmaster panel (there is no API for this data).

Access log

For botlog: the access log of your nginx/Apache or the Cloudflare Logpush JSON. Read-only, for example:

ssh root@YOUR_SERVER 'cd /var/log/nginx; zcat -f access.log.*.gz; cat access.log.1 access.log' > /tmp/site.log
User guide · step by step

From clone to first report

The commands below run from the repository root. Every tool has --help in Portuguese and a README with all the options.

1

Audit your site's HTML

Crawls up to 50 pages (change with --max) and writes relatorio.html, auditoria.json, achados.csv and paginas.csv. In the terminal, the summary and the first 5 critical/important findings.

python3 ferramentas/auditor/auditor.py https://yoursite.com --max 50 --saida saida/auditor
python3 ferramentas/auditor/auditor.py https://username.github.io/repo/guia/ --max 20   # only the guide folder
2

Get the score for AI and agents

Reads the home page and 4 pages from the sitemap (change with --paginas), about 10 to 25 requests. Output: relatorio.html, agente-ready.json and criterios.csv. A criterion that doesn't apply is left out of the calculation, not counted as a failure.

python3 ferramentas/agente-ready/agente-ready.py https://yoursite.com --saida saida/agente-ready
python3 ferramentas/agente-ready/agente-ready.py https://yoursite.com --paginas 8
3

Keep Search Console forever

Import the CSV folder (re-importing doesn't duplicate) and generate the week's report: brand × non-brand × anonymous, queries that rose and fell, content agenda (new query with no owner page) and pages with impressions and 0 clicks.

python3 ferramentas/gsc-historico/gsc_historico.py importar exemplos/gsc-historico/entrada --db dados/gsc.sqlite
python3 ferramentas/gsc-historico/gsc_historico.py relatorio --db dados/gsc.sqlite --site inema.club --saida saida/inema.club
4

See where Bing's AI cites you

Import the AI Performance CSVs and cross-reference them with the gsc-historico database. If the tool doesn't recognize the columns, it asks for the map with --colunas (Microsoft doesn't document the export).

python3 ferramentas/bing-ia/bing_ia.py importar exemplos/bing-ia/entrada/*.csv --db dados/bing.sqlite
python3 ferramentas/bing-ia/bing_ia.py relatorio --db dados/bing.sqlite --gsc-db dados/gsc.sqlite --site inema.pro --saida saida/inema.pro
5

Find out which bots read the site

Analyze the log (several files, .gz included). With --sitemap, it also shows the pages that no bot managed to read. Before showing or publishing a log, use filtrar.

python3 ferramentas/botlog/botlog.py analisar /tmp/site.log --sitemap https://yoursite.com/sitemap.xml --saida saida/site
python3 ferramentas/botlog/botlog.py filtrar /tmp/site.log --saida /tmp/bots-only.log   # only bots with an official IP
6

Run the tests

The tests don't use the network: the auditor and agente-ready are tested against a fake site in tests/fixtures/.

for t in ferramentas/*/; do [ -d $t/tests ] && python3 -m unittest discover -s $t/tests; done
Real findings · 10/19/2026

What the tools found on INEMA's sites

The repository's examples were generated for real on 10/19/2026, using only GET on public INEMA sites. Each report opens in the browser.

agente-ready · real

AI and agent readiness score (0–100)

inema.club93
news.inema.pro72
eventos.inema.pro69
rea-engenharia-reversa guide54

On the last three, the entity category came in at 0 (no Organization/Person with @id in the JSON-LD) and WebMCP at 29 (no tool registered). inema.club registers a WebMCP tool and scored 100 in that category. · inema.club · eventos · news · REA guide

auditor · real

inema.club

50 pages

1 important finding: 2 course pages with fewer than 80 words in the delivered HTML (77 and 78). Among the improvements: 28 titles outside the 15–65 character range (a practical range, not a Google rule) and an entity without @id.

open report

auditor · real

eventos.inema.pro

0 critical

No critical or important findings across 50 pages. 4 improvements: long titles, repeated titles, more than one H1 and pages without JSON-LD.

open report

auditor · real

guide on GitHub Pages

2 important

On the rea-engenharia-reversa guide: sitemap not found and 3 pages without a canonical link. The robots.txt of github.io belongs to another repository.

open report

gsc-historico · real

inema.club, week 10/05–10/11

157

impressions from searches without the brand, with 0 clicks (out of 702 impressions in total). The report pulled out 18 queries for the content agenda and 5 pages with impressions and no clicks.

open report

botlog · real

desenho.inema.pro

8 of 3,082

log lines from 10/05 to 10/19 were from a bot with an official IP: GPTBot (4), ClaudeBot (2) and OAI-SearchBot (2). The rest (people, scanners, curl) was removed by filtrar.

open report

bing-ia · fictitious

Labeled example

The bing-ia example uses a CSV with made-up numbers (the URLs are real ones from inema.pro), cross-referenced with the real gsc-historico database. The column names are a guess [to be confirmed] with a real export.

open report

Honest limit

What you can and can't do for free

The repository doesn't promise what free data can't deliver. What requires paid data stays outside it, as an option.

You can, with these 5 tools

  • ✓Technical audit of the delivered HTML
  • ✓Search Console history without the 16-month limit
  • ✓Official citations from Bing's AI
  • ✓AI bots in the log, with fakes separated
  • ✓Agent readiness score, with public weights

You can't without paid data

  • ✕Exact search volume and keyword difficulty
  • ✕Competitor SERP
  • ✕Complete backlinks
  • ✕Automatic monitor of AI answers

For that there are DataForSEO, Firecrawl, Apify, Semrush and Ahrefs: optional, outside this repository. Comparison in docs/ESPEC.md (in Portuguese).

A sample, not the whole site

With --max 50 on a site with a thousand URLs, "orphan" means "with no incoming link from the 50 pages read". agente-ready reads the home page and 4 pages: it is a thermometer.

A log is not a citation

The log shows who requested the page, not whether the AI used the content in an answer. For citations, use bing-ia. Behind a CDN, use the CDN's log.

Only what the bot sees

Nothing runs JavaScript, on purpose. The auditor doesn't measure speed (Core Web Vitals) or backlinks.

Related course

Learn to use it in inemaSEO

inemaseo-sistemas is part of inemaSEO and is the basis of course 7 of the Formação inemaSEO.