סקירת האתר
האתר ymarket.co.il הוא אתר קטלוג B2B לעסק וואי מרקט - נגלר סחר והפצה, המספק מוצרי צריכה שוטפת (ניקיון, נייר, חד-פעמי, אריזות, בטיחות) לעסקים ומוסדות.
| דומיין | ymarket.co.il (Cloudflare DNS) |
| אחסון | GitHub Pages (חינמי, אוטומטי) |
| ריפו | yunagler/ymarket-catalog (private) |
| Branch | master (deploy אוטומטי) |
| תיקיה מקומית | C:\Users\DELL\ymarket\website\ |
| מספר מוצרים | 823 |
| קטגוריות | 25 (8 ראשיות + 17 תת-קטגוריות) |
| עמודי בלוג | 24 מאמרים |
| סה"כ עמודים | ~870+ |
ארכיטקטורה
האתר הוא Static Site שנבנה עם HTML/CSS/JS טהור (ללא frameworks). דפי המוצרים והקטגוריות נוצרים אוטומטית מקובץ JSON מרכזי.
מקור נתונים
Node.js
עמודים סטטיים
master
ymarket.co.il
מבנה תיקיות
טכנולוגיות
| רכיב | טכנולוגיה | הערות |
|---|---|---|
| Frontend | HTML5 + CSS3 + Vanilla JS | ללא frameworks |
| Build | Node.js scripts | ללא dependencies חיצוניים |
| Hosting | GitHub Pages | חינמי, HTTPS אוטומטי |
| DNS | Cloudflare | CDN + הגנה |
| Icons | Font Awesome 6.5.1 | CDN |
| Font | Heebo (Google Fonts) | עברית |
| Carousel | Swiper.js | דף הבית בלבד |
| Analytics | Google Analytics | analytics.js |
התחלה מהירה - פעולות נפוצות
הרצה מהירה של כל תהליך ה-Build
git push האתר מתעדכן תוך 1-2 דקות ב-GitHub Pages אוטומטית.ניהול מוצרים
כל המוצרים נמצאים בקובץ data/products.json. זהו מקור האמת היחיד. כל שינוי כאן משפיע על דפי המוצרים, הקטלוג, ה-sitemap ועוד.
מבנה מוצר ב-JSON
הוספת מוצר חדש
data/products.json, מצא את מערך items והוסף אובייקט חדש. וודא שה-id ייחודי וה-slug תקין (ללא רווחים, שימוש במקפים).
items/{id}.jpg (300x300 לפחות). אם יש URL חיצוני, עדכן את שדה imageUrl.
node build/generate-products.js — ייצור דף HTML חדש בתיקיית products/{slug}/
node build/generate-sitemap.js — יוסיף את העמוד החדש ל-sitemap.xml
git add -A && git commit -m "Add product" && git push
שדות מיוחדים
| שדה | תיאור | השפעה |
|---|---|---|
productStatus | active, on_sale, new, recommended, clearance | מציג badge בכרטיס (מבצע, חדש, חיסול) |
originalPrice | מחיר מקורי (לפני הנחה) | מציג קו חוצה + אחוז הנחה |
isFeatured | מוצר מומלץ | badge ירוק "מומלץ" |
technicalDesc | מפרט טכני | בלוק נפרד בדף המוצר |
videoUrl | לינק לסרטון | כפתור "צפו בסרטון מוצר" |
alternatives | מזהי מוצרים חלופיים | הצעות חלופיות |
leadTimeDays | ימי אספקה | "X ימי עסקים" בדף |
slug הוא חלק מה-URL. שינוי slug ישבור לינקים קיימים! אם צריך לשנות, צור redirect מה-URL הישן.ניהול קטגוריות
הקטגוריות מוגדרות ב-data/products.json במערך categories. תומך בהיררכיה (קטגוריה אב ← תת-קטגוריות).
מבנה קטגוריה
URLs של קטגוריות
כשיש seoSlug, ה-URL יהיה באנגלית. אחרת, בעברית:
| סוג | URL |
|---|---|
| עם seoSlug | /category/industrial-cleaning-supplies-wholesale/ |
| בלי seoSlug | /category/חומרי-ניקוי-וכימיקלים/ |
| תת-קטגוריה | /category/parent-slug/child-slug/ |
הסקריפט generate-categories.js גם יוצר redirect pages מה-slug העברי ל-seoSlug האנגלי, כך שלינקים ישנים לא נשברים.
הוספת קטגוריה חדשה
categorySlug של המוצרים הרלוונטיים.node generate-categories.js ואז node generate-products.jsניהול בלוג
הבלוג מכיל 24 מאמרים בתיקיית blog/. כל מאמר הוא קובץ HTML עצמאי.
הוספת מאמר חדש
blog/slug-name.html. השתמש במבנה של מאמר קיים כ-template.blog.html והוסף card למאמר ברשימה.node build/sync-header.js && node build/sync-footer.jsnode build/generate-sitemap.jsמבנה מאמר בלוג
כל מאמר כולל:
- Meta tags — title, description, og:image
- Breadcrumbs — דף הבית ← בלוג ← שם המאמר
- תוכן — H1, תמונה ראשית, פסקאות, רשימות, לינקים פנימיים
- CTA — קריאה לפעולה (WhatsApp / קטלוג)
- מאמרים קשורים — 3 כרטיסים למאמרים נוספים
עמודים סטטיים
| עמוד | קובץ | תיאור |
|---|---|---|
| דף הבית | index.html | Hero, קרוסלת מוצרים, סגמנטים, testimonials |
| קטלוג | catalog.html | רשימת מוצרים עם סינון וחיפוש (קורא מ-products.json) |
| אודות | about.html | על העסק, ערכים, צוות |
| צור קשר | contact.html | טופס יצירת קשר, טלפון, WhatsApp |
| שאלות נפוצות | faq.html | אקורדיון שאלות ותשובות |
| עגלת קניות | cart.html | עגלה מ-LocalStorage |
| צ'קאאוט | checkout.html | טופס הזמנה |
| כניסה | login.html | התחברות לקוחות |
| הרשמה | register.html | רישום לקוח חדש |
| מעקב משלוחים | tracking.html | מעקב הזמנות |
| 404 | 404.html | דף שגיאה מותאם |
עמודים משפטיים (legal/)
7 עמודים: תקנון, פרטיות, משלוחים, החזרות, ביטולים, עוגיות, נגישות.
sync-header.js ו-sync-footer.js כדי לוודא שה-header וה-footer מעודכנים.תהליך Build
כל הסקריפטים ב-build/ רצים עם Node.js ללא dependencies חיצוניים.
| סקריפט | פקודה | מה עושה | מתי להריץ |
|---|---|---|---|
generate-products.js |
node generate-products.js |
מייצר 823 דפי מוצר מ-products.json | שינוי מוצרים / SEO |
generate-categories.js |
node generate-categories.js |
מייצר 25 דפי קטגוריה + redirects | שינוי קטגוריות |
generate-sitemap.js |
node generate-sitemap.js |
מייצר sitemap.xml עם כל העמודים | הוספת/הסרת עמודים |
sync-header.js |
node sync-header.js |
מסנכרן header + mega-menu לכל ~870 עמודים | שינוי בתפריט |
sync-footer.js |
node sync-footer.js |
מסנכרן footer לכל העמודים | שינוי ב-footer |
product-seo-server.js |
node product-seo-server.js |
שרת SEO על פורט 8878 | ניהול SEO |
export-catalog.js |
node export-catalog.js |
ייצוא הקטלוג לפורמט חיצוני | לפי צורך |
סדר הרצה מומלץ (Full Build)
generate-products.js מוחק את כל תיקיית products/ ומייצר מחדש. אל תשמור קבצים ידניים שם!העלאה לאוויר (Deploy)
האתר מתארח ב-GitHub Pages. כל push ל-branch master מפרסם אוטומטית.
תהליך Deploy
בדיקה אחרי Deploy
- פתח את ymarket.co.il ובדוק שהאתר עלה תקין
- בדוק Ctrl+Shift+R (hard refresh) אם יש cache ישן
- בדוק דף מוצר ספציפי שהשתנה
- בדוק שה-sitemap עודכן:
/sitemap.xml
Rollback (חזרה לגרסה קודמת)
סנכרון Header / Footer
האתר מכיל ~870 עמודי HTML. ה-Header וה-Footer צריכים להיות זהים בכולם. שני סקריפטים מטפלים בזה:
sync-header.js
מעדכן את ה-Header (top-bar + navigation + mega-menu + mobile overlay) בכל העמודים. אם צריך לשנות את התפריט:
node build/sync-header.jssync-footer.js
זהה - מעדכן את ה-footer (לוגו, קטגוריות, לינקים, צור קשר, legal). ערוך את הסקריפט → הרץ → בדוק.
SEO - סקירה כללית
האתר כולל מערכת SEO מקיפה. הנה התמונה הגדולה:
| רכיב SEO | מיקום | סטטוס |
|---|---|---|
| Meta tags (title, description) | כל 870+ עמודים | פעיל |
| Open Graph (Facebook, WhatsApp) | כל העמודים | פעיל |
| Schema.org / JSON-LD | מוצרים + קטגוריות + דף הבית | פעיל |
| Sitemaps | sitemap.xml + sitemap-products.xml + sitemap-blog.xml | פעיל |
| Canonical URLs | כל העמודים | פעיל |
| robots.txt | שורש האתר | פעיל |
| Clean URLs | /products/slug/ (ללא .html) | פעיל |
| Breadcrumbs | כל עמודי מוצר + קטגוריה | פעיל |
| SEO לקטגוריות | תוכן, FAQs, meta לכל קטגוריה | פעיל |
| SEO למוצרים | title, h1, meta, specs, bulkCta | ב-Setup |
| Blog SEO | 24 מאמרים עם internal linking | פעיל |
| hreflang | Hebrew (he_IL) | פעיל |
20 מילות מפתח מטרה
- ציוד ניקיון למוסדות
- חומרי ניקיון סיטונאי
- כלים חד פעמיים לעסקים
- ספק מוצרי ניקיון
- נייר טואלט מוסדי
- מגבות נייר תעשייתי
- שקיות אשפה מוסדיות
- ציוד חד פעמי למסעדות
- מוצרי נייר סיטונאי
- חומרי ניקיון לחברות ניקיון
- ספק ציוד משרדי
- כלים חד פעמיים סיטונאי
- מוצרי ניקיון מוסדיים מחירים
- אספקה למוסדות
- ציוד ניקיון לבריכות
- מוצרי חד פעמי לאירועים
- ספק מזון יבש לעסקים
- ציוד ניקיון לבתי ספר
- חומרי ניקיון תעשייתיים
- הזמנת מוצרי ניקיון אונליין
SEO למוצרים - Product SEO Manager
ממשק וויזואלי + API לניהול נתוני SEO לכל 823 מוצרים. הנתונים נשמרים ישירות ב-products.json.
הפעלת השרת
ממשק UI
כנסו ל-http://localhost:8878 ותראו:
- טבלת מוצרים — כל 823 המוצרים עם סטטוס SEO (V/X)
- חיפוש — לפי שם, מק"ט, או ID
- סינון — הכל / עם SEO / ללא SEO / לפי קטגוריה
- עריכה — לחצו על כדי לערוך SEO למוצר
- יצירה אוטומטית — לחצו על ליצירה אוטומטית
- Bulk generate — כפתור ירוק "יצירת SEO אוטומטי" ליצירה לכל החסרים
- Build — כפתור "Build Pages" שמריץ את generate-products.js
שדות SEO למוצר
| שדה | מומלץ | דוגמה |
|---|---|---|
title | 60-70 תווים | אקונומיקה 3.5% ריחנית BLINX | וואי מרקט |
h1 | כותרת עם keyword | אקונומיקה 3.5% ריחנית - 4 ליטר BLINX |
metaDesc | 150-160 תווים | אקונומיקה ריחנית 3.5% - חומרי ניקוי. מחירי סיטונאות... |
specs | מפרט (label+value) | [{label: "מק\"ט", value: "BLX-ECO"}, ...] |
bulkCta | קריאה לפעולה | {title, text, waText} |
API Endpoints
| Endpoint | Method | תיאור |
|---|---|---|
/api/stats | GET | סטטיסטיקות (כמה עם/בלי SEO) |
/api/products?page=1&limit=50&filter=all&category=slug&search=text | GET | רשימת מוצרים עם פילטרים |
/api/products/:id | GET | מוצר בודד |
/api/products/:id/seo | PUT | עדכון SEO |
/api/products/:id/seo | DELETE | מחיקת SEO |
/api/products/:id/generate-seo | POST | יצירה אוטומטית (ללא שמירה) |
/api/bulk-generate | POST | יצירת SEO לכל החסרים |
/api/categories | GET | רשימת קטגוריות |
/api/build | POST | הרצת generate-products.js |
דוגמת API
Workflow: SEO למוצרים
node build/product-seo-server.jshttp://localhost:8878node generate-products.js ואז git pushproducts.json לפני כל שמירה ב-data/backups/. נשמרים 10 גיבויים אחרונים.SEO לקטגוריות
הנתונים מגיעים משני מקורות (לפי סדר עדיפות):
- products.json — שדות
metaTitle,metaDescription,seoContentבכל קטגוריה - CATEGORY_SEO בסקריפט — hardcoded ב-
generate-categories.js(title, h1, metaDesc, seoText, faqs)
עדכון SEO לקטגוריה
אפשרות 1 (מומלצת): ערוך ישירות ב-products.json את שדות ה-SEO של הקטגוריה:
אפשרות 2: ערוך את אובייקט CATEGORY_SEO ב-generate-categories.js (כולל FAQs).
מבנה תוכן SEO לקטגוריה
כל קטגוריה מקבלת בלוק תוכן SEO שמופיע מתחת לרשימת המוצרים, וכולל:
- H2 — כותרת עם מילת מפתח (לדוגמה "חומרי ניקוי מוסדיים בסיטונאות")
- 2-3 פסקאות — תיאור הקטגוריה עם לינקים פנימיים
- CTA — קריאה לפעולה (צור קשר / WhatsApp)
- FAQs — שאלות נפוצות עם Schema.org FAQPage markup
Sitemaps
| קובץ | תוכן | גודל |
|---|---|---|
sitemap.xml | כל העמודים (ראשי) | ~248KB |
sitemap-products.xml | 823 דפי מוצר | ~175KB |
sitemap-blog.xml | 24 מאמרי בלוג | ~2.6KB |
עדכון Sitemaps
הסקריפט סורק את כל קבצי ה-HTML ומגדיר:
- Priority — 1.0 לדף הבית, 0.9 לקטלוג, 0.85 לקטגוריות, 0.7 למוצרים
- changefreq — weekly לדף הבית/קטלוג, monthly למוצרים, yearly ל-legal
- lastmod — תאריך עדכון אחרון
robots.txt כך שגוגל מוצא אותם אוטומטית. אפשר גם לשלוח ידנית ב-Google Search Console.Schema Markup (Structured Data)
האתר משתמש ב-JSON-LD לסימון תוכן מובנה לגוגל:
| סוג | היכן | תיאור |
|---|---|---|
| Organization | כל העמודים (schema-markup.js) | שם העסק, לוגו, טלפון, כתובת |
| LocalBusiness | כל העמודים | שעות פעילות, אזור שירות (11 ערים) |
| Product | דפי מוצר | שם, מחיר, מטבע, זמינות, תמונה |
| BreadcrumbList | מוצרים + קטגוריות | ניווט היררכי |
| CollectionPage + ItemList | דפי קטגוריה | רשימת מוצרים בקטגוריה |
| FAQPage | קטגוריות עם FAQs | שאלות ותשובות |
| WebSite | דף הבית | חיפוש פנימי (Sitelinks Search Box) |
מבנה CSS
מיתוג וצבעים
כל הצבעים מוגדרים כ-CSS Variables ב-css/variables.css:
| Variable | ערך | שימוש |
|---|---|---|
--color-primary | #1B3A5C | צבע ראשי (כהה) |
--color-primary-dark | #112A45 | header, hover states |
--color-primary-light | #2A5080 | גוונים בהירים |
--color-accent | #16a34a | WhatsApp, CTA |
קבצי CSS
| קובץ | תוכן |
|---|---|
variables.css | CSS Variables — צבעים, פונטים, spacing, shadows |
base.css | Reset, typography, links, global styles |
components.css | כפתורים, כרטיסים, badges, modals, toasts |
layout.css | Container, grid, header, footer, sidebar |
responsive.css | Media queries — mobile, tablet, desktop |
style.min.css | כל הנ"ל מאוחד ומכווץ (production) |
CSS ספציפי לעמודים
בתיקיית css/pages/:
home.min.css— Hero, carousel, segmentscatalog.min.css— Category tree, filters, product gridproduct-detail.min.css— Gallery, pricing, specs, reviewsblog.min.css— Article cards, post contentcheckout.min.css— Checkout formcontact.min.css— Contact formlegal.min.css— Legal pages typography
style.min.css. אם אתה עורך CSS source (variables.css, base.css וכו'), צריך לאחד ולכווץ אותם מחדש ל-style.min.css.
רספונסיביות
Breakpoints מוגדרים ב-responsive.css:
| Breakpoint | מכשיר |
|---|---|
max-width: 480px | מובייל קטן |
max-width: 768px | מובייל / טאבלט |
max-width: 992px | טאבלט |
max-width: 1200px | דסקטופ קטן |
min-width: 1200px | דסקטופ מלא |
מבנה נתונים
products.json — המבנה המלא
site-config.json
API Endpoints - סיכום מלא
Product SEO Server (Port 8878)
| Method | Endpoint | Body | תיאור |
|---|---|---|---|
| GET | /api/stats | - | סטטיסטיקות SEO |
| GET | /api/products | Query: page, limit, filter, category, search | רשימת מוצרים |
| GET | /api/products/:id | - | מוצר בודד + כל השדות |
| PUT | /api/products/:id/seo | {title, h1, metaDesc, specs, bulkCta} | עדכון SEO |
| DELETE | /api/products/:id/seo | - | מחיקת SEO |
| POST | /api/products/:id/generate-seo | - | יצירת SEO (ללא שמירה) |
| POST | /api/bulk-generate | {overwrite, category} | יצירה באלק |
| POST | /api/bulk-update | {ids, field, value} | עדכון שדה למרובים |
| GET | /api/categories | - | רשימת קטגוריות |
| POST | /api/build | - | הרצת generate-products.js |
פתרון בעיות
האתר לא מתעדכן אחרי Push
- ודא ש-push היה ל-
master(לא branch אחר) - בדוק ב-GitHub: Settings → Pages → שה-branch הוא master
- נקה cache: Ctrl+Shift+R
- המתן 2-5 דקות — לפעמים GitHub Pages איטי
generate-products.js נכשל
- בדוק ש-
data/products.jsonהוא JSON תקין (אין פסיקים מיותרים) - הרץ
node -e "JSON.parse(require('fs').readFileSync('data/products.json'))"לבדיקה - ודא שכל מוצר עם
slugתקין
Header/Footer לא תואמים
- הרץ
node sync-header.jsו-node sync-footer.js - ודא שעמודי מוצר/קטגוריה נבנו מחדש לפני הסנכרון
תמונות שבורות
- בדוק שהתמונה קיימת ב-
items/{id}.jpg - כל תמונה שחסרה מציגה placeholder אוטומטי
- ודא שה-imageUrl נכון ב-products.json
SEO Server לא עולה
- בדוק שפורט 8878 פנוי:
netstat -ano | grep 8878 - שנה פורט ב-
product-seo-server.js(שורה 14)
git push נכשל
צ'קליסט פרסום
לפני כל העלאה משמעותית, עברו על הרשימה:
לפני Build
- products.json תקין (JSON valid)
- תמונות מוצרים חדשים קיימות
- slugs תקינים (ללא רווחים, תווים מיוחדים)
- מחירים עדכניים
Build
-
node generate-products.js— ללא שגיאות -
node generate-categories.js— ללא שגיאות -
node sync-header.js -
node sync-footer.js -
node generate-sitemap.js
בדיקה מקומית
- דף הבית נטען תקין
- דף מוצר חדש/מעודכן נראה טוב
- ניווט ובreadcrumbs עובדים
- מובייל — רספונסיבי תקין
- לינקים פנימיים עובדים
Deploy
-
git status— לבדוק מה נכנס -
git add + commit + push - המתנה 1-2 דקות
- בדיקת האתר החי
- Hard refresh (Ctrl+Shift+R)
SEO (אחרי deploy)
- sitemap.xml נגיש:
ymarket.co.il/sitemap.xml - robots.txt תקין:
ymarket.co.il/robots.txt - Rich Results Test — Schema תקין