this is general voical hygiene for every voice patient can suggest any changes and also i want to add some relevant images or illustrations or icons to look more attractive

Reading File
Reading File
Reading File
Running Command

cd /home/daytona/workspace/attachments/8d25321e-7bd6-4913-bae6-6281e0e6153d && pandoc --track-changes=all Vocal.docx -o /home/daytona/workspace/vocal_content.md 2>&1 && echo "Done"

Searching Images

vocal hygiene tips illustration

Reading File
Searching Images

vocal cord anatomy larynx diagram

Searching Images

water hydration drinking health illustration

Reading File
Searching Images

no smoking tobacco cigarette health warning

Searching Images

sleep rest healthy lifestyle exercise meditation

Generating Image

A clean, friendly medical infographic header illustration showing a person speaking gently with a glowing throat area and musical notes, with a stethoscope and microphone icon, teal and orange color scheme, flat design style, suitable for a patient education document titled "Vocal Hygiene Checklist"

Generating Image

Simple flat design icon illustration showing a person speaking calmly at a normal volume, with a "no shouting" symbol (crossed megaphone), and a "no whispering" symbol. Include a small icon of a person taking a voice break. Clean teal and orange colors, white background, patient-friendly educational style

Generating Image

Flat design illustration of a glass of warm water with steam, water drops, and a steam inhaler/nebulizer device. A crossed-out coffee cup icon indicating to avoid caffeine. Clean teal blue colors, white background, simple patient education icon style

Generating Image

Flat design patient education illustration showing: a crossed-out cigarette, crossed-out alcohol bottle, crossed-out dusty/smoky environment icon. Clean simple icons with red prohibition symbols. White background, teal and red color scheme, friendly educational style for voice care brochure

Generating Image

Flat design illustration for acid reflux precautions: showing a clock indicating waiting 2-3 hours after eating before bedtime, a plate with spicy food crossed out, a crossed-out coffee cup and chai/tea, a person sleeping with head elevated. Clean medical education style, orange and teal colors, white background

Generating Image

Flat design healthy lifestyle icons: a person sleeping peacefully with "8 hours" label, a person jogging/exercising, a person meditating with calm expression. Simple clean icons, teal and green color scheme, white background, patient-friendly educational poster style

Running Command

mkdir -p /home/daytona/workspace/vocal-hygiene && ls /home/daytona/workspace/vocal-hygiene/

Writing File

~/vocal-hygiene/build.js

const {
  Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell, ImageRun,
  AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType,
  LevelFormat, VerticalAlign, PageNumber, UnderlineType
} = require('docx');
const fs = require('fs');
const { execSync } = require('child_process');

// Image URLs
const imageUrls = [
  "https://cdn.orris.care/image-gen/0c8fa0d35e5243a98dffbbc4c6d122a5.png",  // header
  "https://cdn.orris.care/image-gen/3bcf35cc9b984c67b743aab14fff3cbf.png",  // voice use
  "https://cdn.orris.care/image-gen/44193fdc0a4f4f95ac72ef2eebb979ea.png",  // hydrate
  "https://cdn.orris.care/image-gen/51869cb43a904b4eb72d518e66e207b5.png",  // irritants
  "https://cdn.orris.care/image-gen/290915b53d6142bdac5a8235ae4d84a2.png",  // reflux
  "https://cdn.orris.care/image-gen/fc399555ab8a4b6c931c2c37b347368f.png",  // stay healthy
];

console.log("Fetching images...");
const imgs = JSON.parse(execSync(
  `node /home/daytona/skills/shared/scripts/fetch_images.js ${imageUrls.map(u => `"${u}"`).join(" ")}`
).toString());

console.log("Images fetched:", imgs.map(i => i.error || "OK"));

function imgBuffer(i) {
  return Buffer.from(imgs[i].base64.split(",")[1], "base64");
}

// Color palette
const TEAL = "007B8A";
const TEAL_LIGHT = "E0F4F7";
const ORANGE = "E07B39";
const ORANGE_LIGHT = "FFF0E5";
const WHITE = "FFFFFF";
const DARK = "2C3E50";
const GRAY_BG = "F5F5F5";

// Helpers
function sectionHeader(title, emoji, bgColor) {
  return new Paragraph({
    spacing: { before: 200, after: 100 },
    shading: { type: ShadingType.SOLID, color: bgColor || TEAL, fill: bgColor || TEAL },
    children: [
      new TextRun({
        text: `  ${emoji}  ${title}`,
        bold: true,
        size: 26,
        color: WHITE,
        font: "Arial",
      }),
    ],
  });
}

function bulletItem(text, indent = 720) {
  return new Paragraph({
    numbering: { reference: "bullets", level: 0 },
    spacing: { before: 60, after: 60 },
    children: [
      new TextRun({ text, font: "Arial", size: 22, color: DARK }),
    ],
  });
}

function tipBox(text) {
  return new Paragraph({
    spacing: { before: 80, after: 80 },
    indent: { left: 360 },
    shading: { type: ShadingType.SOLID, color: ORANGE_LIGHT, fill: ORANGE_LIGHT },
    children: [
      new TextRun({ text: "💡 Tip: ", bold: true, font: "Arial", size: 20, color: ORANGE }),
      new TextRun({ text, font: "Arial", size: 20, color: DARK }),
    ],
  });
}

function spacer(pts = 120) {
  return new Paragraph({ spacing: { before: pts, after: 0 }, children: [] });
}

function centeredImage(idx, w, h, alt) {
  return new Paragraph({
    alignment: AlignmentType.CENTER,
    spacing: { before: 80, after: 80 },
    children: [
      new ImageRun({
        type: "png",
        data: imgBuffer(idx),
        transformation: { width: w, height: h },
        altText: { title: alt, description: alt, name: alt },
      }),
    ],
  });
}

