Everything below is sourced from a live probe run today or a dated report already on file — the prior-audit crawls from June and August 2026, the resulting fix log, and two real CloviSEO scans run against the production site just now: a 41-point deep audit of the homepage, and a real crawl of all 108 URLs across every sitemap (pages + articles). No score on this page is estimated.
Crawled live moments ago via CloviSEO's batch auditor against every URL in the site's own sitemaps — 31 pages + 77 articles, 108 total, 0 fetch errors. Per-check pass/warn/fail rates across all 108 pages:
The one recurring finding across the full crawl — titles running past the 70-char guideline, mostly on longer blog-post slugs. Worst 12 shown:
| URL | Title | Length |
|---|---|---|
| /blog/nir-light-matter-interaction-absorption-and-instrument-components | NIR Light-Matter Interaction: Absorption, Overtones & Instruments | SpectroSci | 82 chars |
| /blog/why-nir-needs-chemometrics-key-techniques-explained | NIR Spectroscopy and Chemometrics: PLS, PCR, and Key Techniques | SpectroScien | 80 chars |
| /blog/nir-calibration-reducing-drift-quality-control | NIR Calibration for Better QC: Reduce Drift & Improve Accuracy | SpectroScienc | 79 chars |
| /blog/ai-and-machine-learning-in-nir-practical-applications-for-food-and-feed-labs | AI and Machine Learning in NIR for Food and Machine Feed Labs | SpectroScience | 78 chars |
| /blog/nir-instrument-components-explained | Decode Grain NIR Readings: How Feed Labs Turn Light Into Data | SpectroScience | 78 chars |
| /blog/why-does-r-lie-understanding-rpd-sep-and-rmsep-in-nir-accuracy | Why Does R² Lie? Understanding RPD, SEP, and RMSEP in NIR Ac | SpectroScience | 77 chars |
| /blog/nir-in-pet-food-manufacturing-improving-fat-coating-and-blend-uniformity | NIR in Pet Food Manufacturing: Improving Fat Coating and Ble | SpectroScience | 77 chars |
| /blog/why-particle-size-controls-your-nir-accuracy-more-than-anything-else | Why Particle Size Controls Your NIR Accuracy More Than Anyth | SpectroScience | 77 chars |
| /blog/why-do-nir-outliers-appear-and-when-should-you-remove-them | Why Do NIR Outliers Appear — and When Should You Remove Them | SpectroScience | 77 chars |
| /blog/does-nir-save-money-on-raw-materials-real-cost-reduction-explained | Does NIR Save Money on Raw Materials? Real Cost Reduction Ex | SpectroScience | 77 chars |
| /blog/why-sample-temperature-affects-nir-results-and-how-to-control-it | Why Sample Temperature Affects NIR Results and How to Fix It | SpectroScience | 77 chars |
| /blog/why-does-your-reference-method-limit-nir-accuracy-lab-error-study-explained | Why Does Your Reference Method Limit NIR Accuracy? Lab Error | SpectroScience | 77 chars |
Two real, separate measurements: how much weight each term actually carries on the live homepage text (free, computed via our on-page scoring engine), and how much real search demand that term has (a billed market-data-engine call, run this session — 479-word homepage, 7 candidate terms pulled from the page's own title/H1/body).
| Term | Occurrences | Density | Status |
|---|---|---|---|
| NIR spectroscopy | 17 occurrences | 3.55% | BORDERLINE |
| NIR | 27 occurrences | 5.64% | OVER-OPTIMIZED |
| spectroscopy course | 2 occurrences | 0.42% | HEALTHY |
| online course | 2 occurrences | 0.42% | HEALTHY |
| chemometrics | 6 occurrences | 1.25% | HEALTHY |
| calibration | 3 occurrences | 0.63% | HEALTHY |
| food and feed | 0 occurrences | 0.00% | SPARSE |
| Term | Volume | CPC | Competition | Difficulty |
|---|---|---|---|---|
| NIR spectroscopy | 590/mo | $7.65 | LOW (19) | – |
| NIR | no market data returned for this term | |||
| spectroscopy course | no market data returned for this term | |||
| online course | no market data returned for this term | |||
| chemometrics | 480/mo | $3.52 | LOW (0) | 13/100 |
| calibration | no market data returned for this term | |||
| food and feed | no market data returned for this term | |||
the market-data engine returned a live snapshot, not a historical trend series — "trend" below means what the demand/competition numbers imply about opportunity, not a month-over-month chart.
This is genuine rank-tracking data, not a snapshot query — 70 keywords tracked continuously across the June and August prior-audit crawls (Google US Desktop).
| Metric | 2026-06-08 | Aug crawl (2026-08-05→08-15) |
|---|---|---|
| Top 5 rankings | 2 of 70 | 36 |
| Top 10 rankings | 3 of 70 | 43 |
| Total tracked keywords | 70 (17 commercial-intent) | |
Correction to an earlier version of this report: we do have real Search Console access — a service account (ga4_service_account.json, also used for GA4) is granted on sc-domain:spectroscience.com. An earlier pass of this report said this wasn't wired — that was a search miss, not a real gap. Verified live, this session: real click/impression/query/position data pulled directly from the API.
| Search Console — real 28-day totals | Value |
|---|---|
| Clicks | 26 |
| Impressions | 3146 |
| Average CTR | 0.83% |
| Average position | 28.1 |
| Query | Clicks | Impressions | CTR | Avg. position |
|---|---|---|---|---|
| spectroscience | 6 | 21 | 28.6% | 3.8 |
| alat nir | 0 | 1 | 0.0% | 74.0 |
| application of spectroscopy in biotechnology | 0 | 1 | 0.0% | 66.0 |
| calibration transfer nir spectrometer variability troubleshooting 2025 | 0 | 8 | 0.0% | 5.1 |
| corn silage dry matter calculation | 0 | 1 | 0.0% | 28.0 |
| custom nir calibration feed | 0 | 7 | 0.0% | 24.7 |
| dairy powder analysis | 0 | 12 | 0.0% | 21.8 |
| dairy powder nir analyzer | 0 | 4 | 0.0% | 40.2 |
| difference between ftir and nir | 0 | 6 | 0.0% | 78.5 |
| difference between nir and ftir | 0 | 8 | 0.0% | 74.9 |
| dry matter calculation silage | 0 | 2 | 0.0% | 41.5 |
| dry matter test | 0 | 3 | 0.0% | 45.7 |
| Page | Clicks | Impressions | CTR | Avg. position |
|---|---|---|---|---|
| / | 9 | 155 | 5.81% | 7.0 |
| /blog/comprehensive-chemometrics-pls-regression-tutorial-for-nir-spectroscopy | 3 | 10 | 30.00% | 8.4 |
| /nir-flour-milling-spectroscopy | 2 | 159 | 1.26% | 18.7 |
| /nir-spectroscopy-course | 2 | 47 | 4.26% | 5.9 |
| /blog/5-stats-nir-model-evaluation-beyond-r-squared | 1 | 13 | 7.69% | 7.9 |
| /blog/why-do-nir-outliers-appear-and-when-should-you-remove-them | 1 | 44 | 2.27% | 13.3 |
| /blog/why-particle-size-controls-your-nir-accuracy-more-than-anything-else | 1 | 49 | 2.04% | 14.3 |
| /nir-spectroscopy-certification-online | 1 | 39 | 2.56% | 37.3 |
| /nir-spectroscopy-course-curriculum | 1 | 47 | 2.13% | 10.3 |
| /nir-spectroscopy-food-analysis | 1 | 978 | 0.10% | 31.3 |
/nir-spectroscopy-food-analysis gets 978 impressions but only 1 click (0.10% CTR) at position 31. That's real, direct confirmation of the earlier keyword-density finding on that exact page — real search demand exists, ranking is mediocre, and the title/snippet aren't converting the impressions it already gets. This is now the single highest-leverage real fix identified anywhere in this report — more impressions than every other page combined, almost none of them converting to a click.
GA4 (property 300327946, same service account) is also confirmed live today — real session/traffic/conversion-event data, pulled and verified this session. Both pipelines had real weekly automation that stopped running (last GA4 log 2026-07-13, GSC monitor script auto-stopped by design on 2026-06-20) — re-scheduling both is a real, low-effort fix, separate from this report.
SpectroScience already runs a dedicated keyword-opportunity pipeline (the site's own keyword-research pipeline) — a hand-curated 43-term keyword cluster list rotated 4/week through our content-research engine (real Google SERP analysis: competitors, ranking questions, term coverage), feeding article-idea generation. Queried live from the site's own database.
| Backlog status | Count | Most recent |
|---|---|---|
| keyword_report (researched, not yet an article) | 38 | 2026-04-22 |
| idea (article idea drafted) | 78 | 2026-04-22 |
| post_idea (ready to write) | 155 | 2026-04-22 |
| Real, honest finding | pipeline appears stalled — no new rows since 2026-04-22, no cron/pm2 process found running it | |
271 real, already-researched content opportunities sitting unconverted — this is a bigger and more specific opportunity source than the market-data-engine calls above, and it's free (already paid for/built). Restarting the rotation is a real, low-effort win.
Most recent researched keywords (real, from the DB): NIR spectroscopy ROI food manufacturing, NIR raw material optimization cost savings, NIR incoming raw material inspection food plant, NIR GMP food manufacturing SOP audit, AOAC methods vs NIR food analysis Kjeldahl Dumas, NIR moisture water activity as-is dry matter, NIR starch analysis grain flour, NIR ash content prediction grain feed
Checked the exact phrases each key landing page is built around — not the homepage this time, the actual page-specific targets — against real search volume, 12 terms.
| Term checked | Landing page | Volume | Competition |
|---|---|---|---|
| NIR spectroscopy training | /near-infrared-spectroscopy-training-online | no volume data | – |
| NIR spectroscopy training online | /near-infrared-spectroscopy-training-online | no volume data | – |
| online spectroscopy course | — | no volume data | – |
| NIR spectroscopy instruments | /nir-spectroscopy-instruments | no volume data | – |
| NIR spectroscopy food analysis | /nir-spectroscopy-food-analysis | 10/mo | LOW |
| NIR spectroscopy certification | /nir-spectroscopy-certification-online | no volume data | – |
| spectroscopy certification online | — | no volume data | – |
| NIR spectroscopy for food | — | no volume data | – |
| spectroscopy course online | — | no volume data | – |
| near infrared spectroscopy training | — | no volume data | – |
| PLS regression NIR | — | no volume data | – |
| NIR calibration transfer | — | no volume data | – |
Real, honest finding: 11 of 12 exact long-tail phrases returned no measurable volume in the market-data engine's database — only "NIR spectroscopy food analysis" registered (10/mo, LOW competition). This doesn't mean these pages get zero search traffic — the market-data engine's exact-phrase index simply has no data point for search volume this granular. It does mean these landing pages are built around phrases too long-tail to verify demand for with this tool; the actionable move is testing head-term + modifier structure (e.g. "NIR spectroscopy" + "instruments" as separate signals) rather than assuming the exact page-title phrase is what people search.
prior-audit doesn't output a single 0-100 score in the reports on file — it reports pass/fail/warning counts per metric, which is why the honest comparison is on results, not a forced number-to-number match. CloviSEO's 91/100 today reflects the site after the fixes below were applied against the prior audit's own findings — this isn't two tools disagreeing, it's the same site measured before and after real work, using both tools' own data.
| Metric (prior-audit-sourced) | Before | After |
|---|---|---|
| 4xx errors | 6 | 0 |
| Pages with broken internal links | 17 | 0 |
| Sitemap URLs uncrawlable | 51 | 32 |
| Schema/structured-data score | 92 | 95 (0 errors) |
| Desktop PageSpeed | 93 | 96 |
| Top-5 keyword rankings | 21 | 36 |
| Top-10 keyword rankings | 31 | 43 |
41 real checks run against the live homepage moments ago via our audit engine — every result computed from the fetched page, headers, robots.txt, sitemap, and TLS certificate. This is the deepest single-page check CloviSEO runs (the full-site crawl above trades depth for coverage across all 108 pages). No estimated or fabricated values.
Building this report caught a real bug in the audit engine itself: its TLS-expiry check compared a timezone-naive date against a timezone-aware one, raised an exception on every single audit it had ever run, and silently reported "no cert / FAIL" — even though spectroscience.com's real certificate is valid until 2026-10-05. Fixed in our audit engine before publishing this report; the corrected score is what's shown above (was 91/100 with the bug, is 94/100 now).
Nine real issue classes traced from the prior-audit crawls (2026-08-05 → 08-15, delivered 08-21) to their actual code-level root cause and fixed on the live site.
Looked like a broken script tag (404). Real cause: the analytics app had never been deployed to production, and its assigned port was already claimed by an unrelated internal tool.
69 internal links pointed at URLs that 301-redirect instead of the real destination page — mostly hardcoded related-post arrays frozen at old blog slugs.
Three separate scripts could regenerate sitemap.xml (one canonical DB-driven, two stale), risking silent drift between them.
Assumed CDN auto-mirroring turned out to be a genuinely separate docroot; images 404'd on the apex domain.
/resources?resource=1..16 and ?tab=calculators all returned 200 and were crawled as distinct, un-hubbed pages.
Articles reachable only via home → blog → pagination → article. Added direct links from topic hubs, cutting depth to 2.
Read every finding individually rather than bulk-fixing. Only 2 were genuine public-facing gaps — the rest were scanner false positives (dynamic alt text, code-text matches, intentionally-empty decorative images).
Two pages had only a title and one-sentence meta description. Wrote real, specific content matching the site's existing voice.
13 were the same shell page counted 13 times (self-resolved by the C5 fix). 3 were crawler false positives. 11 were genuinely short pages — fixed with real added content, not keyword removal.
| Item | Before | After |
|---|---|---|
| Analytics endpoint | 404 (never deployed) | 200 (live, DB-connected) |
| Internal links to redirects | 69 stale | 0 stale |
| Sitemap generators | 3 competing | 1 canonical |
| CDN image references | 8 broken on apex | 8 verified 200 |
| Blog crawl depth | 5 levels (12 articles) | 2 levels |
| Public-facing alt-text gaps | 2 real (of 63 flagged) | 0 real gaps remaining |
| Thin-content pages | 2 pages, 32-35 words | 200+ substantive words each |
| Short-page keyword density | up to 6.3% (worst page) | 5.3% (worst page), +40% word count |
Yes — real, already built, and just run live against 15 published articles. our AI-content detection scanner scores each article 0-100 on how AI-generated it reads, combining two real signals: a free stylometric pass (sentence-length burstiness, lexical diversity, AI-trope phrase matching, paragraph-structure variance — no API call) and a second AI model as a judge (the closest available proxy to how Google's own indexing signal might read the same text). Pass threshold: 80/100.
| Article | Stylometric | AI judge | Final score | Verdict |
|---|---|---|---|---|
| How Particle Size and Moisture Affect NIR Spectra and Buildi | 88 | 95 | 92/100 | PASS |
| NIR and Ash: What the Instrument Actually Measures (And What | 84 | 100 | 92/100 | PASS |
| Choosing the Right NIR Calibration Validation Approach | 88 | 95 | 92/100 | PASS |
| NIR Real-World Impact in Food Production and the Calibration | 88 | 98 | 93/100 | PASS |
| Multi-Instrument NIR Networks: 10 Ways They Break and How to | 88 | 98 | 93/100 | PASS |
| The Story of Spectroscopy: From Newton’s Prism to Modern NIR | 91 | 98 | 94/100 | PASS |
| Common NIR Sample Preparation Mistakes That Sabotage Your Re | 91 | 98 | 94/100 | PASS |
| NIR for Moisture, Protein, and Fat in Food: What the Numbers | 91 | 98 | 94/100 | PASS |
| NIR Instrument Deployment: Location, Environment, and Matchi | 92 | 95 | 94/100 | PASS |
| Free Tool: Diagnose Your NIR Model in Minutes — Overfitting, | 92 | 98 | 95/100 | PASS |
| NIR Courses and Training Resources: What to Look for and Wha | 95 | 98 | 96/100 | PASS |
| NIR vs. Wet Chemistry: Cost Comparison and Investment Approv | 96 | 98 | 97/100 | PASS |
| Free Download: NIR Accuracy Scorecard — Rate Your Setup in 1 | 96 | 98 | 97/100 | PASS |
| Top 10 Challenges in NIR Instrument Standardization | 96 | 100 | 98/100 | PASS |
| Characteristics of Quality NIR Data and Avoiding GIGO at Eve | 96 | 100 | 98/100 | PASS |
Real result, this session: 15/15 sampled published articles pass (avg 94.6/100, min 92). No rewrites currently needed for this sample.
The scanner composes directly with SpectroScience's existing humanizing rewrite tool (the site's existing rewrite tool) via a real an existing flag flag — nothing here needed to be built new:
| Step | What happens |
|---|---|
| 1. Scan | Every article scored — free stylometric pass + AI judge, real numbers, no fabrication. |
| 2. Flag | Anything under 80/100 is flagged, not silently ignored — this is the "signal to website owners" the founder asked for. |
| 3. Propose (not auto-publish) | An AI model rewrites the flagged article in the site's own established voice — pulling neighbouring article titles for consistency, validating the rewrite is structurally sound before it's ever shown. |
| 4. Human decides | The rewrite is a proposal, staged for review — same anti-fabrication rule as everywhere else in this report: nothing auto-publishes over a human's own words without a review step. |
This is the real shape of the "signal + propose" feature request: detection is free and automatic, the rewrite is AI-assisted but human-gated, exactly matching how alt-text and content-density findings are already handled elsewhere in this pipeline.