# WordPress Plugin Update Impact & Support Regression Intel (`obliging_persimmon_cki/wordpress-plugin-update-impact-support-regression`) Actor

Credential-free WordPress.org update-impact intelligence with bounded metadata, review, and support collection; deterministic regression analysis; and evidence-linked reports.

- **URL**: https://apify.com/obliging\_persimmon\_cki/wordpress-plugin-update-impact-support-regression.md
- **Developed by:** [Dung Huynh](https://apify.com/obliging_persimmon_cki) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## WordPress Plugin Update Impact & Support Regression Intelligence

Analyze one or more WordPress.org plugin slugs or URLs and receive one structured report per canonical plugin. The Actor resolves the latest public release, compares bounded feedback before and after that release, and identifies regression, compatibility, recurring-bug, improvement, rating, sentiment, and evidence signals.

### What it collects

- Public Plugin Information API metadata and a conservative plugin-page fallback for the release boundary.
- Public WordPress.org reviews.
- Public support topics and bounded replies.

Reviews and support are optional and isolated: if one source fails, the report keeps the other source and marks coverage, errors, confidence, and limitations explicitly. If release metadata cannot be resolved unambiguously, the plugin receives a failed report rather than a fabricated comparison.

### Input

The canonical default is [`sample-input.json`](sample-input.json):

```json
{
  "plugins": ["contact-form-7"],
  "windowDaysBefore": 30,
  "windowDaysAfter": 30,
  "maxReviews": 30,
  "maxSupportTopics": 30,
  "includeReviews": true,
  "includeSupport": true
}
```

`plugins` accepts one to five slugs or full WordPress.org plugin URLs. Inputs are normalized and deduplicated in first-occurrence order. Windows are UTC half-open ranges: the exact release timestamp belongs to the after window. Collection is bounded to 200 reviews, 200 support topics, 10 replies per topic, and 100 support topic-detail requests per plugin (30 by default).

### Output

Each Dataset record is identified by `pluginSlug` and contains `latestRelease`, `comparisonWindows`, `sourceCoverage`, unavailable-or-valued `ratingDelta` and `sentimentDelta`, four finding arrays, bounded representative `evidence`, confidence, limitations, errors, and `generatedAt`. Findings only reference evidence in the same record. The analysis is observational and does not claim that a release caused an issue.

### Runtime and privacy

The default path requires no login, API key, proxy, or external LLM key. Requests use bounded timeouts, retries, backoff, response-size limits, pagination, and a descriptive user agent. Output excludes raw HTML, credentials, cookies, full profiles, and unbounded text. Reports are written incrementally in stable input order, and `RUN_STATS` is stored in the default key-value store.

### Local checks

```sh
npm ci --offline
npm test
npm run build
npm run lint
npm run format:check
npm run validate:schema
apify run --purge --input-file sample-input.json
```

The deterministic suite uses sanitized fixtures and local transports. The canonical local and Cloud smoke checks have been run against public WordPress.org; optional-source failures remain isolated in the report. The deployed Actor uses the platform-valid identifier `wordpress-plugin-update-impact-support-regression` while retaining this full product title in the documentation. Publication and pricing changes are not automatic.

### Shared analysis foundation

The Actor reuses the vendored `@project/feedback-analysis-core` exports `validateNormalizedFeedback`, `aggregateFeedback`, `clusterFeedback`, `compareFeedbackWindows`, `createClusterId`, and `normalizeConfidence`. WordPress-specific code is limited to source adapters, taxonomy, deterministic sentiment, release windows, orchestration, and output projection. See [`docs/phase-1-report.md`](docs/phase-1-report.md), [`docs/phase-2-report.md`](docs/phase-2-report.md), [`docs/phase-3-report.md`](docs/phase-3-report.md), and [`docs/phase-4-report.md`](docs/phase-4-report.md).

Measured deterministic checks and deferred live measurements are tracked in [`BENCHMARK_NOTES.md`](BENCHMARK_NOTES.md).

# Actor input Schema

## `plugins` (type: `array`):

WordPress.org plugin slugs or full WordPress.org plugin URLs. Inputs are normalized and deduplicated by canonical slug.

## `windowDaysBefore` (type: `integer`):

Number of UTC calendar days in the baseline window before the latest release.

## `windowDaysAfter` (type: `integer`):

Number of UTC calendar days in the post-release window, capped at run time.

## `maxReviews` (type: `integer`):

Bound on public review records collected for each canonical plugin.

## `maxSupportTopics` (type: `integer`):

Bound on public support topics collected for each canonical plugin.

## `includeReviews` (type: `boolean`):

Collect and analyze public WordPress.org reviews when enabled.

## `includeSupport` (type: `boolean`):

Collect and analyze bounded public support topics and replies when enabled.

## Actor input object example

```json
{
  "plugins": [
    "contact-form-7"
  ],
  "windowDaysBefore": 30,
  "windowDaysAfter": 30,
  "maxReviews": 30,
  "maxSupportTopics": 30,
  "includeReviews": true,
  "includeSupport": true
}
```

# Actor output Schema

## `dataset` (type: `string`):

One structured observational report per canonical WordPress.org plugin slug.

## `runStatistics` (type: `string`):

Machine-readable bounded collection and runtime counters.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("obliging_persimmon_cki/wordpress-plugin-update-impact-support-regression").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("obliging_persimmon_cki/wordpress-plugin-update-impact-support-regression").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call obliging_persimmon_cki/wordpress-plugin-update-impact-support-regression --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,obliging_persimmon_cki/wordpress-plugin-update-impact-support-regression"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3Q9H2uPF4d2WdhEsF/builds/Hob8mCNs6e7Twlv6K/openapi.json
