הורדה וייבוא אוטומטיים של תמונות מוצר

העלאת תמונות ידנית מרשימת מחירים של ספק אורכת שעות ומעכבת השקת מוצרים חדשים. אנו הופכים את כל התהליך לאוטומטי: הורדה דרך קישורים, אופטימיזציה והעלאה לקטלוג. הצוות שלנו מספק פתרון מלא מהגדרת הייבוא ועד תמיכה שוטפת, כך שתקבלו תמונות מוכנות לפרסום ללא מאמץ ידני.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הורדה וייבוא אוטומטיים של תמונות מוצר
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1359
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

הורדה וייבוא אוטומטיים של תמונות מוצר

במהלך ייבוא מוצרים מרשימת מחירים של ספק, התמונות הן צוואר הבקבוק העיקרי. ללא אוטומציה, אתה מבזבז שעות על הורדה, אופטימיזציה והעלאה של כל תמונה. ואם הספק משנה קישורים או מוסיף פריטים חדשים, התהליך חוזר על עצמו. הצוות שלנו, עם 7 שנות ניסיון באוטומציה של ייבוא, עיבד למעלה מ-5 מיליון תמונות עבור עשרות חנויות מקוונות. אנו הופכים את התהליך הזה לאוטומטי: ניתוח קישורים מ-YML, CSV או API, הורדה עם ניסיונות חוזרים, אימות סוגי MIME, המרה ל-WebP ושמירה לאחסון. התוצאה היא חנות עם תמונות מוכנות לשימוש ללא עבודה ידנית. חיסכון בזמן מגיע ל-90% בייבוא ההמוני הראשון.

למה אוטומציה היא קריטית לחנות מקוונת

עם קטלוג של 1,000+ מוצרים, טיפול ידני בכל תמונה לוקח ימים. שגיאות מפעיל—גודל שגוי, קובץ שגוי, קישור שבור—מובילות לכרטיסי מוצר לא שלמים ולירידה בשיעורי ההמרה. הפתרון שלנו מבטיח ש-100% מהתמונות יורדו, יעברו אופטימיזציה ויצורפו למוצרים תוך דקות. לפי תיעוד Intervention Image, המרה ל-WebP מפחיתה את גודל הקבצים ב-30-50% ללא אובדן איכות נראה לעין.

איך להימנע מכפילויות במהלך הייבוא

הסרת כפילויות מיושמת בשני רבדים. לפני ההורדה, אנו בודקים את source_url בטבלת product_images. אם כתובת ה-URL כבר קיימת והקובץ נמצא על הדיסק, המשימה מדולגת. להגנה נוספת, אנו מחשבים גיבוב SHA-256 של 4 KB הראשונים של התוכן: קבצים זהים תחת כתובות URL שונות לא יורדים פעמיים. זה קריטי כשמתמודדים עם ספקים שעשויים לשלוח מחדש את אותו מוצר עם כתובות URL שונות.

איך אנחנו עושים את זה: תוכנית שלב אחר שלב

  1. ניתוח פורמט רשימת המחירים של הספק (CSV, YML, API, FTP).
  2. פיתוח מנתח קישורים המותאם למבנה הנתונים.
  3. הגדרת תור ImageDownloadJob עם ניסיונות חוזרים וזמני קצוב.
  4. יישום אימות סוג MIME ומגבלות גודל.
  5. ביצוע המרה ל-WebP עם יצירת מספר גדלים.
  6. הוספת הסרת כפילויות לפי URL וגיבוב תוכן.
  7. הגדרת ניטור קישורים שבורים ודיווח.
  8. ביצוע בדיקות עומס והדרכת מנהלים.

יישום טכני: הורדה, אימות ואופטימיזציה

מתחת למכסה המנוע, אנו משתמשים ב-Laravel Queue עם חיבור ייעודי לתמונות. המחלקה class ImageProcessor { private const ALLOWED_MIME = ['image/jpeg', 'image/png', 'image/webp', 'image/gif']; private const MAX_SIZE = 20 * 1024 * 1024; public function download(string $url): string { $response = $this->client->get($url, ['timeout' => 30, 'stream' => true]); $tmpPath = tempnam(sys_get_temp_dir(), 'img_'); $body = $response->getBody(); $size = 0; $fp = fopen($tmpPath, 'wb'); while (!$body->eof()) { $chunk = $body->read(8192); $size += strlen($chunk); if ($size > self::MAX_SIZE) { fclose($fp); unlink($tmpPath); throw new \RuntimeException("Image too large: {$url}"); } fwrite($fp, $chunk); } fclose($fp); $mime = mime_content_type($tmpPath); if (!in_array($mime, self::ALLOWED_MIME)) { unlink($tmpPath); throw new \RuntimeException("Invalid MIME type: {$mime} for {$url}"); } return $tmpPath; } public function processAndStore(string $tmpPath, int $productId, int $sort): string { $manager = new \Intervention\Image\ImageManager( new \Intervention\Image\Drivers\Gd\Driver() ); $image = $manager->read($tmpPath); $variants = ['full' => [1200, 1200], 'catalog' => [400,400], 'thumbnail' => [100,100]]; $paths = []; foreach ($variants as $name => [$w, $h]) { $resized = clone $image; $resized->coverDown($w, $h); $filename = "products/{$productId}/{$sort}_{$name}.webp"; $encoded = $resized->toWebp(quality: 85); Storage::disk('public')->put($filename, $encoded); $paths[$name] = $filename; } unlink($tmpPath); return json_encode($paths); } } מורידה את הקובץ דרך לקוח HTTP, בודקת את הגודל (מקסימום 20 MB) ואת סוג ה-MIME (JPEG, PNG, WebP, GIF). לאחר מכן, באמצעות Intervention Image (v3) ו-Spatie Image Optimizer, אנו משנים גודל וממירים ל-WebP בשלושה גדלים: מלא (1200x1200), קטלוג (400x400), תמונה ממוזערת (100x100).

