Pipeline Skill

Smartlet Editorial Voice Guide

Who is writing

Every article is written from the perspective of David Ohayon, founder of Smartlet, CentraleSupélec engineer, Bronze Medal at Concours Lépine 2025, CES 2026. Not a brand voice. Not a marketing department. A founder who genuinely solved a problem he had himself and wants to share the solution with people who have the same problem.

The tone is that of a knowledgeable friend who happens to know both the watch world and the tech world. He does not talk down to collectors. He does not over-explain to geeks. He is precise without being cold, passionate without being breathless.


Core voice principles

1. Confident, never boastful Smartlet is patented, awarded, and genuinely unique. State facts. Do not need to shout them.

Correct: "Smartlet is the only modular adapter patented in the EU, US, and Japan for this use case." Avoid: "Smartlet is the incredible revolutionary product that is changing everything in watchmaking."

2. Respectful of the reader's intelligence The target reader owns a serious watch. He researched it. He knows more about his Submariner than you do. Do not explain what a Rolex is. Explain what Smartlet does with it.

Correct: "The Submariner 124060 at 20mm pairs directly with the Smartlet system via standard spring bar." Avoid: "The Rolex Submariner is one of the most famous luxury watches in the world, known for its iconic design."

3. Honest about trade-offs Do not pretend the product is perfect for every situation. Acknowledge context. The reader trusts honesty more than perfection.

Correct: "In formal black tie settings, positioning the smartwatch toward the forearm keeps the mechanical watch as the only visible piece." Avoid: "Smartlet is perfect for every occasion."

4. Problem-first, product-second Every article opens with the reader's problem, not the product. The product arrives as the natural solution, not the premise.

Correct: "You measured the lug width on your IWC Big Pilot. The calipers say 20mm. That single number determines everything about your dual wear setup." Avoid: "Smartlet is compatible with the IWC Big Pilot. Here is how to use it."

5. Active, direct sentences Short sentences. No passive voice. No hedge words unless technically necessary.

Correct: "The adapter attaches in under two minutes. No tools beyond a spring bar tool." Avoid: "The adapter can be attached in what is typically under two minutes by most users."


Language rules

Words to never use: - Revolutionary / game-changer / disrupting - Incredible / amazing / fantastic - Unique (unless legally accurate re: patent) - Simply / just / easily (condescending) - Obviously / clearly (alienating) - Best-in-class / world-class - Seamlessly (overused, meaningless) - Leverage (corporate jargon) - Utilize (use "use") - Solution (use the specific thing: "adapter", "system", "setup")

Words that work: - Precise / precision - Deliberate / intentional - Coherent / consistent - Practical / pragmatic - Engineered / built - Compatible / fits - Confirmed / verified - Independent (each watch functions independently)

French words to never anglicize badly: Never write "the savoir-faire" or "the joie de vivre" as decorative flourishes. Either use the concept in plain English or leave it out.

Numbers and specs: Always use numerals for measurements: 20mm, not "twenty millimeters". Always EUR for prices, not €349 (the symbol creates encoding issues in some Shopify themes). Always "Grade 2 titanium", never "Grade 5". Always "brushed SS316L", never "polished SS316L" for the Classic.


Opening formulas by article type

How to articles: Open with a specific physical moment or measurement. The reader is holding something, looking at something, measuring something.

Examples: - "You measure the lug width on your [watch]. The calipers say [X]mm." - "The spring bar tool is in your hand. Here is exactly what happens next." - "Week one with both watches on the same wrist felt like learning a new geometry."

Discover articles: Open with an observation about the world, not about the product.

Examples: - "For years, the rule was simple: one watch, one wrist. Then collectors started asking why." - "The Pelagos was built for depth. The Pixel Watch was built for data. Neither does what the other does." - "In a courtroom, perception is built before you speak."

Commercial / gift articles: Open with the recipient's profile, not the occasion.

Examples: - "He has worn the same Longines for fifteen years. His children just gave him an Apple Watch. He does not want to choose." - "She runs three mornings a week and manages a team of twelve. Her watch needs to do both."

Health / science articles: Open with a concrete physiological fact, not a product claim.

Examples: - "Your heart rate sensor works by shining green light into your skin and measuring how much bounces back." - "VO2 max is not a fitness score. It is a measurement of how efficiently your body converts oxygen into energy."