const doc = new Document({
  numbering: {
    config: [
      {
        reference: "bullets",
        levels: [{
          level: 0,
          format: LevelFormat.BULLET,
          text: "\u2714",
          alignment: AlignmentType.LEFT,
          style: {
            run: { font: "Arial", size: 22, color: TEAL },
            paragraph: { indent: { left: 720, hanging: 360 } }
          }
        }]
      }
    ]
  },
  styles: {
    default: {
      document: { run: { font: "Arial", size: 22, color: DARK } }
    },
    paragraphStyles: [
      {
        id: "Heading1", name: "Heading 1", basedOn: "Normal", next: "Normal", quickFormat: true,
        run: { size: 36, bold: true, font: "Arial", color: TEAL },
        paragraph: { spacing: { before: 300, after: 200 }, outlineLevel: 0 }
      },
      {
        id: "Heading2", name: "Heading 2", basedOn: "Normal", next: "Normal", quickFormat: true,
        run: { size: 28, bold: true, font: "Arial", color: TEAL },
        paragraph: { spacing: { before: 200, after: 120 }, outlineLevel: 1 }
      }
    ]
  },
  sections: [{
    properties: {
      page: {
        margin: { top: 720, bottom: 720, left: 900, right: 900 }
      }
    },
    children: [
      // ─── HEADER IMAGE ───
      centeredImage(0, 480, 180, "Vocal Hygiene Header"),

      // ─── TITLE ───
      new Paragraph({
        alignment: AlignmentType.CENTER,
        spacing: { before: 100, after: 60 },
        children: [
          new TextRun({
            text: "VOCAL HYGIENE",
            bold: true, font: "Arial", size: 48, color: TEAL,
          })
        ]
      }),
      new Paragraph({
        alignment: AlignmentType.CENTER,
        spacing: { before: 0, after: 200 },
        children: [
          new TextRun({
            text: "Your Daily Checklist for a Healthy Voice",
            font: "Arial", size: 24, color: ORANGE, italics: true,
          })
        ]
      }),

      // divider line
      new Paragraph({
        border: { bottom: { style: BorderStyle.SINGLE, size: 6, color: TEAL } },
        spacing: { before: 0, after: 200 },
        children: []
      }),

      // ─── INTRO TEXT ───
      new Paragraph({
        alignment: AlignmentType.CENTER,
        spacing: { before: 0, after: 200 },
        shading: { type: ShadingType.SOLID, color: TEAL_LIGHT, fill: TEAL_LIGHT },
        children: [
          new TextRun({
            text: "Your voice is a valuable tool. Follow these simple guidelines every day to keep your vocal cords healthy, prevent strain, and maintain a strong, clear voice.",
            font: "Arial", size: 21, color: DARK,
          })
        ]
      }),

      spacer(100),

      // ════════════════════════════════════════════
      // SECTION 1: VOICE USE
      // ════════════════════════════════════════════
      sectionHeader("VOICE USE", "🎙️", TEAL),
      spacer(80),

      // image + bullets side by side via table
      new Table({
        width: { size: 9026, type: WidthType.DXA },
        columnWidths: [2200, 6826],
        borders: {
          top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
          left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
          insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
        },
        rows: [new TableRow({
          children: [
            new TableCell({
              width: { size: 2200, type: WidthType.DXA },
              verticalAlign: VerticalAlign.CENTER,
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new ImageRun({
                  type: "png", data: imgBuffer(1),
                  transformation: { width: 160, height: 130 },
                  altText: { title: "Voice Use", description: "Voice Use icons", name: "VoiceUse" }
                })]
              })]
            }),
            new TableCell({
              width: { size: 6826, type: WidthType.DXA },
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [
                bulletItem("Avoid screaming or yelling — use amplification in large spaces"),
                bulletItem("Do not whisper — it strains your vocal cords more than normal speech"),
                bulletItem("Avoid habitual throat clearing; try a silent swallow or sip of water instead"),
                bulletItem("Reduce speaking volume in noisy environments (cafes, traffic)"),
                bulletItem("Take short vocal breaks (5–10 min every hour), not complete voice rest"),
                bulletItem("Use a relaxed, easy onset when starting speech"),
              ]
            })
          ]
        })]
      }),

      tipBox("If you must raise your voice, reduce how long you speak — not just how loud."),
      spacer(120),

      // ════════════════════════════════════════════
      // SECTION 2: HYDRATE
      // ════════════════════════════════════════════
      sectionHeader("HYDRATE", "💧", "2980B9"),
      spacer(80),

      new Table({
        width: { size: 9026, type: WidthType.DXA },
        columnWidths: [2200, 6826],
        borders: {
          top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
          left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
          insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
        },
        rows: [new TableRow({
          children: [
            new TableCell({
              width: { size: 2200, type: WidthType.DXA },
              verticalAlign: VerticalAlign.CENTER,
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new ImageRun({
                  type: "png", data: imgBuffer(2),
                  transformation: { width: 160, height: 130 },
                  altText: { title: "Hydration", description: "Hydration icons", name: "Hydrate" }
                })]
              })]
            }),
            new TableCell({
              width: { size: 6826, type: WidthType.DXA },
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [
                bulletItem("Drink 6–8 glasses of water daily — warm or room temperature is best"),
                bulletItem("Sip water regularly throughout the day rather than large amounts at once"),
                bulletItem("Perform steam inhalation for 10–15 minutes to directly moisturize vocal cords"),
                bulletItem("Avoid caffeine (tea, coffee, energy drinks) — it dehydrates the vocal cords"),
                bulletItem("Avoid alcohol — it has a drying and irritating effect on the larynx"),
                bulletItem("Breathe through your nose (not mouth) to humidify incoming air"),
              ]
            })
          ]
        })]
      }),

      tipBox("Vocal cords vibrate best when well hydrated — think of them like lips: they crack when dry."),
      spacer(120),

      // ════════════════════════════════════════════
      // SECTION 3: AVOID VOICE IRRITANTS
      // ════════════════════════════════════════════
      sectionHeader("AVOID VOICE IRRITANTS", "🚫", "C0392B"),
      spacer(80),

      new Table({
        width: { size: 9026, type: WidthType.DXA },
        columnWidths: [2200, 6826],
        borders: {
          top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
          left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
          insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
        },
        rows: [new TableRow({
          children: [
            new TableCell({
              width: { size: 2200, type: WidthType.DXA },
              verticalAlign: VerticalAlign.CENTER,
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new ImageRun({
                  type: "png", data: imgBuffer(3),
                  transformation: { width: 160, height: 130 },
                  altText: { title: "Irritants", description: "Voice irritant icons", name: "Irritants" }
                })]
              })]
            }),
            new TableCell({
              width: { size: 6826, type: WidthType.DXA },
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [
                bulletItem("Do not smoke — smoking causes chronic inflammation and vocal cord changes"),
                bulletItem("Avoid chewing tobacco, betel nut, and pan masala"),
                bulletItem("Minimize exposure to smoke, dust, fumes, and polluted air"),
                bulletItem("Avoid toxic cleaning products or chemicals without proper ventilation"),
                bulletItem("Limit or avoid alcohol consumption"),
                bulletItem("If you must be in a dusty environment, wear a mask and rinse your mouth/throat afterward"),
              ]
            })
          ]
        })]
      }),

      tipBox("Even second-hand smoke irritates vocal cord tissue — avoid smoky environments."),
      spacer(120),

      // ════════════════════════════════════════════
      // SECTION 4: REFLUX PRECAUTIONS
      // ════════════════════════════════════════════
      sectionHeader("REFLUX PRECAUTIONS", "🍽️", ORANGE),
      spacer(80),

      new Table({
        width: { size: 9026, type: WidthType.DXA },
        columnWidths: [2200, 6826],
        borders: {
          top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
          left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
          insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
        },
        rows: [new TableRow({
          children: [
            new TableCell({
              width: { size: 2200, type: WidthType.DXA },
              verticalAlign: VerticalAlign.CENTER,
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new ImageRun({
                  type: "png", data: imgBuffer(4),
                  transformation: { width: 160, height: 130 },
                  altText: { title: "Reflux", description: "Reflux precaution icons", name: "Reflux" }
                })]
              })]
            }),
            new TableCell({
              width: { size: 6826, type: WidthType.DXA },
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [
                bulletItem("Avoid spicy, fried, and acidic/citrus foods — they worsen laryngopharyngeal reflux"),
                bulletItem("Limit coffee, tea (chai), and carbonated drinks"),
                bulletItem("Eat smaller meals; avoid large portions before speaking"),
                bulletItem("Wait at least 2–3 hours between dinner and bedtime"),
                bulletItem("Elevate the head of your bed slightly if you experience nighttime reflux"),
                bulletItem("Avoid lying down immediately after meals"),
              ]
            })
          ]
        })]
      }),

      tipBox("Acid reflux (GERD/LPR) is a common cause of hoarseness — managing it protects your voice."),
      spacer(120),

      // ════════════════════════════════════════════
      // SECTION 5: STAY HEALTHY
      // ════════════════════════════════════════════
      sectionHeader("STAY HEALTHY", "🌿", "27AE60"),
      spacer(80),

      new Table({
        width: { size: 9026, type: WidthType.DXA },
        columnWidths: [2200, 6826],
        borders: {
          top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
          left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
          insideH: { style: BorderStyle.NONE }, insideV: { style: BorderStyle.NONE },
        },
        rows: [new TableRow({
          children: [
            new TableCell({
              width: { size: 2200, type: WidthType.DXA },
              verticalAlign: VerticalAlign.CENTER,
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [new Paragraph({
                alignment: AlignmentType.CENTER,
                children: [new ImageRun({
                  type: "png", data: imgBuffer(5),
                  transformation: { width: 160, height: 130 },
                  altText: { title: "Stay Healthy", description: "Healthy lifestyle icons", name: "StayHealthy" }
                })]
              })]
            }),
            new TableCell({
              width: { size: 6826, type: WidthType.DXA },
              borders: {
                top: { style: BorderStyle.NONE }, bottom: { style: BorderStyle.NONE },
                left: { style: BorderStyle.NONE }, right: { style: BorderStyle.NONE },
              },
              children: [
                bulletItem("Get 7–8 hours of quality sleep — the voice needs rest to recover"),
                bulletItem("Exercise regularly to improve breath support and cardiovascular health"),
                bulletItem("Manage stress through mindfulness, meditation, or yoga"),
                bulletItem("Warm up your voice before prolonged speaking (humming, gentle glides)"),
                bulletItem("Eat a balanced diet rich in fruits, vegetables, and antioxidants"),
                bulletItem("Wash hands frequently to reduce upper respiratory infections"),
              ]
            })
          ]
        })]
      }),

      tipBox("A respiratory infection (cold/flu) is one of the biggest threats to your voice — prevent it with good hygiene."),
      spacer(200),

      // ─── FOOTER NOTE ───
      new Paragraph({
        border: { top: { style: BorderStyle.SINGLE, size: 4, color: TEAL } },
        spacing: { before: 200, after: 80 },
        alignment: AlignmentType.CENTER,
        shading: { type: ShadingType.SOLID, color: TEAL_LIGHT, fill: TEAL_LIGHT },
        children: [
          new TextRun({
            text: "⚠️  If you experience persistent hoarseness (more than 2 weeks), voice fatigue, or pain while speaking — ",
            font: "Arial", size: 19, color: DARK,
          }),
          new TextRun({
            text: "consult a speech-language pathologist or ENT specialist.",
            font: "Arial", size: 19, bold: true, color: TEAL,
          })
        ]
      }),

      new Paragraph({
        alignment: AlignmentType.CENTER,
        spacing: { before: 80, after: 0 },
        children: [
          new TextRun({
            text: "Prepared by the Speech-Language Pathology Department",
            font: "Arial", size: 18, italics: true, color: "888888",
          })
        ]
      }),
    ]
  }]
});

