Insights and post quality
Output, on-time publishing and quality scores, per site.
The Insights page (Dashboard → Insights) shows, per site or across all sites, for 7, 30 or 90 days: how many posts went out, how many scheduled posts went out on time, the average quality score, and missed posts. Every number comes from records Pressbotics holds. Nothing is a traffic prediction.
Post quality score
When a post is published, Pressbotics reads the live page (not the text the agent sent) and scores it on up to eight checks. The score is passed ÷ applicable.
| Check | Passes when |
|---|---|
| title_length | Title is 30–60 characters. |
| meta_description | Present and 70–155 characters. Only when the site has an SEO plugin; otherwise n/a, never a fail. |
| headings | At least one H2 in the body, and no skipped levels (H2 → H4). |
| image_alt | Every image in the body has non-empty alt text. |
| internal_links | At least one link to another page on the same site. |
| length | At least 600 words in the body. |
| featured_image | A featured image is set. |
| focus_keyword | The focus keyword appears in the title and the first paragraph. Only when one was set; otherwise n/a. |
Search and traffic
Impressions and clicks need Search Console. Until it is connected, those fields are empty and the page says so.
For agents
| Endpoint | Body | Returns |
|---|---|---|
| site-insights | { workspace_id, site?, period: 7d|30d|90d, site_ids? } | Output, on-time rate, quality, weekly trend and plain-English readings. search and traffic are null until Search Console / analytics are connected. |
| Field | Meaning |
|---|---|
| output | published, scheduled (upcoming), pending_approval, missed, partial, by_actor[{actor_type, name, published}] |
| reliability | scheduled_fired, on_time, on_time_rate (0–1), late[{action_id, title, scheduled_for, published_at, seconds_late}]. On time = published within 60 seconds of scheduled_for, from the schedule ledger. |
| quality | average_score (0–1), scored, distribution[{score: 'passed/applicable', count}], failing_most[{check, label, count}], posts[{action_id, title, post_url, score, passed, applicable, failing[]}] |
| trend | published_by_week[{week_start, count}], on_time_rate_by_week[{week_start, rate}] — weeks start Monday, UTC. |
| previous | The same headline numbers for the period before, for trend arrows. |
| search / traffic | null = not connected. Never estimated. |
| readings | One plain-English sentence per section (output, reliability, quality, trend). |

