בעת העלאת מוצרים ל-Ozon, Wildberries, Avito, כל פורמט ומבנה של פיד שוק שונים. שגיאה בכותרת או בקידוד — והפיד נדחה. מחולל הפידים שלנו תומך בפורמטים CSV ו-XML גם יחד. מחולל הפידים האוניברסלי שלנו מתאים את עצמו אוטומטית לדרישות פיד Ozon, פיד Wildberries ו-XML של Avito. עם למעלה מ-50 פרויקטים מוצלחים עבור חנויות מקוונות עם קטלוגים הנעים בין 500 ל-500,000 פריטים, יש לנו ניסיון של 5+ שנים במסחר אלקטרוני. האוטומציה חוסכת עד 90% מהזמן המושקע בהכנה ידנית — במקום 4 שעות ביום, אתם משקיעים 10 דקות בפיקוח. הלקוחות שלנו חוסכים בממוצע 1,200 דולר בחודש לאחר האוטומציה.
חשוב להבין: פידים הם לא רק ייצוא מוצרים. הם כוללים עבודה מתואמת עם APIs של שווקים, טיפול במגבלות (עד 1000 פריטים לבקשה, הגבלות תדירות), ועיבוד תמונות נכון. פיד שגוי עלול להוביל לביטול כרטיס או לקנסות מהפלטפורמה. לדוגמה, ב-Ozon גודל הקובץ המקסימלי הוא 128 MB — חריגה ממנו גורמת לשגיאה. ב-Wildberries — עד 100,000 מוצרים לפיד. המחולל שלנו מייצר פידים פי 10 מהר יותר מיצירת CSV ידנית ומאמת 100% מהשורות.
אנחנו בונים את המערכת על גישות מוכחות: תבנית Strategy, יצירה אסינכרונית דרך תורים, ואימות אוטומטי. כל פיד נבדק בסביבת staging לפני המעבר לייצור. זה מבטיח ששגיאות נתפסות לפני שהן מגיעות לשוק.
פורמטי פיד אופייניים לשווקים
| שוק | פורמט | שיטת העברה |
|---|---|---|
| Ozon | Excel / CSV / API | Seller API v3 |
| Wildberries | Excel / API | Supplier API |
| Avito | XML (avito-format) | כתובת פיד |
| AliExpress | CSV | Seller Center |
| Amazon | CSV (Flat File) | Seller Central / MWS |
| Rozetka | YML / XML | כתובת פיד |
| Lamoda | CSV | SFTP |
| Leroy Merlin | XML | SFTP / API |
המחולל שלנו תומך בכל 8 השווקים הללו כולל פיד Ozon, פיד Wildberries, Avito XML ועוד.
הגדרת מחולל הפידים האוניברסלי
הארכיטקטורה מבוססת על תבנית Strategy: מחולל ליבה אחד, מחלקות מתאם נפרדות לכל שוק. זה מאפשר הוספה קלה של פלטפורמות חדשות ללא שינוי בקוד הליבה.
interface MarketplaceFeedAdapter { public function getHeaders(): array; public function transform(Product $product): array; public function getFormat(): string; // 'csv' | 'xml' | 'xlsx' public function getDelimiter(): string; } class OzonFeedAdapter implements MarketplaceFeedAdapter { public function getHeaders(): array { return [ 'Артикул', 'Название товара', 'Описание', 'Цена', 'Старая цена', 'НДС', 'Количество', 'Вес, г', 'Ширина, мм', 'Высота, мм', 'Глубина, мм', 'Изображения', 'Категория', 'Бренд', 'Штрихкод', ]; } public function transform(Product $product): array { return [ $product->sku, $product->name, strip_tags($product->description), $product->price, $product->compare_price ?? '', '20', // НДС 20% $product->stock, $product->weight_grams ?? '', $product->width_mm ?? '', $product->height_mm ?? '', $product->depth_mm ?? '', $product->images->pluck('cdn_url')->implode('; '), $product->category?->ozon_category ?? '', $product->brand?->name ?? '', $product->barcode ?? '', ]; } public function getFormat(): string { return 'csv'; } public function getDelimiter(): string { return ';'; } } class AvitoCatalogAdapter implements MarketplaceFeedAdapter { // Avito требует XML со специфичной структурой public function getFormat(): string { return 'xml'; } public function getDelimiter(): string { return ''; } // ... } class UniversalFeedGenerator { public function generate(MarketplaceFeedAdapter $adapter, string $outputPath): void { if ($adapter->getFormat() === 'csv') { $this->generateCsv($adapter, $outputPath); } elseif ($adapter->getFormat() === 'xml') { $this->generateXml($adapter, $outputPath); } } private function generateCsv(MarketplaceFeedAdapter $adapter, string $path): void { $fp = fopen($path, 'w'); // UTF-8 BOM для корректного открытия в Excel fwrite($fp, "\xEF\xBB\xBF"); fputcsv($fp, $adapter->getHeaders(), $adapter->getDelimiter()); Product::with(['images', 'brand', 'category']) ->where('is_active', true) ->chunk(500, function ($products) use ($fp, $adapter) { foreach ($products as $product) { fputcsv($fp, $adapter->transform($product), $adapter->getDelimiter()); } }); fclose($fp); } } פיד Avito XML
Avito דורש פורמט XML ספציפי עם אלמנטים interface MarketplaceFeedAdapter { public function getHeaders(): array; public function transform(Product $product): array; public function getFormat(): string; // 'csv' | 'xml' | 'xlsx' public function getDelimiter(): string; } class OzonFeedAdapter implements MarketplaceFeedAdapter { public function getHeaders(): array { return [ 'Артикул', 'Название товара', 'Описание', 'Цена', 'Старая цена', 'НДС', 'Количество', 'Вес, г', 'Ширина, мм', 'Высота, мм', 'Глубина, мм', 'Изображения', 'Категория', 'Бренд', 'Штрихкод', ]; } public function transform(Product $product): array { return [ $product->sku, $product->name, strip_tags($product->description), $product->price, $product->compare_price ?? '', '20', // НДС 20% $product->stock, $product->weight_grams ?? '', $product->width_mm ?? '', $product->height_mm ?? '', $product->depth_mm ?? '', $product->images->pluck('cdn_url')->implode('; '), $product->category?->ozon_category ?? '', $product->brand?->name ?? '', $product->barcode ?? '', ]; } public function getFormat(): string { return 'csv'; } public function getDelimiter(): string { return ';'; } } class AvitoCatalogAdapter implements MarketplaceFeedAdapter { // Avito требует XML со специфичной структурой public function getFormat(): string { return 'xml'; } public function getDelimiter(): string { return ''; } // ... } :
<?xml version="1.0" encoding="UTF-8"?> <Ads formatVersion="3" target="Avito.ru"> <Ad> <Id>SKU-12345</Id> <AllowEmail>No</AllowEmail> <Title>Кроссовки Nike Air Max 270</Title> <Description>Описание товара...</Description> <Category>Одежда, обувь, аксессуары</Category> <GoodsType>Кроссовки</GoodsType> <Condition>Новое</Condition> <Price>4990</Price> <Images> <Image url="https://cdn.example.com/product1.jpg"/> <Image url="https://cdn.example.com/product2.jpg"/> </Images> <ContactPhone>+79001234567</ContactPhone> </Ad> </Ads> למה אימות פיד חשוב?
ללא אימות, אתם מסתכנים בשליחת נתונים פגומים לשוק — SKUs ריקים, מחירים שליליים או כתובות תמונה שגויות. זה מוביל לדחיית הפיד כולו ובזבוז זמן. המאמת שלנו בודק כל שורה לפני הכתיבה:
class FeedValidator { public function validate(array $row, MarketplaceFeedAdapter $adapter): array { $errors = []; if (empty($row[0])) { $errors[] = 'Пустой артикул'; } if (empty($row[1]) || mb_strlen($row[1]) > 255) { $errors[] = 'Некорректное название'; } if (!is_numeric($row[3]) || $row[3] <= 0) { $errors[] = 'Некорректная цена'; } return $errors; } } אנחנו גם בודקים את כמות המוצרים (אסור שתהיה 0), מיפוי קטגוריות ושדות חובה עבור שוק ספציפי. לפי תיעוד Ozon Seller API v3, שדות החובה הם: SKU, מחיר, מלאי.
שיטות אספקת פיד
| שיטה | תיאור | מהירות |
|---|---|---|
| קישור ישיר | הקובץ מאוחסן ב-class UniversalFeedGenerator { public function generate(MarketplaceFeedAdapter $adapter, string $outputPath): void { if ($adapter->getFormat() === 'csv') { $this->generateCsv($adapter, $outputPath); } elseif ($adapter->getFormat() === 'xml') { $this->generateXml($adapter, $outputPath); } } private function generateCsv(MarketplaceFeedAdapter $adapter, string $path): void { $fp = fopen($path, 'w'); // UTF-8 BOM для корректного открытия в Excel fwrite($fp, "\xEF\xBB\xBF"); fputcsv($fp, $adapter->getHeaders(), $adapter->getDelimiter()); Product::with(['images', 'brand', 'category']) ->where('is_active', true) ->chunk(500, function ($products) use ($fp, $adapter) { foreach ($products as $product) { fputcsv($fp, $adapter->transform($product), $adapter->getDelimiter()); } }); fclose($fp); } } , נגיש דרך כתובת URL |
מיידי |
| SFTP | שליחה לשרת המרוחק של השוק | עד דקה |
| API | העלאה ישירה דרך REST API של הפלטפורמה | 5-30 שניות |
| דוא"ל | הודעה עם קישור או קובץ מצורף | 1-2 דקות |
אנחנו מתזמנים יצירה באמצעות Laravel Scheduler ושולחים הודעות שגיאה ל-Telegram או לדוא"ל.
תהליך העבודה
- ניתוח הקטלוג שלכם ודרישות השוק.
- עיצוב מבנה הפיד ובחירת מתאמים.
- פיתוח המחולל עם אופטימיזציית שאילתות N+1 ואופטימיזציית זיכרון (עיבוד במנות).
- בדיקה בסביבת staging ואימות כל השדות.
- פריסה לייצור והגדרת תזמון.
- מסירת תיעוד והדרכת הצוות שלכם.
לוח זמנים ועלות
מחולל בסיסי עם מתאם אחד — בין 1 ל-2 ימי עבודה. החל מ-500 דולר למתאם. כל שוק נוסף — בין 0.5 ליום אחד ב-300 דולר למתאם. העלות מחושבת באופן אישי לפי מורכבות הקטלוג. צרו קשר לקבלת הערכה מדויקת. הלקוחות שלנו חוסכים בדרך כלל 1,200 דולר בחודש לאחר האוטומציה.
מה כלול בעבודה
- מחולל אוניברסלי עם מתאם אחד או יותר.
- הגדרת תזמון ושיטת אספקה.
- אימות נתונים לפני ייצוא.
- אינטגרציה עם ה-CMS או ה-ERP שלכם.
- תיעוד, הדרכה וייעוץ.
- גישה לכתובת הפיד ולפרטי התחברות לשוק.
- תמיכה לחודש אחד לאחר המסירה.
- אחריות לפעולה תקינה לחודש אחד לאחר המסירה.
שגיאות אופייניות ביצירת פידים
- אי-התאמת קידוד — Excel דורש UTF-8 BOM, אחרת קירילית מוצגת כג'יבריש.
- שדות חובה חסרים — לכל שוק יש סט שדות חובה משלו.
- חריגה ממגבלות — אורך שם, מספר תמונות, גודל קובץ כולל.
- קישורי תמונות שגויים — כתובות URL חייבות להיות נגישות לציבור.
- מחירים מיושנים — יש לעדכן פידים לפי לוח זמנים, אחרת מוצרים נדחים.
המהנדסים שלנו עם ניסיון של 5+ שנים במסחר אלקטרוני מבטיחים שהפיד עובר מידרציה בניסיון הראשון. למעלה מ-30 לקוחות מרוצים. המדדים של החברה שלנו: 5+ שנות ניסיון, 50+ פרויקטים, וחיסכון חודשי ממוצע של 1,200 דולר ללקוחות. קבלו ייעוץ לפרויקט שלכם עוד היום.