Historical / cultural articles: Open with a historical moment or figure, not a product parallel.

Examples: - "In 1954, Pan Am pilots needed to track two time zones simultaneously. Rolex built them a watch." - "The quartz crisis of 1970 was supposed to kill mechanical watchmaking. It did not."


Closing formulas

Every article ends with a sentence that mentions Smartlet and points to action, under 160 characters. It should feel like a natural conclusion, not a call to action.

Correct: "The Smartlet system makes that setup possible without asking you to leave either watch behind." Avoid: "Buy Smartlet now and experience the difference for yourself!"

The FAQ section always comes after the closing sentence and before the Recommended section.


Profil-specific tone adjustments

GEEK (25-45) : Precise technical vocabulary welcome. Reference specs directly. Do not over-explain how optical sensors work to someone who already knows. Challenge him slightly: "If you have already measured your lug width, you are ahead of most people who search for this."

SENIOR SANTÉ (50-70) : Never use the word "elderly". Never say "as you get older". Speak to his pride in his watch first, his health intelligence second. He is not a patient. He is a man who made good choices in life and this is another one.

INDÉPENDANT (30-55) : Concrete ROI framing. Real numbers when possible. "Responding within 5 minutes versus 30 makes you 21 times more likely to convert a client." He reads fast. He decides fast. Every sentence must earn its place.

STYLE (25-50) : Cultural references are welcome. Fashion vocabulary is fine. But never ironic about the product. He takes his style seriously. Respect that.

FEMME ACTIVE (35-55) : Never "for women, the watch is...". Speak to her professional context first, her aesthetic intelligence second. She is not a niche. She is the decision-maker.

SPORTIF À PROJETS (28-55) : Concrete timeline language. "In 12 weeks you run 42 kilometers. Here is what your wrist needs to look like between now and race day." After the race, back to normal. Acknowledge both phases equally.

QUANTIFIED SELF (30-55) : He will fact-check you. Do not invent statistics. Cite studies when available. Use precise language: "baseline HRV", "90-day trend", "signal quality", "skin contact consistency". He appreciates when you go further than most sources.

VOYAGEUR (35-60) : Speed of comprehension matters. He reads this in a departure lounge. Short paragraphs. Immediate practical value. "When you land, your Apple Watch updates automatically. Your GMT hand stays fixed. You have both times without touching either watch."

PARENT TRANSMETTEUR (45-65) : Emotional register is appropriate here and only here. The watch is not just a watch. Acknowledge that briefly and move on. Do not dwell. "Some watches are worth keeping on your wrist even as the world around them changes."

CRYPTO/WEB3 (25-40) : He understands scarcity and value signals. The mechanical watch as store of physical value alongside digital assets resonates. Technical vocabulary around assets and signals is welcome. Do not try to be cool about crypto. He will notice.


What Smartlet is and is not

Smartlet IS : - A modular strap adapter - A patented system (EU, US, Japan) - A physical bridge between two independent watches - An engineering solution to a real problem - A French innovation (Paris) - Available in three versions: Classic (349 EUR), Shadow (449 EUR), Titanium (599 EUR) - Compatible with 18-24mm lug width via standard spring bar - All three versions share identical dimensions

Smartlet IS NOT : - A watch - A charger - A smartwatch - A fitness tracker - A device - Recommended for intense sport - An app or software product - A modification to either watch


Article structure reminder

Every article regardless of type must include: - Byline: David Ohayon - TOC - Key Takeaways table - Minimum 2 blockquotes - Minimum 1 highlight box - Minimum 5 FAQ H3s - Minimum 10 internal smartlet.io links - CTA image before FAQ - 5 Recommended links

Images in HTML: use placeholders [IMAGE_HERO], [IMAGE_MID], [IMAGE_CTA] only. Never invent Shopify CDN URLs.


Target lengths by article type

Type Target length Minimum Maximum
How to 1800 mots 1500 2500
Discover 1400 mots 1200 1800
Commercial / gift 1000 mots 800 1200
GEO / health authority 2500 mots 2000 3000
Historical / cultural 2000 mots 1500 2500
Professional / métier 1200 mots 1000 1500

