@gorgo/medusa-feed-yandex
Version:
A Medusa plugin that generates a product feed in YML (Yandex Market Language) format
190 lines (153 loc) • 6.86 kB
Markdown
<p align="center">
<a href="https://www.medusajs.com">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
<source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
<img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
</picture>
</a>
</p>
<h1 align="center">
Yandex Market YML Feed Generator for Medusa
</h1>
<p align="center">
A Medusa plugin that generates a product feed in <a href="https://yandex.com/support/direct/feeds/requirements-yml.html">YML (Yandex Market Language)</a> format.
</p>
<p align="center">
<a href="https://t.me/medusajs_com">
<img src="https://img.shields.io/badge/Telegram-Join_Medusa_Community_Chat-0088cc?logo=telegram&style=social" alt="Join on Telegram" />
</a>
</p>
<p align="center">
<a href="https://medusajs.com">
<img src="https://img.shields.io/badge/Medusa-^2.8.3-blue?logo=medusa" alt="Medusa" />
</a>
</p>
## 💬 Support & Community on Telegram
Join the [Medusa Telegram community chat](https://t.me/medusajs_com) to discuss features, get support, and connect with developers building on Medusa.
## Prerequisites
- Medusa server v2.8.3 or later
- Node.js v20 or later
## Installation
```bash
yarn add @gorgo/medusa-feed-yandex
# or
npm install @gorgo/medusa-feed-yandex
```
## Configuration
Add the provider configuration in your `medusa-config.js` file of the Medusa admin application:
```ts
# ...
module.exports = defineConfig({
# ...
modules: [
{
resolve: "@gorgo/medusa-feed-yandex/modules/feed",
},
{
resolve: "@medusajs/medusa/file",
options: {
providers: [
{
resolve: "@medusajs/medusa/file-local",
id: "local",
options: {
upload_dir: "static",
backend_url: "http://localhost:9000/static"
},
},
],
},
},
],
plugins: [
{
resolve: "@gorgo/medusa-feed-yandex",
options: {}
}
],
})
```
> The plugin is currently tested with Medusa’s local file module (`file-local`) and saves the generated XML feeds to the local static directory.
## Usage
Open the Medusa Admin dashboard and navigate to **Settings** -> **Feeds** section in the Extensions — this is where the plugin interface is available.

The page displays all existing feeds with their key information.
Feed URLs follow this format, allowing direct access to the generated XML files (in YML format):
```
http://{YOUR_MEDUSA_DOMAIN}/feeds/{ID}/{FILE_NAME}.xml
```
Selecting a feed opens a detailed view where you can edit metadata, adjust export schedules, choose product categories, and access the feed URL. A **Launch now** button lets you manually trigger feed generation.

The feed shown in the screenshot above exports all product from all categories every 30 minutes to a file named `example1.xml`. It sets `Example shop name`, `Example company name`, `https://www.example.com/`, and `Medusa` as values for the corresponding XML properties. It is accessible via the link `http://localhost:9000/feeds/01JWTC5VDW8EAGHWRDQG2GKAQJ/example1.xml`, while the actual file is stored in gzip-compressed format at `http://localhost:9000/static/1748937061705-example1.xml.gz`.
Below is an example of a generated YML-file:
```xml
<yml_catalog date="2025-06-03 16:31">
<shop>
<name>Example shop name</name>
<company>Example company name</company>
<url>https://www.example.com/</url>
<platform>Medusa</platform>
<categories>
<category id="pcat_01JWBFYPTZNKZT0BRWECQF84J9" value="Shirts"/>
<category id="pcat_01JWBFYPV0KQV6VY4HKW4W6JTN" value="Sweatshirts"/>
<category id="pcat_01JWBFYPV16CG0MN8TF1EM4T4N" value="Pants"/>
<category id="pcat_01JWBFYPV1CTZAK4JBKV0R2JZW" value="Merch"/>
</categories>
<offers>
<offer id="prod_01JWBFYPVZ21W4XQRSPAVW3QBN">
<name>Medusa T-Shirt</name>
<categoryId>pcat_01JWBFYPTZNKZT0BRWECQF84J9</categoryId>
<picture>https://medusa-public-images.s3.eu-west-1.amazonaws.com/tee-black-front.png</picture>
<description>
<![CDATA[Reimagine the feeling of a classic T-shirt. With our cotton T-shirts, everyday essentials no longer have to be ordinary.]]>
</description>
<weight>400</weight>
</offer>
<offer id="prod_01JWBFYPVZFHDPM6RF1DFAX4RZ">
<name>Medusa Sweatshirt</name>
<categoryId>pcat_01JWBFYPV0KQV6VY4HKW4W6JTN</categoryId>
<picture>https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatshirt-vintage-front.png</picture>
<description>
<![CDATA[Reimagine the feeling of a classic sweatshirt. With our cotton sweatshirt, everyday essentials no longer have to be ordinary.]]>
</description>
<weight>400</weight>
</offer>
<offer id="prod_01JWBFYPVZJQH2KABER77PSEMG">
<name>Medusa Sweatpants</name>
<categoryId>pcat_01JWBFYPV16CG0MN8TF1EM4T4N</categoryId>
<picture>https://medusa-public-images.s3.eu-west-1.amazonaws.com/sweatpants-gray-front.png</picture>
<description>
<![CDATA[Reimagine the feeling of classic sweatpants. With our cotton sweatpants, everyday essentials no longer have to be ordinary.]]>
</description>
<weight>400</weight>
</offer>
<offer id="prod_01JWBFYPVZ2E5D5CSB0F53XX3W">
<name>Medusa Shorts</name>
<categoryId>pcat_01JWBFYPV1CTZAK4JBKV0R2JZW</categoryId>
<picture>https://medusa-public-images.s3.eu-west-1.amazonaws.com/shorts-vintage-front.png</picture>
<description>
<![CDATA[Reimagine the feeling of classic shorts. With our cotton shorts, everyday essentials no longer have to be ordinary.]]>
</description>
<weight>400</weight>
</offer>
</offers>
</shop>
</yml_catalog>
```
## Testing
You can run two types of tests for this plugin:
### Module Tests
These verify the internal logic, such as services and models.
```bash
yarn test:integration:modules
```
### Integration Tests
Integration tests include tests for API Routes and Workflows
```bash
yarn test:integration:http
```
Before running the tests, make sure your `.env.test` file includes the following variables: `DB_USERNAME`, `DB_PASSWORD`, `DB_HOST`, `DB_TEMP_NAME`.
## License
Licensed under the [MIT License](LICENSE).