Documenti

Generatore di offerte

Offerte in Word e PDF, con bozza di email pronta.

Trasforma pochi dati in un'offerta commerciale completa, identica in .docx e PDF, con numero di riferimento, validita, condizioni di pagamento e tono neutro, e archivia entrambi i file come bozza di email pronta all'invio.

Versione
1.0.0
Aggiornato
Estensione
9 capitoli · circa 5 min di lettura
Formato
SKILL.md (Markdown, tedesco)
Licenza
CC BY-NC-ND 4.0

Quando entra in gioco questo skill

Offerte in Word e PDF, con bozza di email pronta.

OffertaPreventivoPDFWord

Che cosa contiene

  1. 01Zweck
  2. 02Workflow
  3. 03Checkliste (vor dem Erstellen klären, falls nicht bekannt)
  4. 04Standardwerte (nicht nachfragen, ausser der Nutzer widerspricht)
  5. 05Struktur der Offerte (immer diese Reihenfolge, in Word und PDF identisch)
  6. 06Dateien in diesem Skill
  7. 07Technische Hinweise: Word
  8. 08Technische Hinweise: PDF
  9. 09E-Mail-Entwurf mit Anhängen (Outlook / Microsoft 365)

Istruzioni complete

Il contenuto completo del file, identico al download. Redatto in tedesco.

Offerte-Generator

Zweck

Aus wenigen Eckdaten eine vollständige Geschäftsofferte erzeugen, in Word und PDF identisch aufgebaut, und als E-Mail-Entwurf versandbereit ablegen. Neutrale, klare Business-Korrespondenz, keine Marketingsprache und keine feste Markenstimme. Der Skill ist bewusst allgemein gehalten: er passt für Vorträge, Workshops, Beratungsmandate, Implementierungsprojekte oder jede andere Dienstleistung, unabhängig von Branche oder Firma.

Workflow

  1. Angaben sammeln. Checkliste unten durchgehen. Fehlt etwas Entscheidungsrelevantes (Empfänger, Leistung, Preis), kurz nachfragen statt zu raten. Für alles andere gelten die Standardwerte weiter unten, ohne Rückfrage.
  2. Daten strukturieren. Als JSON nach dem Schema in assets/schema_beispiel.json ablegen, z.B. unter /tmp/offerte_data.json.
  3. Beide Dateien erzeugen:
    • PDF: python3 scripts/generate_pdf.py <data.json> <output.pdf>
    • Word: node scripts/generate_docx.js <data.json> <output.docx>
  4. Kontrolle. Bei Layoutzweifeln PDF als Bild rendern (pdftoppm -jpeg -r 100 output.pdf page) und ansehen, bevor die Datei rausgeht. Angaben gegen die Checkliste abgleichen.
  5. E-Mail-Entwurf anlegen. Über Zapier den passenden Microsoft-Mail-Connector nutzen (Outlook oder Office 365, siehe Abschnitt unten), beide Dateien als Anhang. Betreff: "Offerte: [Titel]". Begleittext kurz halten (2-3 Sätze), Inhalt der Offerte nicht in der Mail wiederholen.
  6. Nie automatisch versenden. Der Entwurf ist das Ergebnis. Nur wenn der Nutzer im selben Auftrag ausdrücklich sagt, dass sofort verschickt werden soll ("schick das direkt ab", "sende es jetzt"), den Entwurf danach tatsächlich versenden.

Checkliste (vor dem Erstellen klären, falls nicht bekannt)

FeldHerkunft
Absender: Name, Firma, Adresse, evtl. E-Mail/Telefonvom Nutzer, immer erfragen, nie annehmen
Empfänger: Firma, Ansprechperson, Adressevom Nutzer
Leistungsbeschrieb: Art, Umfang, Dauer, Ort/Formatvom Nutzer
Preis pro Position + Totalvom Nutzer
Referenznummer + Datumselbst generieren: OFF-JJJJ-NN, laufende Nummer falls bekannt, sonst grob geschätzt
GültigkeitStandard: 30 Tage ab Ausstellungsdatum
ZahlungskonditionenStandard unten, ausser Nutzer gibt andere vor
Bezug/Kontext (Gespräch, Anfrage, Datum)vom Nutzer, für den Einleitungssatz