Packer.toBuffer(doc).then(buf => {
  fs.writeFileSync("/home/daytona/workspace/vocal-hygiene/Vocal_Hygiene_Checklist.docx", buf);
  console.log("Done: Vocal_Hygiene_Checklist.docx");
});
Running Command

cd /home/daytona/workspace/vocal-hygiene && node build.js 2>&1

Running Command

cd /home/daytona/workspace/vocal-hygiene && mkdir -p imgs && \ node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://cdn.orris.care/image-gen/0c8fa0d35e5243a98dffbbc4c6d122a5.png" \ "https://cdn.orris.care/image-gen/3bcf35cc9b984c67b743aab14fff3cbf.png" \ > /home/daytona/workspace/vocal-hygiene/imgs/batch1.json 2>&1 && echo "batch1 ok"

Running Command

node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://cdn.orris.care/image-gen/44193fdc0a4f4f95ac72ef2eebb979ea.png" \ "https://cdn.orris.care/image-gen/51869cb43a904b4eb72d518e66e207b5.png" \ > /home/daytona/workspace/vocal-hygiene/imgs/batch2.json 2>&1 && echo "batch2 ok"

Running Command

node /home/daytona/skills/shared/scripts/fetch_images.js \ "https://cdn.orris.care/image-gen/290915b53d6142bdac5a8235ae4d84a2.png" \ "https://cdn.orris.care/image-gen/fc399555ab8a4b6c931c2c37b347368f.png" \ > /home/daytona/workspace/vocal-hygiene/imgs/batch3.json 2>&1 && echo "batch3 ok"

