Compare commits

10 Commits

Author SHA1 Message Date
Oliver 18314b673a s 2026-05-03 19:54:08 +00:00
Oliver 7639f7dfa3 stage 2026-05-03 19:03:49 +00:00
Oliver afe8ce09c1 fix 2026-05-03 18:55:48 +00:00
Oliver 33d27d46ba Update webdev 2026-05-03 18:52:04 +00:00
Oliver 78dd3844dd videos in url 2026-05-03 12:48:08 +00:00
Oliver ad2c1a996b Add webdev agent files and copy directory 2026-05-02 23:02:39 +00:00
Oliver 5f749dd702 n 2026-05-02 22:31:33 +00:00
Oliver 7270bc8da5 Update copy_style.md 2026-05-02 19:23:58 +00:00
Oliver ed2611065e Update blog_post.chain.md 2026-05-02 19:23:52 +00:00
Oliver 1d84b39a3a v 2026-05-02 19:04:22 +00:00
13 changed files with 210 additions and 20 deletions
+32 -9
View File
@@ -42,11 +42,10 @@ to make the user gain interest to implement this feature in his company.
4. **Generate Blog Post**
Follow the **Copywriting** skill you linked for structure and style.
Produce **HTML** with semantic tags (`<article>`, `<h1>-<h3>`, `<p>`,
Produce **HTML** with semantic tags (`<article>`, `<h2>-<h3>`, `<p>`,
`<ul>`, `<blockquote>`, etc.) and any classes defined in `copy_style.md`.
Include:
- Title (`<h1>`)
- Sub-headline (`<h2>`)
- Sub-headline (`<h2>`) serves as the first heading in the HTML `text`.
- Intro paragraph
- 3-5 benefit-oriented sections, each with a header (`<h3>`) and paragraph.
- Optional YouTube video embed using an `<iframe>` (provide the video ID).
@@ -54,14 +53,38 @@ to make the user gain interest to implement this feature in his company.
**Do not** fabricate data; rely only on the audience info and style guide.
5. **Write Output**
Capture the generated HTML in a variable (e.g., `htmlContent`).
5. **Write Output as JSON**
- Ensure a `copy/` folder exists inside the project (`mkdir -p`).
- Generate a URL-safe slug from the `headline` field: convert to lowercase, replace all non-alphanumeric characters (except letters, numbers) with hyphens, and trim leading/trailing hyphens.
- Write the HTML to `copy/{slug}.html` using the `write` tool. Example: if headline is "Improve Transparency In Your Business", use filename `improve-transparency-in-your-business.html`.
- Do not write files outside the `copy/` folder—this directory is for blog posts only.
- Generate a URLsafe slug from the `headline` field: convert to lowercase, replace all nonalphanumeric characters (except letters, numbers) with hyphens, and trim leading/trailing hyphens.
- Determine the current date (ISO8601) via a shell command, e.g. `date -u +"%Y-%m-%d"`.
- Select the area from "Sales" "Restaurant" "Invoicing" "CRM" "Website" "Inventory" "Purchase" "Point of Sale" "Project" "eCommerce" "Manufacturing" "Email Marketing" "Timesheets" "Expenses" "Risk Management"
- Teaser is the first paragraph <p></p>
- for the Vertial put in the project name
- Important: the image name is without the extension so for MyAwesomeImage.jpg just put MyAwesomeImage in the JSON
- Build a JSON object with the required fields:
```json
{
"area": "",
"Vertical":"",
"date": "",
"title": "",
"teaser": "",
"content": "",
"image":""
}
```
- `<title from <h1>>` is the same string used for the slug.
- `<htmlContent>` is the HTML generated in step4.
- `<image>` comes from the topic step (`{image}` variable).
- `<currentdate>` is the ISO8601 date string.
- Write the JSON to `copy/{slug}.json` using the `write` tool.
- Do not write any separate HTML files; the entire blog post is now represented by the JSON payload.
- Return the JSON object as the agent's final response.
6. **Confirmation**
Return a short summary to the user indicating where the file was saved and any TODOs that need manual filling. Always state the full filename generated (e.g., "written to `improve-transparency-in-your-business.html`").
Return the JSON object that was written to `copy/{slug}.json` as the final output. Also include a short textual summary indicating the filename (e.g., "written to `improve-transparency-in-your-business.json`").
7. **Style Guide**
use the following styles
@@ -73,7 +96,7 @@ max 2 emojis per post, no rocket and only if it supports the pain points
8. **Videos**
Embed videos with a player
<iframe width="560" height="315"
<iframe class="video-top"
src="https://www.youtube.com/embed/FUhTrqxWnsQ"
title="YouTube video player"
frameborder="0"
+5
View File
@@ -1,6 +1,8 @@
---
name: blog_post
description: Chain that creates a blog post and processes it
clarify: false
defaultContext: fresh
---
## topic
@@ -8,3 +10,6 @@ select a topic for {project}
## blog
write a blogpost for {project} do not tell the subagent where to save the output
## webdev
upload the blogpost for {project} and push the changes
+1 -1
View File
@@ -69,7 +69,7 @@ choose an image that fits the blog post topic and supports the message for the i
---
## 6. Video Selection
Read /workspace/content/videos/videos.json
Read https://my-biz.app/content/videos/videos.json
choose an video that fits the blog post topic and supports the message for the icp
---
+110
View File
@@ -0,0 +1,110 @@
---
name: webdev
description: |
Clones the project's git repository, customizes a singlepage landing page, and optionally prepends a blogpost JSON entry to `posts.json`.
The agent receives either a project name or a full project path. If only a name is given, the path defaults to `/workspace/Projects/{project}`.
model:
thinking: medium
tools: read, write, bash
systemPromptMode: replace
inheritProjectContext: true
inheritSkills: true
---
# Role
You are a web developer automation agent. Your job is to:
1. Resolve the project directory.
2. Read `config.md` in that directory to obtain the Git repository URL.
3. Clone (or pull) the repository into a temporary working directory.
4. Apply any landingpage customizations (details are provided via the task prompt).
5. If a blogpost JSON payload is supplied, prepend it to the `posts.json` array in the repo.
6. Commit the changes with a meaningful message and push them back to the remote.
# Input Contract
- `project`: name of the project (optional).
- `project_path`: full filesystem path to the project (optional, overrides `project`).
- `landing_page_changes`: freeform description of the landingpage customizations (optional).
- `blogpost`: JSON object representing a blog post (optional). Example:
```json
{"headline":"...","text":"...","image":"...","date":"..."}
```
If `project_path` is not supplied, compute it as `/workspace/Projects/{project}`.
All file paths in this prompt are relative to the resolved project path.
# Workflow
1. **Resolve Path**
```bash
if [ -z "$project_path" ]; then
project_path="/workspace/Projects/${project}"
fi
```
2. **Read Repository URL**
```bash
repo_url=$(read --path "$project_path/config.md" | grep -i "repo:" | cut -d':' -f2- | xargs)
```
The `config.md` must contain a line like `repo: https://github.com/user/repo.git`.
3. **Prepare Working Directory**
```bash
workdir="/tmp/{project}/webdev/}"
rm -rf "$workdir"
# Use SSH for cloning and pushing (keys are preexchanged)
git clone "$repo_url" "$workdir"
cd "$workdir"
```
always git pull before start working
Do not create branches and the work in the default branch
4. **LandingPage Customization** (if `landing_page_changes` provided)
- Open the main HTML file (assumed `index.html`).
- Apply the changes using `sed`/`awk` or any appropriate tool based on the description.
- Example placeholder (real implementation depends on the task description):
```bash
# replace placeholder TITLE with custom title
sed -i "s/{{TITLE}}/${landing_page_changes}/" index.html
```
5. **Add Blog Post** (if `blogpost` provided)
make sure the blog pose has this format
{
"area": "",
"date": "",
"title": "",
"teaser": "",
"content": "",
"image":""
}
```bash
posts_file="posts.json"
if [ -f "$posts_file" ]; then
# prepend the new entry
tmp=$(mktemp)
echo "[${blogpost}," > $tmp
tail -n +2 "$posts_file" >> $tmp # skip the opening '[' of existing file
mv $tmp "$posts_file"
else
echo "[${blogpost}]" > "$posts_file"
fi
```
The above uses the literal JSON string passed in `blogpost`.
6. **Commit & Push**
```bash
git add .
git commit -m "Automated landingpage update$( [ -n "$blogpost" ] && echo " & add blog post" )"
git push origin main
```
7. **Return Summary**
Respond with a short message indicating success, the repository URL, and the path of the working directory that was pushed.
# Edge Cases & Errors
- Missing `config.md` or missing `repo:` line → report error.
- Git clone failure → report error.
- `posts.json` is not valid JSON → report error.
- Push rejected (e.g., authentication) → report error.
# Integration
The agent inherits the project context, so any relative file references resolve against the resolved `project_path`.
---
+15 -1
View File
@@ -1,4 +1,18 @@
{
"jobs": [],
"jobs": [
{
"id": "S0hGOLjhj5",
"name": "Post NGO",
"schedule": "31 9 13 * * 2",
"prompt": "Use the blog_post chain to create a blog post for the project NGO",
"enabled": true,
"type": "cron",
"createdAt": "2026-05-03T13:03:14.694Z",
"runCount": 1,
"lastStatus": "success",
"lastRun": "2026-05-03T13:08:00.004Z",
"nextRun": "2026-05-04T13:08:00.000Z"
}
],
"version": 1
}
+3 -3
View File
@@ -1,3 +1,3 @@
# Selected Topic: 2026-04-30T22:15:28Z build-trust-with-organized-operations.md
# Selected Topic: 2026-05-01T12:00:00Z improve-transparency-in-your-business.md
# Selected Topic: 2026-05-02T14:32:00Z turn-data-into-actionable-insights.md
2026-05-02T00:00:00Z improve-transparency-in-your-business.md
2026-05-03T00:00:00Z automate-everyday-tasks-and-save-time.md
2026-05-03T00:00:00Z build-long-term-customer-relationships.md
Submodule Projects/NGO/agents/webdev added at a86684f6d1
+5
View File
@@ -0,0 +1,5 @@
## Landing page git repo
git@git.odoo4projects.com:Oliver/NGO.git
## Landing page URL
https://ngo.my-biz.app
@@ -0,0 +1,9 @@
{
"area": "CRM",
"Vertical": "NGO",
"date": "2026-05-03",
"title": "How Donor Management Helps NGOs Build Lasting Relationships",
"teaser": "Maria ran a small education NGO in Kenya, dependent on donors from Europe and North America. She loved her mission—giving children access to quality education—but felt overwhelmed by the administrative burden. Donor communications were scattered across email threads, spreadsheets, and handwritten notes.",
"content": "<article>\n <h1>How Donor Management Helps NGOs Build Lasting Relationships</h1>\n <p style=\"margin: 0; color: #374151;\">— Maria ran a small education NGO in Kenya, dependent on donors from Europe and North America. She loved her mission—giving children access to quality education—but felt overwhelmed by the administrative burden. Donor communications were scattered across email threads, spreadsheets, and handwritten notes. When a generous donor gave again after a year, Maria realized she had no record of their last gift or what impact it had made. She sent a generic thank-you, feeling guilty that she couldn't personalize it. <strong style=\"font-weight: 700; color: #0f172a;\">Manual tracking</strong>, <strong style=\"font-weight: 700; color: #0f172a;\">forgotten follow-ups</strong>, and <strong style=\"font-weight: 700; color: #0f172a;\">generic communications</strong> were slowly eroding donor relationships she had worked so hard to build.</p>\n <h2>Modern systems reduce the administrative burden</h2>\n <p style=\"margin: 0; color: #374151;\">Modern donor management systems can significantly reduce the administrative burden of maintaining donor relationships. Processes that were previously manual—tracking donations, sending acknowledgments, and following up with supporters—can now be streamlined and partially automated. This allows organizations to focus more on their core mission while ensuring donors feel valued and informed.</p>\n <h2>Consistent stewardship prevents relationship decay</h2>\n <p style=\"margin: 0; color: #374151;\">Integrated donor management platforms provide tools that help organizations maintain meaningful donor connections at scale. With automated communication workflows, organizations can send personalized thank-you messages instantly after receiving donations. Donor history and interaction tracking ensures every conversation picks up where the last one left off. Scheduled reminders surface opportunities to update donors on impact before relationships become stale. The result is consistent relationship maintenance that prevents the silent decay of donor loyalty.</p>\n <h3>Key benefits for small NGOs</h3>\n <ul>\n <li><p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Automated thank-you communications</strong> — Send personalized acknowledgments instantly, without manual effort</p></li>\n <li><p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Complete donor history</strong> — Every interaction is recorded, so conversations never start from zero</p></li>\n <li><p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Retention tracking</strong> — Identify at-risk donors before they drift away silently</p></li>\n </ul>\n <p style=\"margin: 0; color: #374151;\">For small NGOs with limited staff, these capabilities transform donor stewardship from a overwhelming task into a manageable, systematic process. The organization no longer relies on individual memory or heroic effort—it relies on systems that handle the discipline of relationship nurturing.</p>\n <iframe width=\"560\" height=\"315\"\n src=\"https://www.youtube.com/embed/xbyPsjIfylk\"\n title=\"YouTube video player\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowfullscreen>\n </iframe>\n <p style=\"margin: 0; color: #374151;\"><em style=\"font-style: italic; color: #0f172a;\">This is how automated donor communication helps small NGOs maintain meaningful relationships with supporters worldwide.</em></p>\n <a class=\"cta\" href=\"https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3DDbaiHFlhNhWySszAQoPXE_H73QLqYT3w7H9IYWC76RA_TgNIhLESjb4N7ep_D2D_OyW9q4-c\">When you want to explore how this could work for your organization, you can book a meeting here</a>\n</article>",
"image": "ngo_cowork"
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
{
"headline": "Professional Invoicing: Transform Your NGOs Finance Management",
"text": "<article>\n <h1>Professional Invoicing: Transform Your NGOs Finance Management</h1>\n <h2>Turn Hours of Reconciliation into Minutes of Trust</h2>\n <p style=\"margin: 0; color: #374151;\">Small NGOs often spend precious hours reconciling scattered invoices, delaying donor acknowledgments and putting cash flow at risk.</p>\n <p style=\"margin: 0; color: #374151;\">— <em>“Ava stared at piles of paper receipts and endless email threads, feeling the weight of **scattered invoices**, **manual receipt generation**, and **auditready reporting** slipping through her fingers. Each missed thankyou note threatened donor trust, and every delayed cashflow report added stress to her alreadybusy day.”</em> —</p>\n <p style=\"margin: 0; color: #374151;\">Modern computer systems can dramatically cut the administrative workload around donations and invoicing. By centralising payment data and automating routine tasks, organisations move from chaotic spreadsheets to a single source of truth.</p>\n <h3>Speedy Donor Acknowledgements</h3>\n <p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Instantly generate receipt emails</strong> once a payment is recorded, keeping donors informed and increasing retention.</p>\n <h3>AuditReady Financial Reports</h3>\n <p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Oneclick export of compliant reports</strong> that satisfy grantors and board members without manual stitching.</p>\n <h3>Transparent Cash Flow</h3>\n <p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Realtime dashboards</strong> give staff a clear view of incoming funds, enabling quicker program decisions. 😊</p>\n <p style=\"margin: 0; color: #374151;\">Integrated invoicing tools combine payment processing, receipt generation, and reporting into a single cloud platform. Automation handles routine steps, while staff focus on missioncritical work.</p>\n <p style=\"margin: 0; color: #374151;\">📹 <iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/LX_kRgiqUj0\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe></p>\n <p style=\"margin: 0; color: #374151;\">When you want to set this up, you can get a free trial of our servers at <a class=\"cta\" href=\"https://my-biz.app\">https://my-biz.app</a></p>\n</article>",
"image": "ngo_office.jpg",
"date": "2026-05-02"
}
@@ -0,0 +1,8 @@
{
"area": "CRM",
"Vertical": "NGO",
"date": "2026-05-03",
"title": "reclaim-your-time-from-administrative-work",
"teaser": "Maria had a small education NGO in Kenya, helping 200 children get to school every day. She loved her mission, but she dreaded the administrative work that came with it.",
"content": "<article><h1>How Small NGOs Can Reclaim Their Time from Administrative Work</h1><p style=\"margin: 0; color: #374151;\">— \"Maria had a small education NGO in Kenya, helping 200 children get to school every day. She loved her mission, but she dreaded the administrative work that came with it. Every week, she spent hours copying donor information from emails into <strong style=\"font-weight: 700; color: #0f172a;\">spreadsheets</strong>, sending personalized thank-you notes one by one, and manually compiling reports for her board. By the time she finished the paperwork, she was too exhausted to visit the schools. The <strong style=\"font-weight: 700; color: #0f172a;\">manual data entry</strong>, <strong style=\"font-weight: 700; color: #0f172a;\">endless emails</strong>, and <strong style=\"font-weight: 700; color: #0f172a;\">compliance reporting</strong> were stealing her energy from what mattered most — the children.\"</p><h2>Modern Systems That Handle the Heavy Lifting</h2><p style=\"margin: 0; color: #374151;\">Cloud-based management systems can significantly reduce the administrative workload for mission-driven organizations. Processes that were previously manual — like tracking donations, generating reports, and communicating with supporters — can now be streamlined, centralized, and partially automated. This means staff spend less time on repetitive tasks and more time on program delivery.</p><h2>Automation That Works for Your Mission</h2><p style=\"margin: 0; color: #374151;\">Integrated management platforms provide tools that help organizations track donations, automate donor communications, and generate transparent impact reports. With automation features such as scheduled email sequences, automatic data synchronization, and one-click report generation, organizations can keep donors informed and compliant without manual effort. These systems are designed to be simple enough for small teams to adopt without dedicated IT support.</p><h3>What This Means for Your Team</h3><ul><li><p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Donor communications on autopilot:</strong> Automated thank-you emails and impact updates keep donors engaged without staff typing each message manually.</p></li><li><p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Reports in minutes, not days:</strong> Centralized data means board reports and grant applications can be generated with a few clicks.</p></li><li><p style=\"margin: 0; color: #374151;\"><strong style=\"font-weight: 700; color: #0f172a;\">Compliance made simple:</strong> Audit-ready records are automatically maintained, reducing the scramble before board reviews.</p></li></ul><h3>The Real Impact</h3><p style=\"margin: 0; color: #374151;\">When administrative tasks no longer consume most of the workday, your team can return to the work that inspired them to join your organization in the first place. The systems don't replace the human connection — they protect it by handling the repetitive work that drains energy and time.</p><iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/LX_kRgiqUj0\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe><p style=\"margin: 0; color: #374151;\"><em style=\"font-style: italic; color: #0f172a;\">See how automation handles the everyday tasks that steal time from your mission.</em></p><a class=\"cta\" href=\"https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ3DDbaiHFlhNhWySszAQoPXE_H73QLqYT3w7H9IYWC76RA_TgNIhLESjb4N7ep_D2D_OyW9q4-c\">When you're ready to explore how this could work for your organization, you can book a meeting here</a></article>"
}
+2 -1
View File
@@ -6,12 +6,12 @@ Every post is a narrative transformation story:
From inefficient, human struggle → to modern, streamlined operations → to a realistic (not hype-driven) solution → to a relevant video → to a contextual call-to-action.
The tone is:
Story-driven, not sales-driven
Empathetic, realistic, grounded
Slightly dramatic in the “before” phase
Calm and professional in the “after” phases
Never pushy or overly promotional
🧱 Standard Post Structure
Every post must follow this exact 4-part structure:
@@ -42,6 +42,7 @@ Do NOT mention any product, brand, or Odoo
Describe general digital transformation benefits
Focus on systems, automation, reduction of manual work
Keep it factual and calm
Dont make and claims that the story is true like "How an ngo saves 12 hours making reports"
Example tone: