Solurum.StaelTradeBot
1.0.5
dotnet tool install --global Solurum.StaelTradeBot --version 1.0.5
dotnet new tool-manifest
dotnet tool install --local Solurum.StaelTradeBot --version 1.0.5
#tool dotnet:?package=Solurum.StaelTradeBot&version=1.0.5
nuke :add-package Solurum.StaelTradeBot --version 1.0.5
StaelTradeBot (Solurum.StaelTradeBot)
StaelTradeBot is a .NET CLI tool that generates a stock health summary from a plain text input file using the OpenAI Responses API with web search enabled, and writes the result as a self-contained HTML report. Optionally, it can email that HTML report using Brevo.
Not financial advice. This tool summarizes information and may be wrong or incomplete. Always verify sources and do your own research.
What it does
Given:
- an input text file describing which stocks to research (and any initial context/data you want to provide),
It will:
- call an LLM (default model:
gpt-5, configurable via env var), - allow the model to use web search while researching,
- require the model to output only valid HTML,
- save the report to
result.htmlin your chosen results folder, - optionally email the HTML report via Brevo.
Install
As a .NET tool (recommended)
dotnet tool install --global Solurum.StaelTradeBot
Update:
dotnet tool update --global Solurum.StaelTradeBot
Run:
StaelTradeBot --help
If your package/tool command name differs (depending on how you pack/publish), use:
dotnet tool run StaelTradeBot --help
Quick start
1) Create an input file
Create a file like stocks.txt:
Stocks to analyze:
- MSFT
- NVDA
- ASML.AS
Notes / context:
- I�m a long-term investor.
- Focus on financial health, competitive position, risks, and valuation sanity checks.
- Mention any major recent news and cite sources where possible.
2) Run the tool
StaelTradeBot ^
--inputStockInfo "stocks.txt" ^
--llmServiceToken "%OPENAI_API_KEY%" ^
--result-folder ".\out"
Output:
.\out\result.html
Open it in your browser.
Command line options
Required
--inputStockInfo <path>- Text file containing the stocks to research + your context.
--llmServiceToken <token>- API token used to call the LLM service (currently OpenAI).
--result-folder <path>- Folder where
result.htmlwill be written. - Warning: the folder is emptied before writing results.
- Folder where
Optional (email via Brevo)
--emailServiceToken <token>- Brevo API key. If provided, the tool will send an email.
--brevoToEmail <email>- Required if
--emailServiceTokenis provided.
- Required if
--brevoToName <name>- Optional. (If not provided, recipient name defaults to the email address.)
Email example (Brevo)
StaelTradeBot ^
--inputStockInfo "stocks.txt" ^
--llmServiceToken "%OPENAI_API_KEY%" ^
--result-folder ".\out" ^
--emailServiceToken "%BREVO_API_KEY%" ^
--brevoToEmail "you@example.com" ^
--brevoToName "Jan"
What gets sent:
- Subject:
StaelTradeBot � Stock Health Summary - From:
solurumbot@gmail.com(display nameSolurumBot) - Body: the generated HTML report
Model selection
By default the tool uses:
gpt-5
You can override the model using the environment variable:
OPENAI_MODEL
Example
Windows (PowerShell):
$env:OPENAI_MODEL="gpt-5"
StaelTradeBot --inputStockInfo "stocks.txt" --llmServiceToken $env:OPENAI_API_KEY --result-folder ".\out"
Linux/macOS (bash):
export OPENAI_MODEL="gpt-5"
StaelTradeBot --inputStockInfo "stocks.txt" --llmServiceToken "$OPENAI_API_KEY" --result-folder "./out"
Input file tips (best results)
The model receives:
- a built-in system prompt (
InitialPrompt.txt, shipped with the app), - your input file content as data.
To get better reports, include:
- tickers + exchange suffix where relevant (e.g.
ASML.AS), - your investing style (long-term, swing, etc.),
- what to prioritize (financial strength, dilution, debt, margins, moat, catalysts),
- constraints (avoid penny stocks, focus on EU, etc.),
- any known positions or risk tolerance.
Output
The tool extracts HTML from the model output and writes:
<result-folder>/result.html
If the model returns extra text, the tool will attempt to locate:
<!DOCTYPE ...>or<html ...>start- and end at
</html>(or</body>if needed)
If no HTML start tag is found, the tool fails with an error.
Notes & limitations
- Result folder is wiped (files + subfolders) on every run.
- Web search is enabled via the Responses API tool call; results depend on model/tool availability.
- Output can be large (default
MaxOutputTokenCount = 50000) and may take time. - If emailing is enabled and Brevo rejects your request, the tool throws with the HTTP status + response body.
Troubleshooting
�Could not find 'InitialPrompt.txt'��
InitialPrompt.txt must be present next to the executable at runtime.
If you�re packaging this as a NuGet tool/package, ensure the file is included in the output (e.g., as content copied to output).
�No HTML start tag found��
Your model response didn�t include <!DOCTYPE ...> or <html ...>.
Try:
- ensuring your input file is clean and doesn�t contain confusing instructions,
- using a different model via
OPENAI_MODEL, - tightening your prompt expectations (e.g., �Return a single HTML document��).
Brevo email send failed
Double-check:
- your Brevo API key,
- recipient email,
- Brevo account permissions / sender validation requirements.
Security
- Treat
--llmServiceTokenand--emailServiceTokenas secrets. - Prefer passing tokens via environment variables in CI and local shells.
- The generated HTML may include externally sourced content; open and share reports responsibly.
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.