OpenClawのCronとPDF変換スクリプトを組み合わせると、日次レポートの生成を定型化できます。最初に手動実行で出力を確認してから、定期実行へ移行するのが安全です。
結論: OpenClawで定期レポートをPDF出力するなら、変換処理を独立したスクリプトにまとめ、手動テスト、Cron登録、実行履歴の確認という順で導入するのが最短です。
Background
毎日のレポート作成を手作業にすると、実行漏れや集計条件のばらつきが発生します。生成処理をスクリプトとして固定すれば、同じ条件で繰り返し実行できます。
この例では、ホストの稼働状況とディスク使用量をMarkdownにまとめ、PandocでPDFへ変換します。OpenClawはスクリプトの定期実行と履歴管理を担当します。
Step-by-step
- 必要なコマンドを確認する
OpenClaw Gatewayが起動しており、pandocとPDF生成エンジンが利用できることを確認します。
1
2
3
openclaw gateway status
pandoc --version
xelatex --version
Ubuntu系環境では、必要なパッケージを次のように導入できます。
1
2
sudo apt-get update
sudo apt-get install -y pandoc texlive-xetex fonts-noto-cjk
- PDF生成スクリプトを作成する
次の内容を/opt/reports/generate-daily-report.shとして保存します。出力先は/opt/reports/outputです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env bash
set -euo pipefail
OUTPUT_DIR="/opt/reports/output"
GENERATED_AT="$(date '+%Y-%m-%d %H:%M:%S %Z')"
REPORT_DATE="$(date '+%Y-%m-%d')"
MARKDOWN_FILE="${OUTPUT_DIR}/daily-report-${REPORT_DATE}.md"
PDF_FILE="${OUTPUT_DIR}/daily-report-${REPORT_DATE}.pdf"
mkdir -p "${OUTPUT_DIR}"
{
printf '# 日次運用レポート\n\n'
printf -- '- 生成日時: %s\n' "${GENERATED_AT}"
printf -- '- ホスト名: %s\n\n' "$(hostname)"
printf '## 稼働状況\n\n```text\n'
uptime
printf '```\n\n'
printf '## ディスク使用量\n\n```text\n'
df -h
printf '```\n'
} > "${MARKDOWN_FILE}"
pandoc "${MARKDOWN_FILE}" \
--from markdown \
--pdf-engine=xelatex \
-V mainfont="Noto Sans CJK JP" \
-V geometry:margin=24mm \
--output "${PDF_FILE}"
test -s "${PDF_FILE}"
printf 'PDFを生成しました: %s\n' "${PDF_FILE}"
実行権限を付与し、まず単体で動作を確認します。
1
2
3
4
5
sudo mkdir -p /opt/reports/output
sudo chmod +x /opt/reports/generate-daily-report.sh
/opt/reports/generate-daily-report.sh
ls -lh /opt/reports/output/
- OpenClaw Cronへ登録する
毎日9時にスクリプトを実行するジョブを登録します。--exactを指定し、負荷分散による実行時刻の自動調整を無効にします。
1
2
3
4
5
6
openclaw cron create "0 9 * * *" \
--name "daily-pdf-report" \
--tz "Asia/Tokyo" \
--exact \
--command-argv '["/opt/reports/generate-daily-report.sh"]' \
--command-cwd "/opt/reports"
登録内容とタイムゾーンを確認します。
1
openclaw cron list
- 手動実行して結果を検証する
一覧から取得したジョブIDを指定し、完了まで待機します。<job-id>は実際の値へ置き換えてください。
1
2
3
4
openclaw cron run <job-id> \
--wait \
--wait-timeout 10m \
--poll-interval 2s
実行履歴とPDFファイルを確認します。
1
2
openclaw cron runs --id <job-id> --limit 20
ls -lh /opt/reports/output/*.pdf
問題の調査中は、別のターミナルでGatewayのログを追跡できます。
1
openclaw logs --follow
Common pitfalls
-
実行時刻が想定とずれる
--tz "Asia/Tokyo"を明示し、登録後にopenclaw cron listで設定値を確認します。毎時0分などの正確な実行が必要なら--exactも指定します。 -
Gateway停止中にジョブが実行されない
OpenClaw CronはGatewayプロセス内で動作します。openclaw gateway statusを監視し、常時稼働するサービスとして管理してください。 -
Cronから実行するとコマンドが見つからない
Cron環境のPATHは対話シェルと異なる場合があります。スクリプト内ではpandocなどの絶対パスを使うか、冒頭でPATHを明示してください。 -
PDFは生成されるが日本語が文字化けする
日本語フォントを導入し、Pandocへ--pdf-engine=xelatexとmainfontを指定します。フォント名はfc-listで確認できます。 -
出力先への書き込みで失敗する
Gatewayを実行するユーザーに、出力ディレクトリの書き込み権限を付与します。手動テストも同じユーザーで実行すると権限差を発見しやすくなります。 -
外部APIの認証切れで集計に失敗する
APIを利用する場合は、スクリプトの終了コードを非ゼロにして失敗をOpenClawへ伝えます。定期的にopenclaw cron runs --id <job-id>を確認し、認証情報の更新手順も運用に含めます。 -
PDFが蓄積してディスクを圧迫する
保存期間を決め、古いファイルを削除する処理を追加します。たとえば30日より古いPDFは次のコマンドで削除できます。
1
2
3
4
5
find /opt/reports/output \
-type f \
-name 'daily-report-*.pdf' \
-mtime +30 \
-delete
Summary
OpenClawで定期レポートをPDF出力する場合は、PDF生成を独立したスクリプトとして実装し、OpenClaw Cronから決まった時刻に呼び出します。
最小構成で手動テストを行い、Cron登録後は実行履歴と出力ファイルを確認してください。タイムゾーン、Gatewayの稼働状態、実行ユーザーの権限、フォント、保存期間まで決めておくと、安定した運用につながります。