Creează, programează, modifică, aprobă și publică postări pe social media (Facebook, Instagram, TikTok etc.) pentru restaurant. Folosește la „fă o postare", „programează pe Facebook mâine la 7", „postează oferta de azi pe Instagram", „modifică postarea", „aprobă postarea", „postează acum".
Instrucciones de origen · Vista previa de solo lectura
name
programeaza-postare
description
Creează, programează, modifică, aprobă și publică postări pe social media (Facebook, Instagram, TikTok etc.) pentru restaurant. Folosește la „fă o postare", „programează pe Facebook mâine la 7", „postează oferta de azi pe Instagram", „modifică postarea", „aprobă postarea", „postează acum".
Programează o postare social media
Vezi ce conturi sunt conectate: list_social_accounts (opțional pe brandId). Dacă nu există niciun cont activ pe platforma cerută, conectează-l rapid prin MCP:
genereaza_link_conectare(platforma) — platforma ∈ facebook/tiktok/youtube/linkedin/google_business (opțional brandId). Întoarce un link de conectare (OAuth) pe care utilizatorul îl deschide în browserul LUI, logat în contul care administrează pagina; linkul expiră în ~10 minute, deci să-l deschidă imediat — conectarea se finalizează automat și în siguranță. După ce confirmă, verifică cu verifica_integrare.
Instagram NU are link separat: după ce Facebook e conectat, leagă-l cu conecteaza_instagram_din_facebook (opțional brandId). Cere pagina Facebook cu permisiuni Instagram + un cont IG Business/Creator asociat; la eroare transmite mesajul exact.
Alternativ, dă link la pagina de conturi cu gaseste_in_aplicatie("conturi social media").
Compune textul postării împreună cu utilizatorul (sau propune 2-3 variante dacă ți-o cere). Ține cont de brand și de ce vrea să promoveze.
IMPORTANT — fluxul de aprobare: orice postare creată prin această conexiune intră în „În așteptare aprobare" și NU se publică automat. Se publică la ora programată doar după ce e aprobată. Spune-i clar utilizatorului:
„Am programat postarea pe Facebook+Instagram pentru 15 iunie, ora 19:00. Apare cu «În așteptare aprobare» — se publică la oră doar după ce o aprobi (din pagina Social Media → Aprobă, sau îmi spui mie să o aprob)." + link (gaseste_in_aplicatie("social media")).
Aprobare și publicare
Aprobă / respinge:approve_social_post(postId, approvalStatus: "approved" | "rejected", approvalNote?). approved → postarea devine eligibilă și se publică la ora programată. rejected → nu se va publica. Confirmă cu utilizatorul înainte de a aproba în numele lui.
Ce așteaptă aprobare:list_social_posts(approvalStatus: "pending") — dacă o postare programată „nu s-a publicat", de cele mai multe ori e pentru că așteaptă aprobare aici.
Postează ACUM (fără să aștepte ora): publish_social_post(postId, confirm: true). Postarea trebuie să fie aprobată întâi. ⚠ Publicare publică ireversibilă — confirmă cu utilizatorul, apoi trimite confirm: true. Util și înainte de a promova o postare (boost-ul cere o postare deja publicată — vezi skill-ul gestioneaza-reclame).
Reguli
Întotdeauna confirmă data/ora + platformele înainte de programare; și niciodată nu aproba/publici fără acordul utilizatorului.
Dacă utilizatorul dă o oră fără fus, presupune Europe/Bucharest și spune ce ai presupus.
Modifică o postare existentă:update_social_post(postId, ...) cu DOAR câmpurile de schimbat (content/scheduledAt/platforms/postType/firstComment/mediaUrls/altText). scheduledAt: null o face ciornă. NU șterge și recrea (recrearea îi schimbă ID-ul). Doar postări nepublicate.
Duplică o postare:duplicate_social_post(postId, platforms?, scheduledAt?) — „fă aceeași postare și pe Instagram" / „repostează săptămâna viitoare". Copia e tot în așteptare aprobare.
Mai multe postări odată:bulk_schedule_social_posts(posts) — posts = listă (max 100), fiecare cu content + platforms și opțional scheduledAt/mediaUrls/postType/firstComment/altText. Toate intră în așteptare aprobare. Import parțial: rândurile valide se creează chiar dacă unele dau eroare.
Diversitatea conținutului (avertisment la programare): la programare (și una câte una, și în masă), sistemul compară postarea cu cele deja programate/publicate în zilele apropiate. Dacă tema se repetă prea des sau frazele sunt aproape identice cu postări recente, răspunsul vine cu un AVERTISMENT — postarea se creează totuși (nu blochează). Spune-i utilizatorului ce a semnalat și propune o variație de temă/formulare; poate continua așa, dar în cunoștință de cauză.
Îngroșarea textului: Facebook și Instagram nu au text formatat — îngroșarea se obține doar cu caractere speciale. Scrie cifrele NORMAL (10:00, 0722 123 456) și marchează cu **text** ce vrei îngroșat; conversia o face sistemul, determinist. Diacriticele (ă â î ș ț) se îngroașă și ele — scrie-le normal în cuvânt și marchează cuvântul întreg, restul e treaba sistemului. Nu compune tu literele îngroșate caracter cu caracter: acolo se corup orele și numerele de telefon, de aceea cifrele rămân mereu normale. Dacă utilizatorul vrea un accent și mai puternic, propune-i scriere cu MAJUSCULE, un rând separat cu emoji, sau textul pus într-o imagine.
Anulare / ștergere:cancel_social_post(postId) o marchează anulată (rămâne în listă); o scoate definitiv din calendar. Doar postări nepublicate.
delete_social_post(postId)
Video / Reel / Story / Carusel: pune URL-ul public al clipului în mediaUrls + postType: "reel" (sau "story" pentru story video). Story video acceptă acum până la 60 de secunde (nu 30). Videoclipurile mari se comprimă automat înainte de upload — publicarea nu mai pică pe fișiere mari. Carusel = mai multe imagini în mediaUrls + postType: "carousel".
Imagine din material grafic propriu: dacă vrei să atașezi un afiș/flyer creat în studio (skill materiale-grafice), exportă-l ca imagine din studio și încarc-o în Biblioteca Media; apoi folosește URL-ul ei în mediaUrls. Imaginile deja încărcate se găsesc cu browse_brand_media.
Hashtag-uri reutilizabile:list_hashtag_groups, create_hashtag_group, update_hashtag_group, delete_hashtag_group — seturi de hashtag-uri pe care le inserezi în content.
Google Business: pentru postări pe fișa Google (Maps/Search) folosește gbp_create_post (vezi skill-ul SEO/Maps) — confirmă conținutul, apare public.
Vezi ce e programat: list_social_posts (filtrabil pe status: scheduled/draft/published și pe approvalStatus: pending/approved/rejected).
Vezi ce a mers bine după publicare: get_social_top_posts(metric: "engagement" | "reach" | "views", windowDays?, platform?) pentru clasament și get_social_post_performance(postId?) pentru detaliu. Acestea citesc LIVE din Meta pentru Facebook/Instagram; dacă Meta nu întoarce insights, spune „indisponibil" cu motivul, nu zero.
Detalii concept în knowledge/marketing-social.md.
Necesită scriere pe modulul „Marketing & Social Media"; dacă lipsește, îndrumă spre portal Hub → Acces AI.