Documentos

Generador de presupuestos

Presupuestos en Word y PDF, con borrador de correo listo.

Convierte unos pocos datos en un presupuesto comercial completo, identico en .docx y PDF, con numero de referencia, validez, condiciones de pago y un tono neutro, y deja ambos archivos como borrador de correo listo para enviar.

Paquete completo (.skill)
Version
1.0.0
Actualizado
Extension
9 capitulos · aprox. 5 min de lectura
Formato
SKILL.md (Markdown, aleman)
Licencia
CC BY-NC-ND 4.0

Cuando actua este skill

Presupuestos en Word y PDF, con borrador de correo listo.

PresupuestoOfertaPDFWord

Que 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)

Instrucciones completas

El contenido completo del archivo, identico a la descarga. Redactado en aleman.

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

Paso a paso: descargar, subir, adaptar

Sin instalacion, sin carpetas, sin terminal. Descarga el archivo, subelo a la herramienta de chat que prefieras y adaptalo con un prompt.

  1. Haz clic arriba en «SKILL.md». Recibes un unico archivo markdown. Ademas existe un paquete completo con plantillas.

Los skills son texto plano: adapta tono, idioma, publico y formato de salida para tu uso propio. La licencia no permite republicar versiones modificadas. FAQ sobre adaptacion, uso propio y republicacion

Licencia y uso

Este skill se publica bajo Creative Commons BY-NC-ND 4.0 – atribucion, sin uso comercial y sin obras derivadas. Esta pensado unicamente para uso propio: descargalo, usalo en tu entorno de trabajo y compartelo citando la fuente. No se permiten la reventa, la redistribucion como producto propio, la explotacion comercial ni la publicacion de versiones modificadas. Para licencias comerciales, ponte en contacto.