Editing File

~/vocal-hygiene/build.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/vocal-hygiene/build.js'
Editing File

~/vocal-hygiene/build.js

Successfully replaced 1 instance(s) of the string in '/home/daytona/workspace/vocal-hygiene/build.js'
Running Command

cd /home/daytona/workspace/vocal-hygiene && node build.js 2>&1

Running Command

python /home/daytona/skills/docx/scripts/office/validate.py /home/daytona/workspace/vocal-hygiene/Vocal_Hygiene_Checklist.docx 2>&1

Running Command

# Quick manual validation: unzip and check the docx structure cd /tmp && cp /home/daytona/workspace/vocal-hygiene/Vocal_Hygiene_Checklist.docx test_vocal.docx && \ unzip -o test_vocal.docx -d test_vocal_unzipped > /dev/null 2>&1 && \ ls test_vocal_unzipped/word/ && \ echo "File size: $(wc -c < /home/daytona/workspace/vocal-hygiene/Vocal_Hygiene_Checklist.docx) bytes" && \ echo "DOCX structure valid"

Running Command

ls /tmp/test_vocal_unzipped/word/media/ | wc -l && ls /tmp/test_vocal_unzipped/word/media/

Your credits are exhausted. Your daily credits reset tomorrow, or you can purchase a top-up for more.
This is a shared conversation. Sign in to Orris to start your own chat.