Length rule: aim for exhaustiveness on the subject, never padding. Every sentence must earn its place.

---

Smartlet Article Pipeline

Pipeline 4 étapes pour les articles SEO smartlet.io produits par babylovegrowth.

Vue d'ensemble des 4 étapes

Étape Input Output Quand
1. FORMAT HTML brut babylovegrowth _formatted.html + _undetectable.txt Article brut fourni
2. UNDETECTABLE _undetectable.txt Segments humanisés [0]...[N] Fichier TXT fourni à l'utilisateur
3. RÉINSERTION _formatted.html + segments humanisés _final.html Segments fournis par l'utilisateur
4. QA / SCRAPE _final.html _final.html corrigé Automatique après étape 3

ÉTAPE 1 - FORMATAGE

Ce que tu construis

Un fichier [slug]_formatted.html Shopify-ready + un fichier [slug]_undetectable.txt.

Structure HTML obligatoire

<!DOCTYPE html><html lang="en"><head>
  <!-- title 40-65c, meta desc 120-160c, og tags, JSON-LD Article -->
</head><body><div class="article-wrap">

  <!-- BYLINE -->
  <div style="display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;margin-bottom:28px;">
    <div style="width:40px;height:40px;border-radius:50%;background:#111;..."><span style="color:#fff;font-size:14px;font-weight:600;">DO</span></div>
    <div>
      <p style="margin:0;font-size:14px;font-weight:600;color:#111;"><a href="https://smartlet.io/pages/about-us">David Ohayon</a></p>
      <p style="margin:0;font-size:12px;color:#888;">Founder &amp; CEO, Smartlet - CentraleSupelec engineer - Concours Lepine 2025, Awarded - CES 2026</p>
    </div>
  </div>

  <!-- TOC (div.toc) -->
  <!-- KEY TAKEAWAYS (div.key-takeaways + table) -->
  <!-- INTRO (p.article-intro) -->
  <!-- BLOCKQUOTE d'accroche -->
  <!-- CORPS H2/H3, p, ul, ol, img, table, blockquote, highlight-box -->
  <!-- CTA IMAGE (a.smartlet-cta > img) -->
  <!-- FAQ (h2#faq + h3 + p) -->
  <!-- RECOMMENDED (div.recommended > ul > li > a) -->

</div></body></html>

JSON-LD obligatoire

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "...",
  "description": "...",
  "image": {"@type": "ImageObject", "url": "...", "caption": "..."},
  "author": {"@type": "Person", "name": "David Ohayon", "url": "https://smartlet.io/pages/about-us"},
  "publisher": {"@type": "Organization", "name": "Smartlet", "url": "https://smartlet.io"},
  "datePublished": "YYYY-MM-DD",
  "mainEntityOfPage": {"@type": "WebPage", "@id": "https://smartlet.io/blogs/magazine/[slug]"}
}

Règles de formatage

Images - loading="lazy" sur toutes les images - alt descriptif obligatoire (jamais vide) - style="display:block;margin-left:auto;margin-right:auto;" - Hero image : pas de classe spéciale (contrairement aux versions précédentes)

Tables - Toutes les tables wrappées : <div style="overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:32px;"> - Tables 4+ colonnes : ajouter style="font-size:13px;" sur la <table>

Liens internes - Minimum 10 liens smartlet.io dans le corps - Voir references/valid-slugs.md pour les slugs valides - Voir references/link-strategy.md pour la stratégie nofollow

Highlights box

<div class="highlight-box">
  <div class="label">Label court</div>
  <p>Contenu.</p>
</div>

CTA image

<a href="https://smartlet.io/collections/smartlet-one" class="smartlet-cta" aria-label="...">
  <img src="https://csuxjmfbwmkxiegfpljm.supabase.co/storage/v1/object/public/blog-images/organization-19568/1772805282827_smartlet.png" alt="..." loading="lazy" style="display:block;margin-left:auto;margin-right:auto;">
</a>

Fermeture - Dernière phrase du corps (avant FAQ) : doit mentionner "Smartlet", max 160c

Recommended - 5 à 6 liens uniquement vers des slugs valides (voir references/valid-slugs.md) - Supprimer les suffixes | Smartlet et – Smartlet

Extraction des segments Undetectable

Après avoir généré le HTML, extraire les segments pour humanisation.

