🚀 100+ personalisierte Produkte — ein Skript, vollautomatisch
Vereinbaren Sie ein unverbindliches Strategiegespräch
📊 Business Value
Personalisierte Produkte brauchen personalisierte Videos. Dieses Skript liest Kundennamen aus MySQL, generiert dynamische Shopify-Handles und fügt jedem Produkt das passende YouTube-Video als Metafield hinzu.
⚙️ Datenfluss
MySQL lesen
SELECT ID, Name, VidID FROM videos. Name = personalisierter Kundenname, VidID = YouTube-Video-ID.
Handle generieren
Template "geburtstagslied-happy-birthday-to-you-Peter-1" → "Peter" ersetzen mit DB-Name.
Product ID holen
GET /admin/api/2024-01/products.json?handle={handle}. Response → products[0].id.
Metafield setzen
POST /admin/api/2024-01/products/{id}/metafields.json mit Video-URL. HTTP 201 = Erfolg.
💻 Code — Handle-Resolution & Metafield-Upload
Vom DB-Eintrag zum Shopify-Produkt-Metafield
import pymysql, requests, time, configuration
connection = pymysql.connect(**configuration.config)
def get_product_id_by_handle(handle):
url = (f"https://{SHOP_NAME}.myshopify.com"
f"/admin/api/2024-01/products.json"
f"?handle={handle}")
headers = {
"Content-Type": "application/json",
"X-Shopify-Access-Token": SHOPIFY_ACCESS_TOKEN
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
if data["products"]:
return data["products"][0]["id"]
return None
def add_video_metafield(product_id, video_url):
metafield_data = {
"metafield": {
"namespace": "custom",
"key": "product_video",
"value": video_url,
"type": "url"
}
}
url = (f"https://{SHOP_NAME}.myshopify.com"
f"/admin/api/2024-01/products/{product_id}"
f"/metafields.json")
response = requests.post(url, json=metafield_data,
headers=headers)
return response.status_code == 201
# Hauptschleife
with connection.cursor() as cursor:
cursor.execute("SELECT ID, Name, VidID FROM videos")
for entry in cursor.fetchall():
name = entry['Name']
video_url = "https://www.youtube.com/watch?v=" + entry['VidID']
# Template-Handle personalisieren
original = "geburtstagslied-...-Peter-1"
handle = original.replace("Peter", name).lower()
product_id = get_product_id_by_handle(handle)
if product_id:
add_video_metafield(product_id, video_url)
time.sleep(2) # Shopify Rate Limit: 2 req/s
💻 Code — Einfaches Metafield via Shopify REST
Direkter POST für ein einzelnes Produkt
SHOPIFY_ACCESS_TOKEN = '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'
SHOP_NAME = 'verkooyen'
PRODUCT_ID = '8479624102155'
VIDEO_URL = 'https://www.youtube.com/watch?v=CHAXobC_xS8'
metafield_data = {
"metafield": {
"namespace": "custom",
"key": "product_video",
"value": VIDEO_URL,
"type": "url"
}
}
url = (f"https://{SHOP_NAME}.myshopify.com"
f"/admin/api/2024-01/products/{PRODUCT_ID}"
f"/metafields.json")
headers = {
"Content-Type": "application/json",
"X-Shopify-Access-Token": SHOPIFY_ACCESS_TOKEN
}
response = requests.post(url, json=metafield_data,
headers=headers)
if response.status_code == 201:
print("✅ YouTube-Video erfolgreich hinzugefügt!")
else:
print(f"❌ Fehler: {response.status_code}")
print(response.json())
🎯 Strategische Erkenntnisse
Datenbank = Source of Truth
Nicht im Shopify-Admin hantieren. MySQL-Tabelle pflegen, Skript synchronisiert automatisch. 1000 Produkte in Minuten aktualisiert.
Externes Data-Management skaliert besser als Admin-UI-Klickarbeit.
Personalisierung = höhere Conversion
„Happy Birthday Peter" mit persönlichem Video converted 3-5x besser als generisches Produkt. Die API macht's skalierbar.
API-getriebene Personalisierung ist der ROI-Hebel im E-Commerce.
Rate Limiting als Feature
2s-Delay = respektvoll zur API, keine Throttling-Headaches. 1800 Updates/Stunde reichen für die meisten Shops.
Eingebautes Rate-Limiting = weniger Support-Tickets.
Shopify-Automation für Ihren Shop
Produktdaten-Pipeline, Bestell-Workflows, Metafield-Sync — ich automatisiere Ihre Shopify-Prozesse. Maßgeschneidert, kein Plugin-Wildwuchs.