screenhand 0.1.1 → 0.3.0
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 +193 -109
- package/bin/darwin-arm64/macos-bridge +0 -0
- package/dist/mcp-desktop.js +5876 -0
- package/dist/scripts/codex-monitor-daemon.js +335 -0
- package/dist/scripts/export-help-center.js +112 -0
- package/dist/scripts/marketing-loop.js +117 -0
- package/dist/scripts/observer-daemon.js +288 -0
- package/dist/scripts/orchestrator-daemon.js +399 -0
- package/dist/scripts/supervisor-daemon.js +272 -0
- package/dist/scripts/threads-campaign.js +208 -0
- package/dist/scripts/worker-daemon.js +228 -0
- package/dist/src/agent/cli.js +82 -0
- package/dist/src/agent/loop.js +274 -0
- package/dist/src/community/fetcher.js +109 -0
- package/dist/src/community/index.js +6 -0
- package/dist/src/community/publisher.js +191 -0
- package/dist/src/community/remote-api.js +121 -0
- package/dist/src/community/types.js +3 -0
- package/dist/src/community/validator.js +95 -0
- package/{src/config.ts → dist/src/config.js} +5 -10
- package/dist/src/context-tracker.js +489 -0
- package/{src/index.ts → dist/src/index.js} +32 -52
- package/dist/src/ingestion/coverage-auditor.js +233 -0
- package/dist/src/ingestion/doc-parser.js +164 -0
- package/dist/src/ingestion/index.js +8 -0
- package/dist/src/ingestion/menu-scanner.js +152 -0
- package/dist/src/ingestion/reference-merger.js +186 -0
- package/dist/src/ingestion/shortcut-extractor.js +180 -0
- package/dist/src/ingestion/tutorial-extractor.js +170 -0
- package/dist/src/ingestion/types.js +3 -0
- package/dist/src/jobs/manager.js +305 -0
- package/dist/src/jobs/runner.js +806 -0
- package/dist/src/jobs/store.js +102 -0
- package/dist/src/jobs/types.js +30 -0
- package/dist/src/jobs/worker.js +97 -0
- package/dist/src/learning/engine.js +356 -0
- package/dist/src/learning/index.js +9 -0
- package/dist/src/learning/locator-policy.js +120 -0
- package/dist/src/learning/pattern-policy.js +89 -0
- package/dist/src/learning/recovery-policy.js +116 -0
- package/dist/src/learning/sensor-policy.js +115 -0
- package/dist/src/learning/timing-model.js +204 -0
- package/dist/src/learning/topology-policy.js +90 -0
- package/dist/src/learning/types.js +9 -0
- package/dist/src/logging/timeline-logger.js +48 -0
- package/dist/src/mcp/mcp-stdio-server.js +464 -0
- package/dist/src/mcp/server.js +363 -0
- package/dist/src/mcp-entry.js +60 -0
- package/dist/src/memory/playbook-seeds.js +200 -0
- package/dist/src/memory/recall.js +222 -0
- package/dist/src/memory/research.js +104 -0
- package/dist/src/memory/seeds.js +101 -0
- package/dist/src/memory/service.js +446 -0
- package/dist/src/memory/session.js +169 -0
- package/dist/src/memory/store.js +451 -0
- package/{src/runtime/locator-cache.ts → dist/src/memory/types.js} +1 -17
- package/dist/src/monitor/codex-monitor.js +382 -0
- package/dist/src/monitor/task-queue.js +97 -0
- package/dist/src/monitor/types.js +62 -0
- package/dist/src/native/bridge-client.js +412 -0
- package/{src/native/macos-bridge-client.ts → dist/src/native/macos-bridge-client.js} +0 -1
- package/dist/src/observer/state.js +199 -0
- package/dist/src/observer/types.js +43 -0
- package/dist/src/orchestrator/state.js +68 -0
- package/dist/src/orchestrator/types.js +22 -0
- package/dist/src/perception/ax-source.js +162 -0
- package/dist/src/perception/cdp-source.js +162 -0
- package/dist/src/perception/coordinator.js +771 -0
- package/dist/src/perception/frame-differ.js +287 -0
- package/dist/src/perception/index.js +22 -0
- package/dist/src/perception/manager.js +199 -0
- package/dist/src/perception/types.js +47 -0
- package/dist/src/perception/vision-source.js +399 -0
- package/dist/src/planner/deterministic.js +298 -0
- package/dist/src/planner/executor.js +870 -0
- package/dist/src/planner/goal-store.js +92 -0
- package/dist/src/planner/index.js +21 -0
- package/dist/src/planner/planner.js +520 -0
- package/dist/src/planner/tool-registry.js +71 -0
- package/dist/src/planner/types.js +22 -0
- package/dist/src/platform/explorer.js +213 -0
- package/dist/src/platform/help-center-markdown.js +527 -0
- package/dist/src/platform/learner.js +257 -0
- package/dist/src/playbook/engine.js +486 -0
- package/dist/src/playbook/index.js +20 -0
- package/dist/src/playbook/mcp-recorder.js +204 -0
- package/dist/src/playbook/recorder.js +536 -0
- package/dist/src/playbook/runner.js +408 -0
- package/dist/src/playbook/store.js +312 -0
- package/dist/src/playbook/types.js +17 -0
- package/dist/src/recovery/detectors.js +156 -0
- package/dist/src/recovery/engine.js +327 -0
- package/dist/src/recovery/index.js +20 -0
- package/dist/src/recovery/strategies.js +274 -0
- package/dist/src/recovery/types.js +20 -0
- package/dist/src/runtime/accessibility-adapter.js +430 -0
- package/dist/src/runtime/app-adapter.js +64 -0
- package/dist/src/runtime/applescript-adapter.js +305 -0
- package/dist/src/runtime/ax-role-map.js +96 -0
- package/dist/src/runtime/browser-adapter.js +52 -0
- package/dist/src/runtime/cdp-chrome-adapter.js +521 -0
- package/dist/src/runtime/composite-adapter.js +221 -0
- package/dist/src/runtime/execution-contract.js +159 -0
- package/dist/src/runtime/executor.js +286 -0
- package/dist/src/runtime/locator-cache.js +50 -0
- package/dist/src/runtime/planning-loop.js +63 -0
- package/dist/src/runtime/service.js +432 -0
- package/dist/src/runtime/session-manager.js +63 -0
- package/dist/src/runtime/state-observer.js +121 -0
- package/dist/src/runtime/vision-adapter.js +225 -0
- package/dist/src/state/app-map-types.js +72 -0
- package/dist/src/state/app-map.js +1974 -0
- package/dist/src/state/entity-tracker.js +108 -0
- package/dist/src/state/fusion.js +96 -0
- package/dist/src/state/index.js +21 -0
- package/dist/src/state/ladder-generator.js +236 -0
- package/dist/src/state/persistence.js +156 -0
- package/dist/src/state/types.js +17 -0
- package/dist/src/state/world-model.js +1456 -0
- package/dist/src/supervisor/locks.js +186 -0
- package/dist/src/supervisor/supervisor.js +403 -0
- package/dist/src/supervisor/types.js +30 -0
- package/dist/src/test-mcp-protocol.js +154 -0
- package/dist/src/types.js +17 -0
- package/dist/src/util/atomic-write.js +133 -0
- package/dist/src/util/sanitize.js +146 -0
- package/dist-app-maps/com.figma.Desktop.json +959 -0
- package/dist-app-maps/com.hnc.Discord.json +1146 -0
- package/dist-app-maps/notion.id.json +2831 -0
- package/dist-playbooks/canva-screenhand-carousel.json +445 -0
- package/dist-playbooks/codex-desktop.json +76 -0
- package/dist-playbooks/competitor-research-stack.json +122 -0
- package/dist-playbooks/davinci-color-grade.json +153 -0
- package/dist-playbooks/davinci-edit-timeline.json +162 -0
- package/dist-playbooks/davinci-render.json +114 -0
- package/dist-playbooks/devto.json +52 -0
- package/dist-playbooks/discord.json +41 -0
- package/dist-playbooks/google-flow-create-project.json +59 -0
- package/dist-playbooks/google-flow-edit-image.json +90 -0
- package/dist-playbooks/google-flow-edit-video.json +90 -0
- package/dist-playbooks/google-flow-generate-image.json +68 -0
- package/dist-playbooks/google-flow-generate-video.json +191 -0
- package/dist-playbooks/google-flow-open-project.json +48 -0
- package/dist-playbooks/google-flow-open-scenebuilder.json +64 -0
- package/dist-playbooks/google-flow-search-assets.json +64 -0
- package/dist-playbooks/instagram.json +57 -0
- package/dist-playbooks/linkedin.json +52 -0
- package/dist-playbooks/n8n.json +43 -0
- package/dist-playbooks/reddit.json +52 -0
- package/dist-playbooks/threads.json +59 -0
- package/dist-playbooks/x-twitter.json +59 -0
- package/dist-playbooks/youtube.json +59 -0
- package/dist-references/canva.json +646 -0
- package/dist-references/codex-desktop.json +305 -0
- package/dist-references/davinci-resolve-keyboard.json +594 -0
- package/dist-references/davinci-resolve-menu-map.json +1139 -0
- package/dist-references/davinci-resolve-menus-batch1.json +116 -0
- package/dist-references/davinci-resolve-menus-batch2.json +372 -0
- package/dist-references/davinci-resolve-menus-batch3.json +330 -0
- package/dist-references/davinci-resolve-menus-batch4.json +297 -0
- package/dist-references/davinci-resolve-shortcuts.json +333 -0
- package/dist-references/devto.json +317 -0
- package/dist-references/discord.json +549 -0
- package/dist-references/figma.json +1186 -0
- package/dist-references/finder.json +146 -0
- package/dist-references/google-ads-transparency.json +95 -0
- package/dist-references/google-flow.json +649 -0
- package/dist-references/instagram.json +341 -0
- package/dist-references/linkedin.json +324 -0
- package/dist-references/meta-ad-library.json +86 -0
- package/dist-references/n8n.json +387 -0
- package/dist-references/notes.json +27 -0
- package/dist-references/notion.json +163 -0
- package/dist-references/reddit.json +341 -0
- package/dist-references/threads.json +337 -0
- package/dist-references/x-twitter.json +403 -0
- package/dist-references/youtube.json +373 -0
- package/native/macos-bridge/Package.swift +1 -0
- package/native/macos-bridge/Sources/AccessibilityBridge.swift +257 -36
- package/native/macos-bridge/Sources/AppManagement.swift +212 -2
- package/native/macos-bridge/Sources/CoreGraphicsBridge.swift +348 -53
- package/native/macos-bridge/Sources/StreamCapture.swift +136 -0
- package/native/macos-bridge/Sources/VisionBridge.swift +165 -7
- package/native/macos-bridge/Sources/main.swift +169 -16
- package/native/windows-bridge/Program.cs +5 -0
- package/native/windows-bridge/ScreenCapture.cs +124 -0
- package/package.json +29 -4
- package/scripts/postinstall.cjs +127 -0
- package/.claude/commands/automate.md +0 -28
- package/.claude/commands/debug-ui.md +0 -19
- package/.claude/commands/screenshot.md +0 -15
- package/.github/FUNDING.yml +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.mcp.json +0 -8
- package/DESKTOP_MCP_GUIDE.md +0 -92
- package/SECURITY.md +0 -44
- package/docs/architecture.md +0 -47
- package/install-skills.sh +0 -19
- package/mcp-bridge.ts +0 -271
- package/mcp-desktop.ts +0 -1221
- package/playbooks/instagram.json +0 -41
- package/playbooks/instagram_v2.json +0 -201
- package/playbooks/x_v1.json +0 -211
- package/scripts/devpost-live-loop.mjs +0 -421
- package/src/logging/timeline-logger.ts +0 -55
- package/src/mcp/server.ts +0 -449
- package/src/memory/recall.ts +0 -191
- package/src/memory/research.ts +0 -146
- package/src/memory/seeds.ts +0 -123
- package/src/memory/session.ts +0 -201
- package/src/memory/store.ts +0 -434
- package/src/memory/types.ts +0 -69
- package/src/native/bridge-client.ts +0 -239
- package/src/runtime/accessibility-adapter.ts +0 -487
- package/src/runtime/app-adapter.ts +0 -169
- package/src/runtime/applescript-adapter.ts +0 -376
- package/src/runtime/ax-role-map.ts +0 -102
- package/src/runtime/browser-adapter.ts +0 -129
- package/src/runtime/cdp-chrome-adapter.ts +0 -676
- package/src/runtime/composite-adapter.ts +0 -274
- package/src/runtime/executor.ts +0 -396
- package/src/runtime/planning-loop.ts +0 -81
- package/src/runtime/service.ts +0 -448
- package/src/runtime/session-manager.ts +0 -50
- package/src/runtime/state-observer.ts +0 -136
- package/src/runtime/vision-adapter.ts +0 -297
- package/src/types.ts +0 -297
- package/tests/bridge-client.test.ts +0 -176
- package/tests/browser-stealth.test.ts +0 -210
- package/tests/composite-adapter.test.ts +0 -64
- package/tests/mcp-server.test.ts +0 -151
- package/tests/memory-recall.test.ts +0 -339
- package/tests/memory-research.test.ts +0 -159
- package/tests/memory-seeds.test.ts +0 -120
- package/tests/memory-store.test.ts +0 -392
- package/tests/types.test.ts +0 -92
- package/tsconfig.check.json +0 -17
- package/tsconfig.json +0 -19
- package/vitest.config.ts +0 -8
- /package/{playbooks → dist-references}/devpost.json +0 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "finder",
|
|
3
|
+
"name": "Finder — Auto-Generated Reference",
|
|
4
|
+
"platform": "finder",
|
|
5
|
+
"bundleId": "com.apple.finder",
|
|
6
|
+
"shortcuts": {
|
|
7
|
+
"Apple": {
|
|
8
|
+
"AXMenu > Force Quit…": "Option+Cmd+⎋",
|
|
9
|
+
"AXMenu > Force Quit Finder": "Option+Shift+Cmd+⎋",
|
|
10
|
+
"AXMenu > Lock Screen": "Ctrl+Cmd+Q",
|
|
11
|
+
"AXMenu > Log Out khushi goyal…": "Shift+Cmd+Q",
|
|
12
|
+
"AXMenu > Log Out khushi goyal": "Option+Shift+Cmd+Q"
|
|
13
|
+
},
|
|
14
|
+
"Finder": {
|
|
15
|
+
"AXMenu > Settings…": "Cmd+,",
|
|
16
|
+
"AXMenu > Empty Trash…": "Shift+Cmd+\b",
|
|
17
|
+
"AXMenu > Empty Trash": "Option+Shift+Cmd+\b",
|
|
18
|
+
"AXMenu > Hide Finder": "Cmd+H",
|
|
19
|
+
"AXMenu > Hide Others": "Option+Cmd+H"
|
|
20
|
+
},
|
|
21
|
+
"File": {
|
|
22
|
+
"AXMenu > New Finder Window": "Cmd+N",
|
|
23
|
+
"AXMenu > New Folder": "Shift+Cmd+N",
|
|
24
|
+
"AXMenu > New Folder with Selection (3 Items)": "Ctrl+Cmd+N",
|
|
25
|
+
"AXMenu > New Tab": "Cmd+T",
|
|
26
|
+
"AXMenu > Open": "Cmd+O",
|
|
27
|
+
"AXMenu > Open in New Tab": "Ctrl+Cmd+O",
|
|
28
|
+
"AXMenu > Open and Close Window": "Option+Cmd+O",
|
|
29
|
+
"AXMenu > Close Window": "Cmd+W",
|
|
30
|
+
"AXMenu > Close All": "Option+Cmd+W",
|
|
31
|
+
"AXMenu > Get Info": "Cmd+I",
|
|
32
|
+
"AXMenu > Show Inspector": "Option+Cmd+I",
|
|
33
|
+
"AXMenu > Get Summary Info": "Ctrl+Cmd+I",
|
|
34
|
+
"AXMenu > Duplicate": "Cmd+D",
|
|
35
|
+
"AXMenu > Duplicate Exactly": "Option+Shift+Cmd+D",
|
|
36
|
+
"AXMenu > Make Alias": "Ctrl+Cmd+A",
|
|
37
|
+
"AXMenu > Quick Look": "Cmd+Y",
|
|
38
|
+
"AXMenu > Slideshow 3 Items": "Option+Cmd+Y",
|
|
39
|
+
"AXMenu > Print": "Cmd+P",
|
|
40
|
+
"AXMenu > Show Original": "Cmd+R",
|
|
41
|
+
"AXMenu > Add to Sidebar": "Ctrl+Cmd+T",
|
|
42
|
+
"AXMenu > Add to Dock": "Ctrl+Shift+Cmd+T",
|
|
43
|
+
"AXMenu > Move to Trash": "Cmd+\b",
|
|
44
|
+
"AXMenu > Delete Immediately…": "Option+Cmd+\b",
|
|
45
|
+
"AXMenu > Eject": "Option+Cmd+E",
|
|
46
|
+
"AXMenu > Find": "Cmd+F",
|
|
47
|
+
"AXMenu > Find by Name…": "Ctrl+Shift+Cmd+F",
|
|
48
|
+
"AXMenu > New Folder with “Codex”": "Ctrl+Cmd+N",
|
|
49
|
+
"AXMenu > Slideshow “Codex”": "Option+Cmd+Y"
|
|
50
|
+
},
|
|
51
|
+
"Edit": {
|
|
52
|
+
"AXMenu > Undo": "Cmd+Z",
|
|
53
|
+
"AXMenu > Redo": "Shift+Cmd+Z",
|
|
54
|
+
"AXMenu > Cut": "Cmd+X",
|
|
55
|
+
"AXMenu > Copy": "Cmd+C",
|
|
56
|
+
"AXMenu > Copy 3 Items as Pathnames": "Option+Cmd+C",
|
|
57
|
+
"AXMenu > Copy as Link": "Ctrl+Option+Cmd+C",
|
|
58
|
+
"AXMenu > Paste": "Cmd+V",
|
|
59
|
+
"AXMenu > Move Item Here": "Option+Cmd+V",
|
|
60
|
+
"AXMenu > Paste Exactly": "Option+Shift+Cmd+V",
|
|
61
|
+
"AXMenu > Select All": "Cmd+A",
|
|
62
|
+
"AXMenu > Deselect All": "Option+Cmd+A",
|
|
63
|
+
"AXMenu > Start Dictation…": "Cmd+🎤",
|
|
64
|
+
"AXMenu > Emoji & Symbols": "Cmd+🌐",
|
|
65
|
+
"AXMenu > Copy “Codex”": "Cmd+C",
|
|
66
|
+
"AXMenu > Copy “Codex” as Pathname": "Option+Cmd+C"
|
|
67
|
+
},
|
|
68
|
+
"View": {
|
|
69
|
+
"AXMenu > as Icons": "Cmd+1",
|
|
70
|
+
"AXMenu > as List": "Cmd+2",
|
|
71
|
+
"AXMenu > as Columns": "Cmd+3",
|
|
72
|
+
"AXMenu > as Gallery": "Cmd+4",
|
|
73
|
+
"AXMenu > Use Groups": "Ctrl+Cmd+0",
|
|
74
|
+
"AXMenu > Sort By > AXMenu > None": "Ctrl+Option+Cmd+0",
|
|
75
|
+
"AXMenu > Sort By > AXMenu > Name": "Ctrl+Option+Cmd+1",
|
|
76
|
+
"AXMenu > Sort By > AXMenu > Kind": "Ctrl+Option+Cmd+2",
|
|
77
|
+
"AXMenu > Sort By > AXMenu > Date Last Opened": "Ctrl+Option+Cmd+3",
|
|
78
|
+
"AXMenu > Sort By > AXMenu > Date Added": "Ctrl+Option+Cmd+4",
|
|
79
|
+
"AXMenu > Sort By > AXMenu > Date Modified": "Ctrl+Option+Cmd+5",
|
|
80
|
+
"AXMenu > Sort By > AXMenu > Size": "Ctrl+Option+Cmd+6",
|
|
81
|
+
"AXMenu > Sort By > AXMenu > Tags": "Ctrl+Option+Cmd+7",
|
|
82
|
+
"AXMenu > Clean Up By > AXMenu > Name": "Option+Cmd+1",
|
|
83
|
+
"AXMenu > Clean Up By > AXMenu > Kind": "Option+Cmd+2",
|
|
84
|
+
"AXMenu > Clean Up By > AXMenu > Date Modified": "Option+Cmd+5",
|
|
85
|
+
"AXMenu > Clean Up By > AXMenu > Size": "Option+Cmd+6",
|
|
86
|
+
"AXMenu > Clean Up By > AXMenu > Tags": "Option+Cmd+7",
|
|
87
|
+
"AXMenu > Show Tab Bar": "Shift+Cmd+T",
|
|
88
|
+
"AXMenu > Show All Tabs": "Shift+Cmd+\\",
|
|
89
|
+
"AXMenu > Hide Sidebar": "Ctrl+Cmd+S",
|
|
90
|
+
"AXMenu > Show Preview": "Shift+Cmd+P",
|
|
91
|
+
"AXMenu > Hide Toolbar": "Option+Cmd+T",
|
|
92
|
+
"AXMenu > Show Path Bar": "Option+Cmd+P",
|
|
93
|
+
"AXMenu > Show Status Bar": "Cmd+/",
|
|
94
|
+
"AXMenu > Show View Options": "Cmd+J",
|
|
95
|
+
"AXMenu > Enter Full Screen": "Cmd+F",
|
|
96
|
+
"AXMenu > Group By > AXMenu > Name": "Ctrl+Cmd+1",
|
|
97
|
+
"AXMenu > Group By > AXMenu > Date Last Opened": "Ctrl+Cmd+3",
|
|
98
|
+
"AXMenu > Group By > AXMenu > Date Added": "Ctrl+Cmd+4",
|
|
99
|
+
"AXMenu > Group By > AXMenu > Size": "Ctrl+Cmd+6",
|
|
100
|
+
"AXMenu > Group By > AXMenu > Tags": "Ctrl+Cmd+7",
|
|
101
|
+
"AXMenu > Sort Groups By > AXMenu > None": "Ctrl+Option+Cmd+0",
|
|
102
|
+
"AXMenu > Sort Groups By > AXMenu > Name": "Ctrl+Option+Cmd+1",
|
|
103
|
+
"AXMenu > Sort Groups By > AXMenu > Kind": "Ctrl+Option+Cmd+2",
|
|
104
|
+
"AXMenu > Sort Groups By > AXMenu > Date Last Opened": "Ctrl+Option+Cmd+3",
|
|
105
|
+
"AXMenu > Sort Groups By > AXMenu > Date Added": "Ctrl+Option+Cmd+4",
|
|
106
|
+
"AXMenu > Sort Groups By > AXMenu > Date Modified": "Ctrl+Option+Cmd+5",
|
|
107
|
+
"AXMenu > Sort Groups By > AXMenu > Size": "Ctrl+Option+Cmd+6",
|
|
108
|
+
"AXMenu > Sort Groups By > AXMenu > Tags": "Ctrl+Option+Cmd+7"
|
|
109
|
+
},
|
|
110
|
+
"Go": {
|
|
111
|
+
"AXMenu > Back": "Cmd+[",
|
|
112
|
+
"AXMenu > Forward": "Cmd+]",
|
|
113
|
+
"AXMenu > Enclosing Folder": "Option+Cmd+",
|
|
114
|
+
"AXMenu > Enclosing Folder in New Window": "Ctrl+Cmd+",
|
|
115
|
+
"AXMenu > Select Startup Disk": "Shift+Cmd+",
|
|
116
|
+
"AXMenu > Recents": "Shift+Cmd+F",
|
|
117
|
+
"AXMenu > Documents": "Shift+Cmd+O",
|
|
118
|
+
"AXMenu > Desktop": "Shift+Cmd+D",
|
|
119
|
+
"AXMenu > Downloads": "Option+Cmd+L",
|
|
120
|
+
"AXMenu > Home": "Shift+Cmd+H",
|
|
121
|
+
"AXMenu > Computer": "Shift+Cmd+C",
|
|
122
|
+
"AXMenu > AirDrop": "Shift+Cmd+R",
|
|
123
|
+
"AXMenu > Network": "Shift+Cmd+K",
|
|
124
|
+
"AXMenu > iCloud Drive": "Shift+Cmd+I",
|
|
125
|
+
"AXMenu > Shared": "Shift+Cmd+S",
|
|
126
|
+
"AXMenu > Applications": "Shift+Cmd+A",
|
|
127
|
+
"AXMenu > Utilities": "Shift+Cmd+U",
|
|
128
|
+
"AXMenu > Go to Folder…": "Shift+Cmd+G",
|
|
129
|
+
"AXMenu > Connect to Server…": "Cmd+K"
|
|
130
|
+
},
|
|
131
|
+
"Window": {
|
|
132
|
+
"AXMenu > Minimize": "Cmd+M",
|
|
133
|
+
"AXMenu > Minimize All": "Option+Cmd+M",
|
|
134
|
+
"AXMenu > Fill": "Ctrl+Cmd+F",
|
|
135
|
+
"AXMenu > Center": "Ctrl+Cmd+C",
|
|
136
|
+
"AXMenu > Move & Resize > AXMenu > Return to Previous Size": "Ctrl+Cmd+R",
|
|
137
|
+
"AXMenu > Cycle Through Windows": "Cmd+`",
|
|
138
|
+
"AXMenu > Show Previous Tab": "Ctrl+Shift+Cmd+\t",
|
|
139
|
+
"AXMenu > Show Next Tab": "Ctrl+Cmd+\t"
|
|
140
|
+
},
|
|
141
|
+
"Help": {}
|
|
142
|
+
},
|
|
143
|
+
"selectors": {},
|
|
144
|
+
"flows": {},
|
|
145
|
+
"errors": []
|
|
146
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "google-ads-transparency",
|
|
3
|
+
"name": "google-ads-transparency playbook",
|
|
4
|
+
"description": "Curated ScreenHand reference for competitor research on Google Ads Transparency Center using region and domain URLs.",
|
|
5
|
+
"platform": "google-ads-transparency",
|
|
6
|
+
"urlPatterns": [
|
|
7
|
+
"https://adstransparency\\.google\\.com/\\?region=IN",
|
|
8
|
+
"https://adstransparency\\.google\\.com/\\?region=IN&domain=\\{DOMAIN\\}",
|
|
9
|
+
"https://adstransparency\\.google\\.com/advertiser/\\{ADVERTISER_ID\\}/creative/\\{CREATIVE_ID\\}\\?region=IN"
|
|
10
|
+
],
|
|
11
|
+
"steps": [],
|
|
12
|
+
"tags": [
|
|
13
|
+
"google-ads-transparency"
|
|
14
|
+
],
|
|
15
|
+
"version": "1.0.0",
|
|
16
|
+
"successCount": 0,
|
|
17
|
+
"failCount": 0,
|
|
18
|
+
"urls": {
|
|
19
|
+
"home": "https://adstransparency.google.com/?region=IN",
|
|
20
|
+
"domain_lookup": "https://adstransparency.google.com/?region=IN&domain={DOMAIN}",
|
|
21
|
+
"creative_detail": "https://adstransparency.google.com/advertiser/{ADVERTISER_ID}/creative/{CREATIVE_ID}?region=IN"
|
|
22
|
+
},
|
|
23
|
+
"selectors": {
|
|
24
|
+
"search": {
|
|
25
|
+
"homepage_input": "input.input.input-area",
|
|
26
|
+
"region_filter": "[aria-label='Region selection filter button']"
|
|
27
|
+
},
|
|
28
|
+
"results": {
|
|
29
|
+
"creative_cards": "a[href*='/advertiser/'][href*='/creative/']",
|
|
30
|
+
"see_all_ads_button": "material-button.grid-expansion-button",
|
|
31
|
+
"popup_filter_button": ".popup-button"
|
|
32
|
+
},
|
|
33
|
+
"auto_discovered": {
|
|
34
|
+
"auto_mmu1bu84_bof": "textarea[name='q']"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"flows": {
|
|
38
|
+
"domain_lookup": {
|
|
39
|
+
"steps": [
|
|
40
|
+
"Open the region-specific domain URL directly",
|
|
41
|
+
"Read the visible ad count, advertiser labels, and creative detail links",
|
|
42
|
+
"Expand See all ads when present to get a larger sample"
|
|
43
|
+
],
|
|
44
|
+
"guards": [
|
|
45
|
+
"Prefer direct ?region=IN&domain={DOMAIN} URLs over homepage typing",
|
|
46
|
+
"Treat ad count and repeated creatives as activity signals, not conversion proof"
|
|
47
|
+
],
|
|
48
|
+
"why": "Direct domain URLs are more stable than the homepage search interaction and expose active Google ad inventory quickly.",
|
|
49
|
+
"verification_text_patterns": [
|
|
50
|
+
"ads",
|
|
51
|
+
"Verified",
|
|
52
|
+
"See all ads"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"creative_detail_review": {
|
|
56
|
+
"steps": [
|
|
57
|
+
"Open 3-5 creative detail links from the domain results page",
|
|
58
|
+
"Read advertiser name, headline fragments, and recurrence across creatives",
|
|
59
|
+
"Cross-check landing pages separately for offer and funnel structure"
|
|
60
|
+
],
|
|
61
|
+
"why": "Creative detail pages help distinguish one-off ads from repeated campaign families."
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"detection": {
|
|
65
|
+
"on_ads_transparency": "location.hostname.includes('adstransparency.google.com')",
|
|
66
|
+
"region_locked": "location.search.includes('region=IN')",
|
|
67
|
+
"results_loaded": "document.body.innerText.match(/\\b\\d+ ads\\b/i) !== null"
|
|
68
|
+
},
|
|
69
|
+
"errors": [
|
|
70
|
+
{
|
|
71
|
+
"error": "homepage search is less reliable than direct domain lookup",
|
|
72
|
+
"context": "Autocomplete and advertiser selection can be inconsistent under automation",
|
|
73
|
+
"solution": "Use https://adstransparency.google.com/?region=IN&domain={DOMAIN} as the primary entry point.",
|
|
74
|
+
"severity": "high"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"error": "the tool shows ad inventory, not performance metrics",
|
|
78
|
+
"context": "You can confirm active ads but not ROAS, CPL, or conversion counts",
|
|
79
|
+
"solution": "Use ad count, creative repetition, and landing-page alignment as outside signals only.",
|
|
80
|
+
"severity": "medium"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"error": "Focus failed: com.microsoft.VSCode is frontmost instead of com.apple.TextEdit",
|
|
84
|
+
"context": "tool: key, domain: google.com",
|
|
85
|
+
"solution": "No resolution yet — investigate and update this entry",
|
|
86
|
+
"severity": "medium"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"error": "Not found: Element not found matching criteria",
|
|
90
|
+
"context": "tool: ui_find, domain: google.com",
|
|
91
|
+
"solution": "No resolution yet — investigate and update this entry",
|
|
92
|
+
"severity": "medium"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|