Paper Report Delivery
Use this skill to implement or maintain an end-to-end daily paper report workflow.
Do this
- Read
references/workflow.mdfirst. - Keep the pipeline end-to-end: collection, selection, readable output, archive, delivery.
- Prefer Telegram-only proxying via
channels.telegram.proxywhen Telegram API needs Clash. - Treat Telegram message delivery and Telegram document delivery as separate reliability paths.
- Prefer this delivery order:
- split HTML delivery
- retry for a bounded window
- Telegram message chunk fallback
- Keep local artifacts even when remote delivery fails.
Reusable scripts
Use these bundled scripts when they fit:
scripts/build_readable_html.py- Build a readable single-file HTML report with embedded images.
scripts/build_telegram_messages.py- Convert a readable report JSON into Telegram-sized message chunks.
scripts/send_telegram_retry.sh- Retry Telegram sending for unstable transport.
scripts/send_html_then_fallback.py- Try split HTML for up to 30 minutes, then fall back to Telegram message chunks.
Implementation rules
- Keep HTML as the best-reading artifact.
- Keep Telegram message chunks as the most reliable delivery artifact.
- Archive HTML, PDF, and markdown even when only Telegram text is delivered.
- Do not assume Telegram document delivery is stable.
- If Telegram is unreachable, finish artifact generation and leave cached delivery files behind.
When editing an existing repo
- Integrate into the repo’s main pipeline entrypoint instead of creating a disconnected side script.
- Add flags for skipping fetch, skipping send, and archive-only mode.
- Keep delivery logic explicit and observable in logs.
- If Telegram transport is flaky, add retries before changing report content.
Publishing hygiene
Before public release:
- Remove hard-coded local paths
- Remove hard-coded Telegram targets and group names
- Replace fixed dates with dynamic
YYYY-MM-DDhandling - Keep transport settings configurable
Packaging
After the skill is complete, package it with the local package_skill.py helper from the OpenClaw skill-creator skill.