Rankfender Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Rankfender connects your WordPress site to your Rankfender account so you can import and publish AI-generated articles with one click. It exposes a REST endpoint that Rankfender calls to create or update posts, and provides an admin interface to sync, review, and publish articles from your Rankfender content queue.
Features include:
- One-click sync of pending articles from Rankfender
- Push-publish REST endpoint (
POST /wp-json/rankfender/v1/publish) with API-key authentication - Optional HMAC request signing and IP allowlist for extra security
- Automatic SEO field mapping for Yoast SEO and Rank Math
- Featured image download and optional inline image localization
- Category and tag management (auto-create missing terms)
- Idempotent upsert via
rankfender_article_id - Auth Debug panel to diagnose 401/403 failures
- Full i18n support (English and French included)
External services
This plugin communicates with the Rankfender cloud API to retrieve your article queue and publish content to your WordPress site.
Rankfender API (https://api.rankfender.com)
- What it is: The Rankfender content-generation platform. This plugin is the official integration bridge between your WordPress site and your Rankfender account.
- What data is sent and when:
- Your API token (stored in WordPress options as
rankfender_api_token) is sent as a bearer credential on every request to authenticate your account. - When listing articles: pagination parameters (page, per-page, status filter) are sent.
- When fetching article detail: the Rankfender article ID is sent.
- When the push-publish endpoint is called by Rankfender: article content (title, HTML body, excerpt, metadata, featured image URL, categories, tags, SEO fields) is received from Rankfender’s servers and written to WordPress.
- No personal data about your site’s visitors is sent to Rankfender.
- Your API token (stored in WordPress options as
- Service provider: Rankfender — https://rankfender.com
- Terms of service: https://rankfender.com/terms
- Privacy policy: https://rankfender.com/privacy
REST Publish API
The plugin exposes a REST endpoint that Rankfender (or your server-side job) can call to create/update posts.
- Endpoint:
POST /wp-json/rankfender/v1/publish - The endpoint is always enabled.
- Authentication (symmetric token):
- Preferred: header
X-API-Key: <token> - Also supported:
Authorization: Bearer <token> - Header casing fallbacks are accepted to tolerate proxy/WAF differences (
X-Api-Key,x-api-key, and server superglobalHTTP_X_API_KEY).
- Preferred: header
- Optional HMAC (if enabled via setting
rankfender_require_hmac):X-RF-Timestamp: <unix-epoch-seconds>(±5 minutes clock skew)X-RF-Signature: base64( HMAC-SHA256( timestamp + "." + raw_body, token ) )- The Rankfender app currently sends
X-Request-Timestamp: <ISO8601>for diagnostics; the plugin records it in the Auth Debug log.
- Optional IP allowlist: set
rankfender_allowed_ipsto an IPv4 or CIDR list to restrict callers. - Idempotency: send
Idempotency-Key(orX-Idempotency-Key) to safely retry the same publish request.
Request body (JSON)
– title (string)
– content (HTML string)
– excerpt (string, optional)
– post_status or status: draft|publish|pending|future|private (falls back to plugin default if missing)
– post_type: if omitted, uses plugin default post type (setting)
– date_gmt: RFC3339, MySQL datetime, or unix timestamp; if in the future with publish, it will be scheduled as future
– featured_image (URL)
– primary_keyword (string), secondary_keywords (string[]), tags (string[])
– categories: IDs, names/slugs, or objects { slug|name, parent_slug|parent_id } (optional creation controlled by setting)
– language (string), word_count (number)
– rankfender_article_id (string): external identifier used for idempotent upsert
Response (JSON)
– Success: { "success": true, "post_id": <int>, "url": <string>, "idempotent": <bool, optional> }
– Errors: HTTP 401/403 for auth, 500 for insert/update failures. With WP_DEBUG enabled, logs include a precise reason (e.g., missing_provided_token, token_mismatch, missing_signature).
– The Auth Debug panel (WP Admin Rankfender Settings) shows recent attempts with headers seen, User-Agent, and the X-Request-Timestamp value.
Examples
Without HMAC (Require HMAC setting OFF):
`
TOKEN=”
curl -i -X POST ‘https:///wp-json/rankfender/v1/publish’
-H ‘Content-Type: application/json’
-H “X-API-Key: $TOKEN”
–data ‘{“title”:”RF curl test”,”content”:”hello”,”status”:”draft”}’
Alternatively
curl -i -X POST ‘https:///wp-json/rankfender/v1/publish’
-H ‘Content-Type: application/json’
-H “Authorization: Bearer $TOKEN”
–data ‘{“title”:”RF curl test”,”content”:”hello”,”status”:”draft”}’
`
With HMAC (Require HMAC setting ON):
`
TOKEN=”
BODY='{“title”:”RF HMAC”,”content”:”hello”,”status”:”draft”}’
TS=$(date +%s)
SIG=$(printf “%s.%s” “$TS” “$BODY” | openssl dgst -sha256 -mac HMAC -macopt key:”$TOKEN” -binary | base64)
curl -i -X POST ‘https:///wp-json/rankfender/v1/publish’
-H ‘Content-Type: application/json’
-H “X-API-Key: $TOKEN”
-H “X-RF-Timestamp: $TS”
-H “X-RF-Signature: $SIG”
–data “$BODY”
`
Troubleshooting 401/403
– Verify tokens match exactly (case-sensitive): WP option rankfender_api_token vs. Rankfender blog_integrations.api_token.
– If Require HMAC is ON, confirm X-RF-* headers and signature are present and valid.
– If rankfender_allowed_ips is set, make sure the caller IP (or the first in X-Forwarded-For) is permitted.
– With WP_DEBUG enabled, look for Rankfender REST auth: entries in logs for the specific failure reason.
Screenshots
No screenshots provided