class ImageProcessor {
    private const ALLOWED_MIME = ['image/jpeg', 'image/png', 'image/webp', 'image/gif'];
    private const MAX_SIZE = 20 * 1024 * 1024;

    public function download(string $url): string {
        $response = $this->client->get($url, ['timeout' => 30, 'stream' => true]);
        $tmpPath = tempnam(sys_get_temp_dir(), 'img_');
        $body = $response->getBody();
        $size = 0;
        $fp = fopen($tmpPath, 'wb');
        while (!$body->eof()) {
            $chunk = $body->read(8192);
            $size += strlen($chunk);
            if ($size > self::MAX_SIZE) {
                fclose($fp);
                unlink($tmpPath);
                throw new \RuntimeException("Image too large: {$url}");
            }
            fwrite($fp, $chunk);
        }
        fclose($fp);
        $mime = mime_content_type($tmpPath);
        if (!in_array($mime, self::ALLOWED_MIME)) {
            unlink($tmpPath);
            throw new \RuntimeException("Invalid MIME type: {$mime} for {$url}");
        }
        return $tmpPath;
    }

    public function processAndStore(string $tmpPath, int $productId, int $sort): string {
        $manager = new \Intervention\Image\ImageManager(
            new \Intervention\Image\Drivers\Gd\Driver()
        );
        $image = $manager->read($tmpPath);
        $variants = ['full' => [1200, 1200], 'catalog' => [400,400], 'thumbnail' => [100,100]];
        $paths = [];
        foreach ($variants as $name => [$w, $h]) {
            $resized = clone $image;
            $resized->coverDown($w, $h);
            $filename = "products/{$productId}/{$sort}_{$name}.webp";
            $encoded = $resized->toWebp(quality: 85);
            Storage::disk('public')->put($filename, $encoded);
            $paths[$name] = $filename;
        }
        unlink($tmpPath);
        return json_encode($paths);
    }
}

המתודה coverDown חותכת את התמונה מהמרכז תוך שמירה על פרופורציות—הסטנדרט לתמונות קטלוג. המרה ל-WebP מפחיתה את גודל הקבצים ב-30-50% ללא אובדן איכות.

טיפול בשגיאות וקישורים שבורים

במקרה של 404 או קישור שבור, המשימה מתבצעת שוב 3 פעמים עם מרווח של 30 שניות. אם כל הניסיונות נכשלים, הקישור מסומן כ-dead. פעם בשבוע, המנהל מקבל דוח עם הצעה להעלאה ידנית. תמונות שכבר נשמרו לא נמחקות, כך שכרטיסי המוצר הקיימים נשארים שלמים.

מקביליות וביצועים

פרמטר ערך
תור images (נפרד מ-default)
עובדים לכל תור 4–8
זמן קצוב למשימה 60 שניות
גודל מנת כתובות URL לכל Job 10
ניסיונות חוזרים 3

עם 10,000 תמונות ו-4 עובדים, המחזור המלא אורך 20–40 דקות (תלוי במהירות השרת של הספק). התור images אינו חוסם תהליכים אחרים.

השוואה: ייבוא ידני מול השירות שלנו

קריטריון ייבוא ידני השירות שלנו
זמן עבור 5000 תמונות 20-30 שעות 10-20 דקות
שגיאות (פספוסים, כפילויות) 5-10% <0.1%
פורמט פלט מקורי WebP ב-3 גדלים
פיקוח נדרש קבוע רק דוחות קישורים שבורים

האוטומציה מחזירה את ההשקעה לאחר הייבוא ההמוני הראשון. צור קשר—המהנדסים שלנו יעריכו את הפרויקט שלך ויציעו פתרון אופטימלי.

מה כלול בעבודה

  • ניתוח קישורים מ-CSV, YML, API, FTP.
  • פיתוח ImageDownloadJob עם ניסיונות חוזרים וזמני קצוב.
  • אימות MIME וגודל.
  • המרה ל-WebP עם גדלים הניתנים להגדרה.
  • הסרת כפילויות לפי URL וגיבוב.
  • ניטור קישורים שבורים ודיווח.
  • תיעוד תפעול.
  • הדרכת מנהלים.
  • תמיכה באחריות ל-3 חודשים.

לוחות זמנים ליישום

  • אינטגרציה בסיסית (HTTP, אימות, WebP, אחסון) — יומיים.
  • יצירת מספר גדלים + הסרת כפילויות — +1-2 ימים.
  • מקור FTP + תור מקבילי + לוח מחוונים להתקדמות — +יום אחד.

לוחות הזמנים המדויקים תלויים בפורמט הנתונים של הספק. הזמן ייבוא תמונות אוטומטי וחסל עבודה שגרתית—שלח בקשה, ואנו נכין הצעה מותאמת אישית.