Wolffish searches for today’s top AI news, writes a LinkedIn post in your voice, and publishes it to LinkedIn using your existing Chrome session. No LinkedIn API. No OAuth. Just web search + computer use.
Claude Opus API key — configured in Settings > Models. This workflow chains research, curation, writing, and multi-step computer-use. Opus handles the judgment calls significantly better than smaller models. Sonnet works but expect lower-quality curation. Haiku and local models are not suitable.
Chrome — installed with a profile already logged into LinkedIn. The agent uses your existing browser session directly — no LinkedIn API, no OAuth tokens.
macOS permissions — Screen Recording, Accessibility, and Automation. All three in System Settings > Privacy & Security.
Screen Recording
What it does: Lets Wolffish take screenshots of your desktop.What happens without it:computer_screenshot silently fails — the agent retries up to 10 times, burning ~300 seconds per attempt before giving up. No error message, just a blank result.How to grant it:
Open System Settings > Privacy & Security > Screen Recording
Click the + button, find and add Wolffish
Restart Wolffish — this permission doesn’t take effect until the app restarts
Accessibility
What it does: Lets Wolffish control the mouse and keyboard.What happens without it:computer_mouse_click and computer_keyboard_type fail immediately with “not permitted.”How to grant it:
Open System Settings > Privacy & Security > Accessibility
Click the + button, find and add Wolffish
Takes effect immediately — no restart needed
Automation
What it does: Lets Wolffish send commands to other apps (Chrome, Finder, etc.) via AppleScript.What happens without it: Any osascript call fails with “Not authorized to send Apple events.” The agent retries — in one test run it burned ~264 seconds on 6 retries before succeeding after the prompt appeared.How to grant it:
Open System Settings > Privacy & Security > Automation
Find Wolffish in the list
Toggle on each target app the agent needs — at minimum, Google Chrome
macOS may also prompt you on first use — click “OK” when it does
Grant all three before your first run. If any permission is missing, the agent will burn through its token budget retrying failed tool calls. Screen Recording is the worst — it fails silently, so the agent doesn’t even know it can’t see the screen.
Send this to Wolffish. It researches, writes, and posts — one conversation.
Research today's top AI and tech news. Run multiple searches:"AI news today", "LLM breakthroughs this week", "artificialintelligence announcements", "AI funding rounds", "AI policyregulation". Read the full content of the top articles usingweb_fetch.ONLY use free, open sources that web_fetch can read withouthitting a paywall. Good sources: The Verge, Ars Technica,TechCrunch, arXiv, Papers With Code, Anthropic Blog, OpenAIBlog, Google AI Blog, Hacker News, r/MachineLearning,VentureBeat, The Register, CNBC Technology.DO NOT fetch from paywalled sites — Bloomberg, WSJ, NYT,Financial Times, The Information. They return HTTP 403 andwaste time. If a search result points to a paywalled domain,skip it and pick the next one. Also skip SEO spam, listicles,AI-generated summaries of summaries, and aggregator sites thatrewrite other outlets with no original reporting.Write a LinkedIn post in my voice (match soul.md tone). Under3000 characters. Use this exact format — every line break matters:🤖 AI News Roundup — N Things You Need to Know Today(blank line)1. [topic emoji] [One-sentence headline with full context](blank line)2. [topic emoji] [One-sentence headline with full context](blank line)3. [topic emoji] [One-sentence headline with full context](blank line)... continue for 5-10 stories ...(blank line)Generated with Wolffish 🐟Rules:- 5 to 10 stories depending on what's newsworthy today- Each story is exactly one numbered item with a topic emoji that matches its domain: 🏦 finance, 🏥 health, 🔬 research, 💰 funding, 🛡️ policy, 🛒 retail, ☁️ cloud, 🔐 security, 🎵 consumer, etc.- Each item is one self-contained sentence — the reader must understand the story without clicking through- One blank line between EVERY item — no exceptions — without them LinkedIn renders it as a wall of text- No hashtags. No closing hot take. No personal reflection. The value is the curation.- End with: Generated with Wolffish 🐟After writing the post, publish it to LinkedIn usingcomputer-use. My Chrome browser is already open on display 0(primary display) with my LinkedIn session logged in and readyto use. Do NOT spin up a new browser instance. Do NOT use aheadless browser. Do NOT launch Playwright or any automationframework. Use my existing Chrome window — it's already there.Begin by taking a screenshot to see the current screen state.Then save the post with correct encoding:Generate a timestamped filename using the current date andtime: files/linkedin-post-YYYY-MM-DD-HHMMSS.txt (e.g.files/linkedin-post-2026-05-22-143052.txt). Write the postcontent to that file so emojis are saved with proper UTF-8encoding. Then copy it to the clipboard using this exactshell command (with your actual filename):LANG=en_US.UTF-8 pbcopy < files/linkedin-post-YYYY-MM-DD-HHMMSS.txtThis forces pbcopy to read the file as UTF-8 regardless ofthe terminal's locale — it prevents emoji corruption (e.g.🤖 turning into ü§ñ) that happens with raw copy-paste.Then post it:Navigate to: https://www.linkedin.com/feed/?shareActive=trueThis opens the post composer directly AND the text area isalready focused with the cursor blinking — ready for inputimmediately. Do NOT click the composer text area. Just runthe paste command (Cmd+V) right away to paste from theclipboard.After pasting, take ONE screenshot of the composer. Verifythe emojis and formatting look correct — numbered items,topic emojis, blank lines between stories. If it looks right,click the "Post" button immediately. Do not scroll throughthe post. Do not take additional screenshots to verify. Donot try to get the post URL after posting.Four actions total: save file, clipboard-paste, verify, post.Done.
Once you trust the output, schedule it to run automatically. Open Settings > Heartbeat to launch the built-in heartbeat editor — paste the block below and save.See the Heartbeat docs for all schedule formats (Daily, Weekday, Weekly, Cron).
## Daily LinkedIn Post | Weekday (08:00)Research today's top AI and tech news. Run multiple searches:"AI news today", "LLM breakthroughs this week", "artificialintelligence announcements", "AI funding rounds", "AI policyregulation". Read the full content of the top articles usingweb_fetch.ONLY use free, open sources that web_fetch can read withouthitting a paywall. Good sources: The Verge, Ars Technica,TechCrunch, arXiv, Papers With Code, Anthropic Blog, OpenAIBlog, Google AI Blog, Hacker News, r/MachineLearning,VentureBeat, The Register, CNBC Technology.DO NOT fetch from paywalled sites — Bloomberg, WSJ, NYT,Financial Times, The Information. They return HTTP 403 andwaste time. If a search result points to a paywalled domain,skip it and pick the next one. Also skip SEO spam, listicles,AI-generated summaries of summaries, and aggregator sites thatrewrite other outlets with no original reporting.Write a LinkedIn post in my voice (match soul.md tone). Under3000 characters. Use this exact format — every line break matters:🤖 AI News Roundup — N Things You Need to Know Today(blank line)1. [topic emoji] [One-sentence headline with full context](blank line)2. [topic emoji] [One-sentence headline with full context](blank line)3. [topic emoji] [One-sentence headline with full context](blank line)... continue for 5-10 stories ...(blank line)Generated with Wolffish 🐟Rules:- 5 to 10 stories depending on what's newsworthy today- Each story is exactly one numbered item with a topic emoji that matches its domain: 🏦 finance, 🏥 health, 🔬 research, 💰 funding, 🛡️ policy, 🛒 retail, ☁️ cloud, 🔐 security, 🎵 consumer, etc.- Each item is one self-contained sentence — the reader must understand the story without clicking through- One blank line between EVERY item — no exceptions — without them LinkedIn renders it as a wall of text- No hashtags. No closing hot take. No personal reflection. The value is the curation.- End with: Generated with Wolffish 🐟After writing the post, publish it to LinkedIn usingcomputer-use. My Chrome browser is already open on display 0(primary display) with my LinkedIn session logged in and readyto use. Do NOT spin up a new browser instance. Do NOT use aheadless browser. Do NOT launch Playwright or any automationframework. Use my existing Chrome window — it's already there.Begin by taking a screenshot to see the current screen state.Then save the post with correct encoding:Generate a timestamped filename using the current date andtime: files/linkedin-post-YYYY-MM-DD-HHMMSS.txt (e.g.files/linkedin-post-2026-05-22-143052.txt). Write the postcontent to that file so emojis are saved with proper UTF-8encoding. Then copy it to the clipboard using this exactshell command (with your actual filename):LANG=en_US.UTF-8 pbcopy < files/linkedin-post-YYYY-MM-DD-HHMMSS.txtThis forces pbcopy to read the file as UTF-8 regardless ofthe terminal's locale — it prevents emoji corruption (e.g.🤖 turning into ü§ñ) that happens with raw copy-paste.Then post it:Navigate to: https://www.linkedin.com/feed/?shareActive=trueThis opens the post composer directly AND the text area isalready focused with the cursor blinking — ready for inputimmediately. Do NOT click the composer text area. Just runthe paste command (Cmd+V) right away to paste from theclipboard.After pasting, take ONE screenshot of the composer. Verifythe emojis and formatting look correct — numbered items,topic emojis, blank lines between stories. If it looks right,click the "Post" button immediately. Do not scroll throughthe post. Do not take additional screenshots to verify. Donot try to get the post URL after posting.Four actions total: save file, clipboard-paste, verify, post.Done.
Change Weekday (08:00) to any schedule that fits your routine — Daily (09:00) for every day, Weekly (Monday 08:00) for once a week, or a raw cron expression like Cron (0 8 * * 1,3,5) for Monday/Wednesday/Friday.
🤖 AI News Roundup — 10 Things You Need to Know Today
🏦 JPMorgan Chase reclassified AI as core infrastructure with a 19.8B USD tech budget, 2,000 AI staff, and projects 2.5B USD in annual value from AI efficiency gains.
🏥 OpenAI’s reasoning model outperformed experienced physicians at patient diagnosis in a Harvard/BIDMC study — tested across real ER electronic health records.
💊 OpenAI launched ChatGPT for Clinicians — a free tool for verified medical professionals to assist with documentation and evidence-based clinical reasoning.
🛡️ The US, UK, Australia, Canada & New Zealand jointly issued security guidance on agentic AI systems, identifying 5 risk categories for critical infrastructure deployments.
🔬 UPenn researchers introduced “Mollifier Layers” — a neural network technique to solve inverse PDEs with improved stability, with applications in genomics and climate modeling.
💰 China’s Moonshot AI raised 2B USD at a 20B USD valuation as demand for open-source AI models skyrockets globally.
🛒 McKinsey & ICSC report: AI agents could influence up to 1 trillion USD in US B2C retail revenue by 2030, reshaping how and where shopping decisions are made.
☁️ AWS expanded Amazon Connect into 4 agentic AI solutions covering supply chain, hiring, customer service, and healthcare administration.
🔐 Anthropic’s Claude Mythos Preview model prompted Yale’s CELI to publish a cross-industry agentic AI governance framework across banking, healthcare, retail & supply chain.
🎵 Spotify is positioning itself as the home for AI-generated personal audio, while OpenAI launched new voice intelligence features in its API.