PHPackages                             requestdesk/magento-blog - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. requestdesk/magento-blog

ActiveMagento2-module[API Development](/categories/api)

requestdesk/magento-blog
========================

RequestDesk Blog Extension - Native blog functionality with RequestDesk API integration for Magento 2

1.1.0(4mo ago)23OSL-3.0PHPPHP ^8.1

Since Dec 29Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/brentwpeterson/requestdesk-magento-blog)[ Packagist](https://packagist.org/packages/requestdesk/magento-blog)[ RSS](/packages/requestdesk-magento-blog/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (3)Used By (0)

RequestDesk Blog Extension for Magento 2
========================================

[](#requestdesk-blog-extension-for-magento-2)

[![Magento 2.4.7+](https://camo.githubusercontent.com/87dafb50be47dc37937d367db6b7db55577a08ade4be496b3af7abdd0b22ea30/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6167656e746f2d322e342e372b2d6f72616e67652e737667)](https://magento.com)[![PHP 8.1+](https://camo.githubusercontent.com/45d36955804bf3f4f17097b05a7f41a28e578dc24e0d3ad0d21ae9d9762f44c6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312b2d626c75652e737667)](https://php.net)[![License: OSL-3.0](https://camo.githubusercontent.com/d470a549d2f8a69b81698d6f6851009b9a5248fb6862af014903b7a210e02595/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4f534c2d2d332e302d677265656e2e737667)](https://opensource.org/licenses/OSL-3.0)

A native blog extension for Magento 2 with full [RequestDesk](https://requestdesk.ai) integration. Create AI-powered blog content in RequestDesk and automatically sync it to your Magento store, or sync your product catalog to RequestDesk for AI-assisted content creation.

**[Get Started with RequestDesk for Magento →](https://requestdesk.ai/magento)**

Why This Extension?
-------------------

[](#why-this-extension)

Unlike Shopify or WordPress, **Magento has no built-in blog functionality**. This extension provides:

- **Complete Blog System** - Posts, categories, SEO metadata, and frontend templates
- **Product-to-Post Linking** - A critical Magento feature for e-commerce SEO
- **Bidirectional Sync** - Push products to RequestDesk, pull blog posts back
- **AI Content Integration** - Leverage RequestDesk's AI to generate product-focused blog content
- **Multi-Store Support** - Full store scoping for Magento multi-store setups

Features
--------

[](#features)

### Blog Management

[](#blog-management)

- Full CRUD for blog posts via admin panel
- Category management with hierarchical support
- SEO fields: meta title, meta description, URL keys
- Featured images and media support
- Draft/Published status workflow
- Store-scoped content

### RequestDesk Integration

[](#requestdesk-integration)

- **Product Export**: Sync your Magento product catalog to RequestDesk's knowledge base
- **Post Import**: Pull AI-generated blog posts from RequestDesk
- **Sync Status Tracking**: Monitor which posts are synced, pending, or failed
- **Automated Import**: Hourly cron job for automatic post imports
- **API Key Authentication**: Secure communication via `X-RequestDesk-Key` header

### Product Linking

[](#product-linking)

- Link blog posts to related products
- Display related posts on product pages
- Show related products within blog posts
- Semantic search via RequestDesk RAG for smart product-post matching

### REST API

[](#rest-api)

Complete API for headless/PWA implementations and RequestDesk communication.

### Frontend Templates

[](#frontend-templates)

- Responsive blog listing page
- Individual post view
- Category filtering
- **Hyvä Theme Support**: Optimized templates for Hyvä-based stores

Requirements
------------

[](#requirements)

- Magento Open Source or Adobe Commerce 2.4.7+
- PHP 8.1 or later
- RequestDesk account with API key

Installation
------------

[](#installation)

### Via Composer (Recommended)

[](#via-composer-recommended)

```
composer require requestdesk/magento-blog
bin/magento module:enable RequestDesk_Blog
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:clean
```

### Manual Installation

[](#manual-installation)

1. Create the directory structure:

```
mkdir -p app/code/RequestDesk/Blog
```

2. Copy the module files to `app/code/RequestDesk/Blog/`
3. Enable and install:

```
bin/magento module:enable RequestDesk_Blog
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:clean
```

### Verify Installation

[](#verify-installation)

```
bin/magento module:status RequestDesk_Blog
# Should output: Module is enabled
```

Configuration
-------------

[](#configuration)

Navigate to **Stores &gt; Configuration &gt; RequestDesk &gt; Blog**

### General Settings

[](#general-settings)

SettingDescriptionEnable BlogEnable/disable blog functionality on frontendBlog TitleTitle displayed on blog listing pagePosts Per PageNumber of posts per page (default: 10)### RequestDesk API Configuration

[](#requestdesk-api-configuration)

SettingDescriptionAPI KeyYour RequestDesk API key (encrypted in database)RequestDesk API EndpointAPI URL (default: `https://app.requestdesk.ai`)Test ConnectionButton to verify API connectivity### Automated Import

[](#automated-import)

SettingDescriptionEnable Automatic ImportImport published posts from RequestDesk every hour### SEO Settings

[](#seo-settings)

SettingDescriptionBlog URL PrefixURL prefix for blog pages (default: `blog`)Default Meta TitleDefault meta title for blog listingDefault Meta DescriptionDefault meta description for blog listingAdmin Panel
-----------

[](#admin-panel)

### Content &gt; RequestDesk Blog &gt; Posts

[](#content--requestdesk-blog--posts)

Manage all blog posts with:

- Grid view with filtering and sorting
- Edit/View/Delete actions
- Sync status indicators
- RequestDesk Post ID tracking

### Content &gt; RequestDesk Blog &gt; Import Posts

[](#content--requestdesk-blog--import-posts)

Manual import interface:

- Test API connection
- Import posts by status (published/draft)
- View import results

### Content &gt; RequestDesk Blog &gt; Sync Products

[](#content--requestdesk-blog--sync-products)

Export products to RequestDesk:

- Test API connection
- Sync all products or limited batches
- View sync statistics

REST API Endpoints
------------------

[](#rest-api-endpoints)

### Blog Post Management (JWT Auth)

[](#blog-post-management-jwt-auth)

MethodEndpointDescription`POST``/V1/requestdesk/blog/posts`Create or update post`GET``/V1/requestdesk/blog/posts`List all posts`GET``/V1/requestdesk/blog/posts/:postId`Get single post`DELETE``/V1/requestdesk/blog/posts/:postId`Delete post`PUT``/V1/requestdesk/blog/posts/:postId/sync-status`Update sync status### Product Linking (JWT Auth)

[](#product-linking-jwt-auth)

MethodEndpointDescription`POST``/V1/requestdesk/blog/posts/:postId/products`Link products to post`GET``/V1/requestdesk/blog/posts/:postId/products`Get linked products`GET``/V1/requestdesk/blog/products/:productId/posts`Get posts for product### Data Export (API Key Auth via `X-RequestDesk-Key`)

[](#data-export-api-key-auth-via-x-requestdesk-key)

MethodEndpointDescription`GET``/V1/requestdesk/export/test`Test connection`GET``/V1/requestdesk/export/products`Export products`GET``/V1/requestdesk/export/categories`Export categories`GET``/V1/requestdesk/export/cms-pages`Export CMS pages### External Blog API (API Key Auth via `X-RequestDesk-Key`)

[](#external-blog-api-api-key-auth-via-x-requestdesk-key)

These endpoints allow RequestDesk to push content to Magento:

MethodEndpointDescription`GET``/V1/requestdesk/external/blog/test`Test connection`POST``/V1/requestdesk/external/blog/posts`Create blog post`GET``/V1/requestdesk/external/blog/posts`List blog posts`GET``/V1/requestdesk/external/blog/posts/:postId`Get single post`PUT``/V1/requestdesk/external/blog/posts/:postId`Update post`DELETE``/V1/requestdesk/external/blog/posts/:postId`Delete postDatabase Schema
---------------

[](#database-schema)

### `requestdesk_blog_post`

[](#requestdesk_blog_post)

Main blog posts table with RequestDesk sync tracking.

ColumnTypeDescription`post_id`intPrimary key`title`varchar(255)Post title`content`mediumtextPost content (HTML)`url_key`varchar(255)SEO-friendly URL slug`meta_title`varchar(255)SEO meta title`meta_description`textSEO meta description`featured_image`varchar(255)Featured image path`status`smallint0=Draft, 1=Published`author`varchar(255)Author name`store_id`intMagento store ID`requestdesk_post_id`varchar(50)RequestDesk post ID`requestdesk_sync_status`varchar(20)synced/pending/failed`requestdesk_last_sync`timestampLast sync timestamp`created_at`timestampCreation date`updated_at`timestampLast update date### `requestdesk_blog_category`

[](#requestdesk_blog_category)

Blog categories with store scoping.

ColumnTypeDescription`category_id`intPrimary key`name`varchar(255)Category name`url_key`varchar(255)SEO-friendly URL slug`description`textCategory description`status`smallint0=Disabled, 1=Enabled`sort_order`intDisplay order`store_id`intMagento store ID### `requestdesk_blog_post_category`

[](#requestdesk_blog_post_category)

Many-to-many relationship between posts and categories.

### `requestdesk_blog_product`

[](#requestdesk_blog_product)

Product-to-post linking (critical for Magento e-commerce SEO).

ColumnTypeDescription`id`intPrimary key`post_id`intBlog post ID`product_id`intMagento product entity ID`position`intDisplay positionCron Jobs
---------

[](#cron-jobs)

JobScheduleDescription`requestdesk_blog_import_posts`Every hour (`0 * * * *`)Imports published posts from RequestDeskEnable/disable via **Stores &gt; Configuration &gt; RequestDesk &gt; Blog &gt; Automated Import**.

Frontend URLs
-------------

[](#frontend-urls)

RouteDescription`/blog`Blog listing page`/blog/post/view/id/:postId`Single post view`/blog/category/:urlKey`Category listingACL Permissions
---------------

[](#acl-permissions)

ResourceDescription`RequestDesk_Blog::blog`Access RequestDesk Blog section`RequestDesk_Blog::view`View blog posts`RequestDesk_Blog::manage`Create/edit/delete blog posts`RequestDesk_Blog::sync`Sync products to RequestDesk`RequestDesk_Blog::import`Import posts from RequestDesk`RequestDesk_Blog::config`Access configurationHow It Works
------------

[](#how-it-works)

### Product Sync Flow (Magento → RequestDesk)

[](#product-sync-flow-magento--requestdesk)

```
1. Admin clicks "Sync Products" in Magento
2. Extension collects visible products with:
   - Name, SKU, price, description
   - Categories, images, attributes
3. Products sent to RequestDesk API
4. RequestDesk stores in knowledge base
5. AI can now generate content about your products

```

### Post Import Flow (RequestDesk → Magento)

[](#post-import-flow-requestdesk--magento)

```
1. Create blog post in RequestDesk (manually or AI-generated)
2. Set post status to "Published"
3. Hourly cron job runs OR admin clicks "Import Posts"
4. Extension fetches posts via RequestDesk API
5. Posts created/updated in Magento
6. Sync status reported back to RequestDesk

```

### API Key Authentication

[](#api-key-authentication)

External API endpoints use header-based authentication:

```
curl -X GET "https://your-store.com/rest/V1/requestdesk/export/products" \
  -H "X-RequestDesk-Key: your-api-key"
```

Hyvä Theme Support
------------------

[](#hyvä-theme-support)

The extension includes optimized templates for [Hyvä Theme](https://hyva.io/):

- `view/frontend/templates/hyva/list.phtml` - Blog listing
- `view/frontend/templates/hyva/post/view.phtml` - Post detail
- `view/frontend/layout/hyva_blog_*.xml` - Layout handles

These templates use Alpine.js and Tailwind CSS patterns consistent with Hyvä.

Troubleshooting
---------------

[](#troubleshooting)

### "Invalid security or form key" Error

[](#invalid-security-or-form-key-error)

Admin URLs require form keys. Always navigate via the admin menu: **Content &gt; RequestDesk Blog &gt; Posts**

### API Connection Failed

[](#api-connection-failed)

1. Verify API key in configuration
2. Check endpoint URL (default: `https://app.requestdesk.ai`)
3. Use "Test Connection" button to diagnose
4. Check `var/log/system.log` for detailed errors

### Posts Not Importing

[](#posts-not-importing)

1. Ensure cron is running: `bin/magento cron:run`
2. Check "Enable Automatic Import" is set to Yes
3. Verify posts are "Published" status in RequestDesk
4. Check `var/log/system.log` for import errors

### Products Not Syncing

[](#products-not-syncing)

1. Verify products are enabled and visible
2. Check API key permissions in RequestDesk
3. Review `var/log/system.log` for sync errors

Development
-----------

[](#development)

### Running Tests

[](#running-tests)

```
# Unit tests
vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist \
  app/code/RequestDesk/Blog/Test/Unit

# Integration tests
vendor/bin/phpunit -c dev/tests/integration/phpunit.xml.dist \
  app/code/RequestDesk/Blog/Test/Integration
```

### Code Quality

[](#code-quality)

This extension follows Magento coding standards:

- PSR-4 autoloading
- Proper dependency injection (no ObjectManager anti-pattern)
- Service contracts via interfaces
- Declarative schema

Support
-------

[](#support)

- **Magento Integration Guide**: [requestdesk.ai/magento](https://requestdesk.ai/magento)
- **Documentation**: [docs.requestdesk.ai](https://docs.requestdesk.ai)
- **Issues**: [GitHub Issues](https://github.com/brentwpeterson/requestdesk-magento/issues)
- **Email**:

License
-------

[](#license)

This extension is licensed under the [Open Software License 3.0 (OSL-3.0)](https://opensource.org/licenses/OSL-3.0).

Copyright (c) 2025 Content Basis LLC

Roadmap
-------

[](#roadmap)

### WYSIWYG Editor (Planned)

[](#wysiwyg-editor-planned)

Full rich-text editing for blog posts directly in the Magento admin.

- TinyMCE integration (Magento native)
- Image upload and media gallery integration
- Product widget insertion
- HTML source editing
- Responsive preview

---

### Brand Analyzer &amp; Content Scoring (Planned)

[](#brand-analyzer--content-scoring-planned)

A comprehensive brand consistency and content quality analyzer for your entire Magento store.

**Content Types Analyzed:**

- CMS Pages
- Category Descriptions
- Product Descriptions
- Blog Posts

**Scoring Dimensions:**

DimensionDescriptionBrand VoiceConsistency with defined brand tone and messagingSEO QualityMeta tags, keyword usage, heading structureReadabilityReading level, sentence complexity, clarityCompletenessRequired fields, content length, media presenceUniquenessDuplicate content detection across pages**Features:**

- Dashboard with store-wide content health score
- Individual page scores with improvement suggestions
- Brand voice guidelines integration from RequestDesk personas
- Bulk analysis via cron for large catalogs
- Score history tracking over time
- Export reports for stakeholders

**Integration with RequestDesk:**

- Pull brand guidelines from your RequestDesk persona
- AI-powered suggestions for content improvements
- One-click content regeneration for low-scoring pages

---

### AEO Score - AI Search Optimization (Planned)

[](#aeo-score---ai-search-optimization-planned)

Optimize your content to be found and cited by AI assistants (ChatGPT, Claude, Perplexity, Google AI Overviews).

**What is AEO?**Answer Engine Optimization (AEO) is the practice of structuring content so AI systems can easily understand, extract, and cite it in responses. As more users search via AI, traditional SEO alone isn't enough.

**AEO Scoring Dimensions:**

DimensionDescriptionQuestion TargetingContent answers specific questions users ask AIStructured DataSchema.org markup for AI comprehensionConcise AnswersClear, quotable statements AI can extractAuthority SignalsE-E-A-T factors that make AI trust your contentSource AttributionProper citations and referencesContent FreshnessRecent updates that AI systems prefer**Features:**

- Per-page AEO score with specific recommendations
- Question extraction: "What questions does this page answer?"
- AI citation checker: See if your content appears in AI responses
- Structured data generator for products and articles
- Competitor AEO comparison
- "AI-ready" content templates

**Why This Matters:**

- 40% of Gen Z prefers TikTok/AI over Google for search
- AI Overviews now appear in 30%+ of Google searches
- Content not optimized for AI will become invisible

Changelog
---------

[](#changelog)

### 1.1.0 (2025-12-29)

[](#110-2025-12-29)

- **Package renamed** from `requestdesk/module-blog` to `requestdesk/magento-blog`
- Establishes multi-platform naming convention (`magento-*`, `wordpress-*`, etc.)

### 1.0.0 (2025-12-29)

[](#100-2025-12-29)

- Initial release
- Full blog system with posts and categories
- Product-to-post linking
- RequestDesk API integration
- Product export to RequestDesk knowledge base
- Post import from RequestDesk
- Automated hourly imports via cron
- REST API for headless implementations
- Hyvä theme support
- Multi-store support

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance74

Regular maintenance activity

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

140d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/297909aaba2831e0463fb0b2b4d860fe1442c085b7b277652374885fb8704741?d=identicon)[brentwpeterson](/maintainers/brentwpeterson)

---

Top Contributors

[![brentwpeterson](https://avatars.githubusercontent.com/u/611893?v=4)](https://github.com/brentwpeterson "brentwpeterson (6 commits)")

### Embed Badge

![Health badge](/badges/requestdesk-magento-blog/health.svg)

```
[![Health](https://phpackages.com/badges/requestdesk-magento-blog/health.svg)](https://phpackages.com/packages/requestdesk-magento-blog)
```

###  Alternatives

[smile/elasticsuite

Magento 2 merchandising and search engine built on ElasticSearch

8044.5M33](/packages/smile-elasticsuite)[mollie/magento2

Mollie Payment Module for Magento 2

1121.6M10](/packages/mollie-magento2)[swissup/module-search-mysql-legacy

Legacy mysql search for magento 2.4

10483.0k](/packages/swissup-module-search-mysql-legacy)[magento/module-upward-connector

Magento module used for routing all frontend requests through UPWARD-PHP.

24410.3k1](/packages/magento-module-upward-connector)[dotdigital/dotdigital-magento2-extension

Dotdigital for Magento 2

50374.2k18](/packages/dotdigital-dotdigital-magento2-extension)[xcoreplatform/xcore-magento2

This module extends the rest api of Magento2 and is needed for the usage of the xCore.

1330.0k2](/packages/xcoreplatform-xcore-magento2)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
