com um clique
holded-invoices
// Process invoice PDFs/emails: extract vendor + date, generate normalized filename, optionally archive to Drive, and email the PDF to the right Holded inbox.
// Process invoice PDFs/emails: extract vendor + date, generate normalized filename, optionally archive to Drive, and email the PDF to the right Holded inbox.
Use the private LearnWorlds CLI to inspect DevExpert Academy users, find students by email, list their enrolled courses/products, look up products, and perform safe enrollment workflows. Trigger when Antonio asks what courses a student has in LearnWorlds or academia.devexpert.io, whether someone belongs to the current or next AI Expert edition, or to use the LearnWorlds/academy CLI.
Genera la newsletter semanal de DevExpert recopilando contenido de X, YouTube, PostFlow y bookmarks. Crea borrador en Listmonk para revisión.
End-to-end YouTube publishing workflow using ordered scripts: prepare/concat video, upload draft, transcribe with Parakeet, generate copy with the calling model, optionally prepare English dubbing assets, render thumbnails, update YouTube metadata, then schedule socials (PostFlow) 15 minutes after publish.
Enforce Antonio's real Spanish social voice when drafting or rewriting X, LinkedIn, article teaser, and newsletter intro copy. Use whenever copy must sound like Antonio and avoid obvious AI writing.
Converts a Markdown file to a styled PDF with DevExpert branding (logo in bottom-right corner). Use when asked to generate a PDF from a Markdown document, or when any DevExpert proposal/document needs to be exported as PDF.
Manage inbox email. Uses the inbox script and stores metadata (ids) to open or archive messages later.
| name | holded-invoices |
| description | Process invoice PDFs/emails: extract vendor + date, generate normalized filename, optionally archive to Drive, and email the PDF to the right Holded inbox. |
Goal: send invoice/receipt PDFs to Holded's inbox email after normalizing their filenames. Prefer direct Gmail delivery via gog; the old n8n webhook is legacy fallback only.
Configure defaults in ~/.config/skills/config.json under holded_invoices:
company_emailfreelancer_emailsender_emaildrive_inbox_folder_id (optional, archives a copy before sending)webhook (legacy fallback)Example:
{
"holded_invoices": {
"company_email": "empresa@holdedbox.com",
"freelancer_email": "autonomo@holdedbox.com",
"sender_email": "sender@example.com",
"drive_inbox_folder_id": "drive-folder-id"
}
}
Filename convention:
<company>-<YYYY>-<MM>.pdfgoogle).scripts/invoice-extract.js --pdf /path/to/invoice.pdf
{ vendor, vendorSlug, year, month }scripts/holded-send.sh --pdf /path/to/invoice.pdf --email <holdedbox> --nombre google-2026-01.pdf
gog gmail send with the configured sender_email or --from.drive_inbox_folder_id or --drive-folder is set, first uploads the normalized PDF to that Drive folder.--dry-run before changing the workflow or debugging auth.scripts/holded-upload.sh --pdf /path/to/invoice.pdf --email <holdedbox> --nombre google-2026-01.pdf
webhook config or --webhook.Downloads the first PDF attachment, suggests a filename, and (optionally) uploads.
scripts/holded-from-gmail.sh --account <gmail-account> --message-id <id> --type empresa|autonomo
--email-empresa, --email-autonomo, --from, and/or --drive-folder.--webhook forces the legacy n8n path.Flags:
--yes skip confirmation and uploadWhen reviewing an email thread with a PDF invoice:
empresa or autonomo.invoice-extract.js to infer vendor + year/month.holded-send.sh so Drive/Gmail return observable output.If extraction fails, ask for vendor + date and continue.