> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wolffi.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Daily LinkedIn Post

> AI news curation and LinkedIn posting using web search and computer use

# Overview

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.

## Video Walkthrough

<iframe width="100%" height="400" src="https://www.youtube.com/embed/oDJ07Hw_dOE" title="Daily LinkedIn Post — Wolffish Demo" frameBorder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowFullScreen style={{ borderRadius: '8px', marginTop: '1rem', marginBottom: '1rem' }} />

## Setup

### Required

* **Wolffish installed and running**
* **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**.

<Accordion title="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:**

  1. Open **System Settings > Privacy & Security > Screen Recording**
  2. Click the `+` button, find and add **Wolffish**
  3. **Restart Wolffish** — this permission doesn't take effect until the app restarts
</Accordion>

<Accordion title="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:**

  1. Open **System Settings > Privacy & Security > Accessibility**
  2. Click the `+` button, find and add **Wolffish**
  3. Takes effect immediately — no restart needed
</Accordion>

<Accordion title="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:**

  1. Open **System Settings > Privacy & Security > Automation**
  2. Find **Wolffish** in the list
  3. Toggle on each target app the agent needs — at minimum, **Google Chrome**
  4. macOS may also prompt you on first use — click "OK" when it does
</Accordion>

<Warning>
  **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.
</Warning>

### Optional

* **[Brave Search API key](https://brave.com/search/api/)** — configured in Settings > Services > Brave Search. Improves search quality.

### Before You Start

Leave Chrome open with your LinkedIn session active. The agent uses your existing window — it does not spin up a new browser.

## The Prompt

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", "artificial
intelligence announcements", "AI funding rounds", "AI policy
regulation". Read the full content of the top articles using
web_fetch.

ONLY use free, open sources that web_fetch can read without
hitting a paywall. Good sources: The Verge, Ars Technica,
TechCrunch, arXiv, Papers With Code, Anthropic Blog, OpenAI
Blog, 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 and
waste 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 that
rewrite other outlets with no original reporting.

Write a LinkedIn post in my voice (match soul.md tone). Under
3000 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 using
computer-use. My Chrome browser is already open on display 0
(primary display) with my LinkedIn session logged in and ready
to use. Do NOT spin up a new browser instance. Do NOT use a
headless browser. Do NOT launch Playwright or any automation
framework. 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 and
time: files/linkedin-post-YYYY-MM-DD-HHMMSS.txt (e.g.
files/linkedin-post-2026-05-22-143052.txt). Write the post
content to that file so emojis are saved with proper UTF-8
encoding. Then copy it to the clipboard using this exact
shell command (with your actual filename):
LANG=en_US.UTF-8 pbcopy < files/linkedin-post-YYYY-MM-DD-HHMMSS.txt
This forces pbcopy to read the file as UTF-8 regardless of
the 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=true
This opens the post composer directly AND the text area is
already focused with the cursor blinking — ready for input
immediately. Do NOT click the composer text area. Just run
the paste command (Cmd+V) right away to paste from the
clipboard.

After pasting, take ONE screenshot of the composer. Verify
the 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 through
the post. Do not take additional screenshots to verify. Do
not try to get the post URL after posting.

Four actions total: save file, clipboard-paste, verify, post.
Done.
```

## How It Works

1. Prefrontal loads soul.md + web-search SKILL.md + computer-use SKILL.md into context.
2. The LLM calls `web_search` across multiple queries — news, breakthroughs, funding, policy.
3. The LLM calls `web_fetch` on the top articles to read full content.
4. The LLM curates 5-10 stories and writes the formatted post.
5. The LLM saves the post to a timestamped file and copies it to clipboard via `pbcopy`.
6. The LLM takes a screenshot of the existing Chrome window to orient itself.
7. The LLM opens `linkedin.com/feed/?shareActive=true` — composer opens focused — and pastes with Cmd+V.
8. One screenshot to verify formatting, then clicks "Post".

## Limits

* First-time computer-use may trigger macOS Automation prompts — pre-grant them in Setup
* If LinkedIn's UI changes layout, the LLM adapts on the next screenshot — no hardcoded selectors

## Automating with Heartbeat

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](/configuration/heartbeat) for all schedule formats (`Daily`, `Weekday`, `Weekly`, `Cron`).

```markdown theme={null}
## Daily LinkedIn Post | Weekday (08:00)

Research today's top AI and tech news. Run multiple searches:
"AI news today", "LLM breakthroughs this week", "artificial
intelligence announcements", "AI funding rounds", "AI policy
regulation". Read the full content of the top articles using
web_fetch.

ONLY use free, open sources that web_fetch can read without
hitting a paywall. Good sources: The Verge, Ars Technica,
TechCrunch, arXiv, Papers With Code, Anthropic Blog, OpenAI
Blog, 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 and
waste 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 that
rewrite other outlets with no original reporting.

Write a LinkedIn post in my voice (match soul.md tone). Under
3000 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 using
computer-use. My Chrome browser is already open on display 0
(primary display) with my LinkedIn session logged in and ready
to use. Do NOT spin up a new browser instance. Do NOT use a
headless browser. Do NOT launch Playwright or any automation
framework. 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 and
time: files/linkedin-post-YYYY-MM-DD-HHMMSS.txt (e.g.
files/linkedin-post-2026-05-22-143052.txt). Write the post
content to that file so emojis are saved with proper UTF-8
encoding. Then copy it to the clipboard using this exact
shell command (with your actual filename):
LANG=en_US.UTF-8 pbcopy < files/linkedin-post-YYYY-MM-DD-HHMMSS.txt
This forces pbcopy to read the file as UTF-8 regardless of
the 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=true
This opens the post composer directly AND the text area is
already focused with the cursor blinking — ready for input
immediately. Do NOT click the composer text area. Just run
the paste command (Cmd+V) right away to paste from the
clipboard.

After pasting, take ONE screenshot of the composer. Verify
the 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 through
the post. Do not take additional screenshots to verify. Do
not try to get the post URL after posting.

Four actions total: save file, clipboard-paste, verify, post.
Done.
```

<Tip>
  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.
</Tip>

## Expected Outcome

> 🤖 AI News Roundup — 10 Things You Need to Know Today
>
> 1. 🏦 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.
>
> 2. 🏥 OpenAI's reasoning model outperformed experienced physicians at patient diagnosis in a Harvard/BIDMC study — tested across real ER electronic health records.
>
> 3. 💊 OpenAI launched ChatGPT for Clinicians — a free tool for verified medical professionals to assist with documentation and evidence-based clinical reasoning.
>
> 4. 🛡️ The US, UK, Australia, Canada & New Zealand jointly issued security guidance on agentic AI systems, identifying 5 risk categories for critical infrastructure deployments.
>
> 5. 🔬 UPenn researchers introduced "Mollifier Layers" — a neural network technique to solve inverse PDEs with improved stability, with applications in genomics and climate modeling.
>
> 6. 💰 China's Moonshot AI raised 2B USD at a 20B USD valuation as demand for open-source AI models skyrockets globally.
>
> 7. 🛒 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.
>
> 8. ☁️ AWS expanded Amazon Connect into 4 agentic AI solutions covering supply chain, hiring, customer service, and healthcare administration.
>
> 9. 🔐 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.
>
> 10. 🎵 Spotify is positioning itself as the home for AI-generated personal audio, while OpenAI launched new voice intelligence features in its API.
>
> Generated with Wolffish 🐟
