openads-ai 0.2.2 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -1
- package/dist/cli.js +1 -0
- package/dist/schedule.js +3 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -188,6 +188,19 @@ openads schedule remove # Remove a schedule
|
|
|
188
188
|
|
|
189
189
|
Uses your OS scheduler (macOS `launchd` / Linux `crontab`) — works even when your terminal is closed.
|
|
190
190
|
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 🛡️ Dual-Mode Safety (Audit vs. Launch)
|
|
194
|
+
|
|
195
|
+
To align with our **Radical Simplicity & Safety by Default** principles, OpenAds operates in two visual modes to give you total control and peace of mind over your ad accounts:
|
|
196
|
+
|
|
197
|
+
* **Audit Mode (Safe / Read-only — Recommended)**: Strict read-only guidelines. The AI can pull live campaign statistics, analyze keywords, find budget waste, and recommend landing page optimizations, but is entirely blocked from making active changes.
|
|
198
|
+
* **Launch Mode (Read-Write)**: Active campaign changes. Authorizes write modifications (e.g. pausing campaigns, scaling bids, altering budgets, or testing ad creative) but strictly mandates a clear visual preview card and an explicit **confirmation prompt (Y/N)** before executing.
|
|
199
|
+
|
|
200
|
+
Configure your default mode anytime by running `openads setup`.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
191
204
|
## 🔒 Security & Privacy
|
|
192
205
|
|
|
193
206
|
- **Runs 100% locally.** OpenAds is not a cloud service. Nothing leaves your machine except the API calls you authorize.
|
|
@@ -242,8 +255,14 @@ Read [CONTRIBUTING.md](CONTRIBUTING.md) to get started.
|
|
|
242
255
|
|
|
243
256
|
---
|
|
244
257
|
|
|
258
|
+
## 👥 Core Team
|
|
259
|
+
|
|
260
|
+
* **Luiz Amorim** — Creator & Maintainer ([lamorim.net](https://lamorim.net) | [LinkedIn](https://www.linkedin.com/in/luizamorim/))
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
245
264
|
## License
|
|
246
265
|
|
|
247
266
|
MIT.
|
|
248
267
|
|
|
249
|
-
*Built on [Pi](https://github.com/earendil-works/pi) (MIT). Includes tools derived from [adloop](https://github.com/kLOsk/adloop) (MIT) by kLOsk. Marketing skills inspired by [marketingskills](https://github.com/coreyhaines31/marketingskills) (MIT) by Corey Haines. Memory and background automation concepts inspired by [Hermes Agent](https://github.com/NousResearch/hermes-agent) by Nous Research.*
|
|
268
|
+
*Built on [Pi](https://github.com/earendil-works/pi) (MIT). Includes tools derived from [adloop](https://github.com/kLOsk/adloop) (MIT) by kLOsk. Marketing skills inspired by [marketingskills](https://github.com/coreyhaines31/marketingskills) (MIT) by Corey Haines. Memory and background automation concepts inspired by [Hermes Agent](https://github.com/NousResearch/hermes-agent) by Nous Research. Token optimization proxy concepts inspired by [RTK](https://github.com/rtk-ai/rtk) by rtk-ai.*
|
package/dist/cli.js
CHANGED
|
@@ -350,6 +350,7 @@ async function main() {
|
|
|
350
350
|
}
|
|
351
351
|
if (config.localBaseUrl) {
|
|
352
352
|
env.OPENAI_BASE_URL = config.localBaseUrl;
|
|
353
|
+
env.OPENAI_API_KEY = env.OPENAI_API_KEY || 'sk-local-ai-key-placeholder';
|
|
353
354
|
}
|
|
354
355
|
// ─── White-Label Patch ──────────────────────────────────────────
|
|
355
356
|
const agentDir = path.join(CONFIG_DIR, 'agent');
|
package/dist/schedule.js
CHANGED
|
@@ -243,8 +243,10 @@ export async function runScheduledTask(name) {
|
|
|
243
243
|
else
|
|
244
244
|
env.OPENAI_API_KEY = config.apiKey;
|
|
245
245
|
}
|
|
246
|
-
if (config.localBaseUrl)
|
|
246
|
+
if (config.localBaseUrl) {
|
|
247
247
|
env.OPENAI_BASE_URL = config.localBaseUrl;
|
|
248
|
+
env.OPENAI_API_KEY = env.OPENAI_API_KEY || 'sk-local-ai-key-placeholder';
|
|
249
|
+
}
|
|
248
250
|
const skillsDir = path.resolve(pkgDir, 'skills');
|
|
249
251
|
const contextDir = path.join(CONFIG_DIR, 'context');
|
|
250
252
|
const args = [
|
package/package.json
CHANGED