Standardwerte (nicht nachfragen, ausser der Nutzer widerspricht)

  • Zahlungskonditionen: "Zahlbar netto 30 Tage nach Rechnungsstellung. Preise verstehen sich exkl. gesetzlicher MWSt."
  • Gültigkeit: "Dieses Angebot ist gültig bis zum oben genannten Datum."
  • Ton: neutrale, klare Business-Sprache, kurze bis mittellange Sätze, keine Füllwörter, kein Marketing-Ton.
  • Typografie: gerade Anführungszeichen ("" statt «»), keine Halbgeviertstriche, ä/ö/ü direkt schreiben, ss statt ß, Tausendertrennzeichen mit Apostroph (7'600.00).
  • Zahlenformat: Preise immer mit zwei Nachkommastellen, Währung vor dem Betrag (CHF 7'600.00).

Absender-Daten nie aus früheren Läufen übernehmen oder erfinden. Jede Offerte braucht ihre eigenen, vom Nutzer bestätigten Angaben.

Struktur der Offerte (immer diese Reihenfolge, in Word und PDF identisch)

  1. Briefkopf: Absender links, Offerte-Nr./Datum/Gültigkeit rechts, Trennlinie darunter
  2. Empfänger-Adresse
  3. Betreffzeile (fett)
  4. Anrede
  5. Einleitungssatz: Bezug auf Anfrage oder Gespräch, ein bis zwei Sätze, kein Marketing
  6. Leistungstabelle: Position, Beschreibung, Menge, Einzelpreis, Total
  7. Summenblock: Zwischentotal, Total (fett), MWSt-Hinweis
  8. Zahlungs- und Gültigkeitsbedingungen
  9. Abschlusssatz, Grussformel, Unterschrift

Neue Positionen in line_items erweitern die Tabelle automatisch; das Schema ist nicht auf eine feste Anzahl Zeilen festgelegt.

Dateien in diesem Skill

DateiZweck
assets/offerte_template.html.j2HTML/CSS-Vorlage (A4, WeasyPrint-tauglich, Jinja2-Platzhalter)
assets/schema_beispiel.jsonBeispiel-Datensatz, zeigt das erwartete JSON-Schema vollständig
scripts/generate_pdf.pyfüllt die HTML-Vorlage mit den Daten und rendert sie zu PDF
scripts/generate_docx.jsbaut dasselbe Dokument nativ in Word, gleiche Struktur und Zahlen

Technische Hinweise: Word

docx (npm) ist im Environment vorinstalliert, kein npm install nötig. Tabellenspalten brauchen sowohl columnWidths auf der Tabelle als auch width auf jeder Zelle (beide WidthType.DXA), sonst bricht die Darstellung in Google Docs. Zellschattierung nur mit ShadingType.CLEAR, nie SOLID. Nach dem Erzeugen zur Kontrolle rendern:

python3 /mnt/skills/public/docx/scripts/office/soffice.py --headless --convert-to pdf output.docx
pdftoppm -jpeg -r 100 output.pdf page

Technische Hinweise: PDF

WeasyPrint und Jinja2 werden vom Skript bei Bedarf automatisch installiert (ensure_dependencies() in generate_pdf.py), da das Sandbox-Environment zwischen Sessions zurückgesetzt wird. Bei manueller Prüfung:

python3 -c "import weasyprint" || pip install weasyprint --break-system-packages

CSS bewusst auf WeasyPrint-Kompatibilität gehalten: @page-Regel mit @bottom-right für die Seitenzahl, kein inset-Shorthand für kritische Positionierung, normaler Dokumentfluss statt absoluter Positionierung (anders als im ebook-html-pdf-Skill, das ist dort nötig wegen fixer Seiten, hier nicht).

E-Mail-Entwurf mit Anhängen (Outlook / Microsoft 365)

Es gibt keinen dedizierten Outlook-Connector in diesem Environment, der Versand läuft über den generischen Zapier-Connector. Zapier führt zwei getrennte Microsoft-Mail-Apps mit unterschiedlichen selected_api-Werten:

App in Zapierselected_apiFür
Microsoft OutlookMicrosoftOutlookCLIAPIPersönliches Outlook/Outlook.com-Postfach
Microsoft Office 365MicrosoftOffice365CLIAPIGeschäftliches M365-Postfach (Business/Enterprise, kein Outlook.com)

Bei Unklarheit kurz fragen, welches der beiden zutrifft, statt zu raten. Die beiden Apps haben unterschiedliche Actions und Parameter.

Vorgehen bei jedem Lauf (Action-Namen und Parameter nie auswendig annehmen, immer live nachschlagen):

  1. Prüfen, ob die passende App schon aktiv ist: Zapier:inspect_zapier_actions mit selected_api der gewählten App.
  2. Falls nicht aktiv: Zapier:discover_zapier_actions mit dem App-Namen, dann Zapier:enable_zapier_action mit dem gefundenen selected_api. Das liefert bei Bedarf auch den Autorisierungslink für den Nutzer.
  3. Mit Zapier:inspect_zapier_actions (gefiltert auf die Draft-/Compose-Action, z.B. Suche nach "draft" oder "compose" im Aktionsnamen) das exakte Parameterschema holen, inkl. wie Anhänge übergeben werden (Feldname, Format, ob Base64 oder URL erwartet wird).
  4. PDF und Word als Anhang vorbereiten, Format gemäss Schema aus Schritt 3 (typischerweise Base64):
    import base64
    pdf_content = base64.b64encode(open("output.pdf", "rb").read()).decode()
    docx_content = base64.b64encode(open("output.docx", "rb").read()).decode()
    
  5. Zapier:execute_zapier_write_action mit der in Schritt 3 gefundenen action, selected_api und den passenden Parametern: Empfänger, Betreff ("Offerte: [Titel]"), kurzer Begleittext (2-3 Sätze, Inhalt der Offerte nicht wiederholen), beide Anhänge.

Wenn die gewählte App bzw. der Nutzer-Account mehrere Verbindungen hat (Zapier:list_zapier_connections), im Zweifel nachfragen statt die erste zu nehmen.

Der Entwurf landet im Postfach des Nutzers und ist bereit zum Absenden. Kein automatischer Versand, siehe Workflow-Schritt 6. Falls die verfügbare Action keinen reinen "Entwurf"-Modus kennt, sondern nur direktes Senden: das dem Nutzer explizit sagen und vor dem Versand bestätigen lassen, statt ungefragt zu senden.


Zuletzt aktualisiert: 02.09.2026 · Version 1.0.0 · skills.fragroger.ai

Lizenz: CC BY-NC-ND 4.0 (Namensnennung – nicht kommerziell – keine Bearbeitungen). Nutzung nur für den Eigengebrauch. https://creativecommons.org/licenses/by-nc-nd/4.0/deed.de

Passo dopo passo: scaricare, caricare, adattare

Nessuna installazione, nessuna cartella, nessun terminale. Scarichi il file, lo carichi nel tuo strumento di chat e lo adatti con un prompt.

  1. Clicca sopra su «SKILL.md». Ricevi un singolo file markdown. Esiste anche un pacchetto completo con i template.

Gli skill sono testo semplice: adatta tono, lingua, pubblico e formato di output per uso personale. La licenza non consente di ripubblicare versioni modificate. FAQ su adattamento, uso personale e ripubblicazione

Licenza e uso

Questo skill e pubblicato con licenza Creative Commons BY-NC-ND 4.0 – attribuzione, nessun uso commerciale e nessuna opera derivata. E pensato esclusivamente per uso personale: scaricalo, usalo nel tuo ambiente di lavoro e condividilo citando la fonte. Non sono consentiti rivendita, redistribuzione come prodotto proprio, sfruttamento commerciale o pubblicazione di versioni modificate. Per licenze commerciali, mettiti in contatto.