Initial commit with translated description
This commit is contained in:
115
workflows/briefing.yaml
Normal file
115
workflows/briefing.yaml
Normal file
@@ -0,0 +1,115 @@
|
||||
# Finance Briefing Workflow for Lobster
|
||||
# Usage: lobster "workflows.run --file workflows/briefing.yaml --args-json '{\"time\":\"morning\",\"lang\":\"de\"}'"
|
||||
#
|
||||
# This workflow:
|
||||
# 1. Generates a market briefing via Docker
|
||||
# 2. Halts for approval before sending
|
||||
# 3. Sends to messaging channel after approval
|
||||
|
||||
name: finance.briefing
|
||||
description: Generate market briefing and send to WhatsApp/Telegram with approval gate
|
||||
|
||||
args:
|
||||
time:
|
||||
default: morning
|
||||
description: "Briefing type: morning or evening"
|
||||
lang:
|
||||
default: de
|
||||
description: "Language: en or de"
|
||||
channel:
|
||||
default: "${FINANCE_NEWS_CHANNEL:-whatsapp}"
|
||||
description: "Delivery channel: whatsapp or telegram"
|
||||
target:
|
||||
default: "${FINANCE_NEWS_TARGET}"
|
||||
description: "Target: group name, JID, phone number, or Telegram chat ID (requires FINANCE_NEWS_TARGET env var if not specified)"
|
||||
fast:
|
||||
default: "false"
|
||||
description: "Use fast mode: true or false"
|
||||
|
||||
steps:
|
||||
# Generate briefing and save to temp file
|
||||
- id: generate
|
||||
command: |
|
||||
SKILL_DIR="${SKILL_DIR:-$HOME/projects/skills/personal/finance-news}"
|
||||
FAST_FLAG=""
|
||||
if [ "${fast}" = "true" ]; then FAST_FLAG="--fast"; fi
|
||||
OUTFILE="/tmp/lobster-briefing-$$.json"
|
||||
# Resolve openbb-quote symlink for Docker mount
|
||||
OPENBB_BIN=$(realpath "$HOME/.local/bin/openbb-quote" 2>/dev/null || echo "")
|
||||
OPENBB_MOUNT=""
|
||||
if [ -f "$OPENBB_BIN" ]; then
|
||||
OPENBB_MOUNT="-v $OPENBB_BIN:/usr/local/bin/openbb-quote:ro"
|
||||
fi
|
||||
docker run --rm \
|
||||
-v "$SKILL_DIR/config:/app/config:ro" \
|
||||
-v "$SKILL_DIR/scripts:/app/scripts:ro" \
|
||||
$OPENBB_MOUNT \
|
||||
finance-news-briefing python3 scripts/briefing.py \
|
||||
--time "${time}" \
|
||||
--lang "${lang}" \
|
||||
--json \
|
||||
$FAST_FLAG > "$OUTFILE"
|
||||
# Output the file path for subsequent steps
|
||||
echo "$OUTFILE"
|
||||
description: Generate briefing via Docker
|
||||
|
||||
# Translate portfolio headlines (if German)
|
||||
- id: translate
|
||||
command: |
|
||||
OUTFILE=$(cat)
|
||||
OUTFILE=$(echo "$OUTFILE" | tr -d '\n')
|
||||
SKILL_DIR="${SKILL_DIR:-$HOME/projects/skills/personal/finance-news}"
|
||||
if [ "${lang}" = "de" ]; then
|
||||
python3 "$SKILL_DIR/scripts/translate_portfolio.py" "$OUTFILE" --lang de || true
|
||||
fi
|
||||
echo "$OUTFILE"
|
||||
stdin: $generate.stdout
|
||||
description: Translate portfolio headlines via openclaw
|
||||
|
||||
# Approval gate - workflow halts here until user approves
|
||||
- id: approve
|
||||
approval: required
|
||||
command: |
|
||||
OUTFILE=$(cat)
|
||||
echo "Briefing saved to: $OUTFILE"
|
||||
echo "Target: ${target}"
|
||||
echo "Channel: ${channel}"
|
||||
cat "$OUTFILE" | jq -r '.macro_message' | head -20
|
||||
echo "..."
|
||||
echo "Review above. Approve to send."
|
||||
stdin: $translate.stdout
|
||||
description: Approval gate before message delivery
|
||||
|
||||
# Send macro briefing (market overview)
|
||||
- id: send_macro
|
||||
command: |
|
||||
OUTFILE=$(cat)
|
||||
OUTFILE=$(echo "$OUTFILE" | tr -d '\n')
|
||||
MSG=$(jq -r '.macro_message // empty' "$OUTFILE")
|
||||
if [ -n "$MSG" ]; then
|
||||
openclaw message send \
|
||||
--channel "${channel}" \
|
||||
--target "${target}" \
|
||||
--message "$MSG"
|
||||
else
|
||||
echo "No macro message to send"
|
||||
fi
|
||||
stdin: $translate.stdout
|
||||
description: Send macro briefing
|
||||
|
||||
# Send portfolio briefing (stock movers)
|
||||
- id: send_portfolio
|
||||
command: |
|
||||
OUTFILE=$(cat)
|
||||
OUTFILE=$(echo "$OUTFILE" | tr -d '\n')
|
||||
MSG=$(jq -r '.portfolio_message // empty' "$OUTFILE")
|
||||
if [ -n "$MSG" ]; then
|
||||
openclaw message send \
|
||||
--channel "${channel}" \
|
||||
--target "${target}" \
|
||||
--message "$MSG"
|
||||
else
|
||||
echo "No portfolio message to send"
|
||||
fi
|
||||
stdin: $translate.stdout
|
||||
description: Send portfolio briefing
|
||||
Reference in New Issue
Block a user