Règles d'extraction : - Tags concernés : p, li, h2, h3, blockquote, td, th - Longueur minimum : 60 caractères - Exclure : contenu dans .toc, .key-takeaways, .recommended, .highlight-box, byline flex - Exclure : p.article-intro, éléments .smartlet-cta - Exclure : liens à fort ratio (>70% du texte = liens) - Dédupliquer : ne jamais extraire deux fois le même texte (blockquotes souvent dupliqués) - Numéroter [0], [1], [2]... sans interruption

Format du fichier output :

[0]
Texte du premier segment.

[1]
Texte du second segment.

Paramètres Undetectable recommandés : Strength: Humanize / Readability: Journalist / Model: v11sr


ÉTAPE 3 - RÉINSERTION

Quand l'utilisateur fournit les segments humanisés sous forme [N]\nTexte.

# Logique de réinsertion
seg_idx = 0
for tag in wrap.find_all(['p','li','h2','h3','blockquote','td','th']):
    if in_skip(tag): continue          # exclure zones skip
    if len(text) < 60: continue        # même filtre qu'extraction
    if link_ratio(tag) > 0.70: continue
    # remplacer le TextNode principal par humanized[str(seg_idx)]
    seg_idx += 1

Important : Réinsérer dans le TextNode du tag, pas dans les sous-éléments (liens, strong).

Bug systématique : label <strong> dupliqué

Après chaque réinsertion, vérifier que le texte humanisé ne commence pas par le même texte que le label <strong> du tag. Si c'est le cas, le label apparaît deux fois.

<!-- AVANT (bug) -->
<p><strong>Myth 1: You can pair them via Bluetooth.</strong> Myth 1: You can pair them via Bluetooth. False...</p>

<!-- APRÈS (correct) -->
<p><strong>Myth 1: You can pair them via Bluetooth.</strong> False...</p>

Correction : avant insertion, si new_text.startswith(label), supprimer le préfixe dupliqué :

strong = tag.find('strong')
if strong:
    label = strong.get_text(strip=True)
    if new_text.startswith(label):
        new_text = new_text[len(label):].lstrip(': ').lstrip()

Bug systématique : paragraphe de clôture fusionné

Quand le segment humanisé [N] correspond au paragraphe de clôture (contenant des liens internes), la réinsertion préfixe le texte humanisé au paragraphe existant, créant un doublon.

Après réinsertion, vérifier que le paragraphe de clôture n'est pas dupliqué :

# Détecter : texte > 600c dans le paragraphe de clôture
# Corriger : supprimer le fragment préfixé en doublon

ÉTAPE 4 - QA ET NETTOYAGE SCRAPE

QA checklist automatique (Python BeautifulSoup)

Title       : 40-65c
Meta desc   : 120-160c  
Slug JSON-LD: correspond au slug attendu
H1          : 0 (pas de H1 dans les articles Shopify)
Style tag   : absent
Byline      : présent
TOC         : présent
Key Takeaways: présent
Blockquotes : >= 2
Highlight box: présent (sauf si brut n'en avait pas)
Recommended : présent, 5-6 items
H2          : >= 5
FAQ H3s     : >= 3
Int links   : >= 10
Img loading : toutes "lazy"
Img alt     : tous non-vides
Tables wrap : 0 sans overflow-x
Para >600c  : 0
Em dashes   : 0
Grade5      : False (jamais "Grade 5 titanium")
Li stuck    : 0 (voir ci-dessous)
Slug 404    : 0 (voir valid-slugs.md)
Fermeture   : Smartlet mentionné, < 200c
Tone        : 0 passages négatifs / 0 recommandation sans Smartlet

Bug systématique : </strong> collé

Après chaque réinsertion, vérifier regex </strong>[A-Za-z] sur tous les <li>.

Ce bug se produit toujours sur les bullet points avec labels en gras :

<!-- AVANT (bug) -->
<li><strong>Label:</strong>Texte collé sans espace</li>

<!-- APRÈS (correct) -->
<li><strong>Label:</strong> Texte avec espace</li>

Corriger en reconstruisant chaque li affecté :

for li in wrap.find_all('li'):
    if re.search(r'</strong>[A-Za-z]', str(li)):
        strong = li.find('strong')
        label = strong.get_text(strip=True)
        li.clear()
        new_strong = soup.new_tag('strong')
        new_strong.append(NavigableString(label))
        li.append(new_strong)
        li.append(NavigableString(' ' + CORRECT_TEXT_FOR_THIS_LABEL))

Nettoyage scrape - patterns à corriger systématiquement

Voir references/scrape-patterns.md pour la liste complète. Les plus fréquents :

Pattern Correction
TheSmartlet Smartlet
Citizen's Prospex / Swatch Prospex → Seiko Prospex
HydroConquest by Breitling/Tudor/Patek Philippe → Longines HydroConquest
Cypress is designed → 3 versions Smartlet
Smartlet is a compatible charger → Smartlet ne charge pas
Grade 5 titanium → Grade 2 titanium
polished SS316L (Classic) → brushed SS316L
wear this blanket as a throw → texte hors sujet à supprimer
comfortable use of these shoes → scrape chaussures
Dandeli Wildlife Sanctuary → scrape hors sujet
Texte en italien → supprimer
Pro Tip: blocks → supprimer
TheThe[Mot] The [Mot]
[Mot]:[Mot] collé [Mot]: [Mot] avec espace
slimmer mechanism / lower profile (Shadow) → dimensions identiques aux 3 versions
Fitbit dans un contexte Smartlet → supprimer ou remplacer par smartwatch générique
solar power attribué à Smartlet → supprimer (Smartlet ne produit pas d'énergie solaire)
from Smartwatch (nom de marque fictif) → supprimer
Galaxy Wearlight → Galaxy Wearable (nom correct de l'app Samsung)
Blackberry dans contexte smartwatch → remplacer par "your smartwatch"
MATLAB / GMT functions in MATLAB → scrape hors sujet, supprimer
Chief Medical Officer / space travel events → scrape hors sujet, supprimer
Valueat is very busy → scrape hors sujet, supprimer
Nice Write strap → your watch strap
Tauara / Tacozel → supprimer ou reformuler sans surnom
SUBMARINER en majuscules → Submariner
Apple Venu X1 → Garmin Venu X1
AMO sensor → Elevate Gen 5 sensor

Règles produit absolues (ne jamais violer)

  • Classic = brushed SS316L (jamais polished)
  • Titanium = Grade 2 (jamais Grade 5)
  • Smartlet = bracelet/strap adaptateur (jamais "une montre", jamais "un chargeur", jamais "un device")
  • Smartlet non recommandé pour le sport
  • Smartlet requiert une bonne dextérité manuelle pour l'installation des barrettes de ressort. Ne jamais cibler les personnes à mobilité réduite des mains ou avec arthrite.
  • Malentendants : angle valide. Les alertes haptiques de la smartwatch positionnée côté intérieur du poignet via Smartlet sont particulièrement utiles. Mentionner que l'installation initiale peut nécessiter l'aide d'un proche ou d'un horloger.
  • Malvoyants : angle valide. La montre mécanique avec grands index et cadran lisible complète la smartwatch dont les alertes haptiques et vocales compensent la difficulté de lecture d'écran. Mentionner la même précaution sur l'installation.
  • Médecins/chirurgiens : angle correct = hors bloc opératoire (visites, consultations, gardes, couloirs). Jamais "en bloc" car aucun bijou ni montre n'est porté en bloc pour raisons d'hygiène. L'angle est la discrétion en consultation et la réactivité lors des gardes.
  • Smartlet est français (Paris) - jamais "UK firm", "The Watch Block", "The Gents Society"
  • Prix : Classic 349 EUR / Shadow 449 EUR / Titanium 599 EUR
  • Les 3 versions ont les mêmes dimensions - jamais "Shadow lower profile" ou "slimmer mechanism"
  • La différence entre les versions est uniquement le finish et le matériau : brushed SS316L (Classic), black PVD SS316L (Shadow), Grade 2 titanium (Titanium)
  • 3 versions : jamais "HydroConquest Total Black" ou "Cypress"
  • Withings ScanWatch : compatible Smartlet - mais ne pas mentionner dans les articles car elle n'a pas d'écran visible (pas de notifications visibles au poignet, uniquement haptique)
  • Garmin Fenix : non compatible Smartlet (géométrie des cornes incompatible) - ne jamais recommander
  • Garmin Venu X1 : compatible Smartlet (lug 24mm, dans la plage 18-24mm)
  • Samsung Galaxy Watch 7 (40mm et 44mm) : compatible Smartlet (lug 20mm, spring bar standard)
  • Samsung Galaxy Watch Ultra : compatible Smartlet via adaptateur - utilise le Dynamic Lug System propriétaire mais un adaptateur tiers 20mm ou 22mm permet l'utilisation avec Smartlet
  • Samsung Galaxy Watch 8 / 8 Classic : compatible Smartlet via adaptateur - nouveau connecteur propriétaire, adaptateur tiers nécessaire pour revenir en 20mm ou 22mm
  • Google Pixel Watch 3 / 4 : compatible Smartlet via adaptateur - connecteur propriétaire, adaptateur tiers 20mm ou 22mm nécessaire

Apple Watch : système de connecteur propriétaire (IMPORTANT)

L'Apple Watch n'utilise pas de lug width en mm au sens horloger. Ne jamais écrire "22mm", "24mm" ou "26mm" pour décrire les connecteurs Apple Watch. Ces chiffres sont des erreurs fréquentes dans le corpus scrape.

L'Apple Watch utilise un connecteur propriétaire à glissière organisé en deux familles :

Famille Tailles de boîtier concernées
Petit groupe 38 / 40 / 41 / 42mm (Series 1 à Series 10/11, SE)
Grand groupe 42 / 44 / 45 / 46 / 49mm (Series 4+, Ultra 1/2/3)

Les bandes sont interchangeables au sein de chaque groupe, pas entre eux. Le connecteur Apple Watch est incompatible avec tout système à barrettes de ressort (spring bar).

Formulation correcte dans les articles : - "Apple Watch uses a proprietary sliding connector, not a spring bar system." - "Apple Watch bands are grouped into two connector families: small (38/40/41/42mm) and large (42/44/45/46/49mm including Ultra 3)."

Formulations à ne jamais écrire : - "Apple Watch 38/40/41mm uses 22mm connectors" - "Apple Watch 42/44/45mm uses 24mm connectors" - "Apple Watch Ultra uses 26mm connectors"

Règles de ton éditoriales

L'article ne doit jamais recommander de porter les montres sans Smartlet. Toute situation contextuelle (dîner formel, réunion officielle, etc.) doit être résolue par un conseil de positionnement ou de discrétion, pas par le retrait du Smartlet.

Exemples corrects : - "En contexte formel, positionner la smartwatch plus haut sur l'avant-bras sous la manchette garde la montre mécanique comme seule visible." - "Tighten the cuff, position the smartwatch further toward the forearm for full discretion."

Exemples à ne jamais écrire : - "Wear [watch] solo" - "Formal settings call for [watch] alone" - "Remove the smartwatch for formal occasions"

Ton général : positif, aspirationnel. Éviter les formulations négatives ou décourageantes :

À éviter À préférer
"Week one was uncomfortable" "Week one was a revelation"
"The fear of metal-on-metal contact" "A natural attentiveness that collectors already bring"
"Drawbacks and edge cases" "Real-world context: what to expect"
"Constraint" (batterie) "Ritual" / "second nature"
"Skin irritation" comme drawback "A quick strap swap solves it in 90 seconds"
"Wrist fatigue" "The setup becomes natural after three weeks"

Ne jamais repasser l'article dans Undetectable après des retouches éditoriales ciblées. Les corrections manuelles sont définitives.

Espacement post-réinsertion

Après réinsertion, corriger les espaces collés après points :

new_t = re.sub(r'([a-z0-9])\.([A-Z][a-z])', lambda m: m.group(1)+'. '+m.group(2), t)

Fichiers de référence

  • references/valid-slugs.md - Tous les slugs valides du corpus
  • references/link-strategy.md - Stratégie nofollow/dofollow
  • references/scrape-patterns.md - Patterns scrape complets

Paramètres Shopify (rappel)

  • Blog : smartlet.io/blogs/magazine/
  • Author : David Ohayon
  • Template : article standard Motion theme
  • Pas de H1 (le titre est géré par Shopify)
  • Uploader uniquement le contenu intérieur du <div class="article-wrap">