-
Notifications
You must be signed in to change notification settings - Fork 3
feat(library): add marketing job with competitive content analysis #329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 3 commits
d1a48da
7e7b325
8526581
f992a75
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -17,6 +17,7 @@ This walks you through configuring `DEEPWORK_ADDITIONAL_JOBS_FOLDERS` so the Dee | |||||
| | Job | Description | | ||||||
| |-----|-------------| | ||||||
| | [Engineer](./engineer) | Domain-agnostic engineering execution from product issue through PR merge and product sync, with TDD discipline | | ||||||
| | [Marketing](./marketing) | Competitive analysis, content strategy, and social media planning with shared steps across workflows | | ||||||
| | [Research](./research) | Multi-workflow research suite — deep investigation, quick summaries, material ingestion, and reproduction planning | | ||||||
| | [Platform Engineer](./platform_engineer) | Incident response, observability, CI/CD, releases, security, cost management, and infrastructure | | ||||||
| | [Repo](./repo) | Audit and configure repositories — labels, branch protection, milestones, and boards | | ||||||
|
|
@@ -61,6 +62,25 @@ The job library provides: | |||||
| - **Templates**: Copy and adapt jobs for your own use cases | ||||||
| - **Learning**: Understand the job definition format through real examples | ||||||
|
|
||||||
| ## Output conventions for library jobs | ||||||
|
|
||||||
| Library jobs that produce durable outputs (reports, research, decisions) should defer to the user's environment for note creation mechanics rather than embedding specific tools or paths. | ||||||
|
|
||||||
| **Pattern**: Signal the intent, not the mechanism. | ||||||
|
|
||||||
| - **Do**: "The final report and supporting research are durable notes. If the user has a notes directory, follow its AGENTS.md conventions." | ||||||
| - **Don't**: Embed `zk new reports/ --title ...` commands, specific frontmatter schemas, or directory paths in the job's `common_job_info`. | ||||||
|
|
||||||
| **Why**: Users have different note-taking setups (zk, Obsidian, plain markdown, no notes repo). The user's notes directory AGENTS.md and their platform conventions (if any) are the source of truth for how to create notes. Library jobs that embed one system's mechanics become non-portable. | ||||||
|
|
||||||
| **How it works in practice**: | ||||||
|
|
||||||
| 1. The job's `discover_context` step checks `NOTES_DIR` or `ZK_NOTEBOOK_DIR` and reads the AGENTS.md there. | ||||||
| 2. The agent's platform conventions (e.g., `process.notes`, `tool.zk-notes`) provide the mechanics for note creation. | ||||||
| 3. If no notes directory exists, the job falls back to `.deepwork/tmp/` with plain markdown. | ||||||
|
|
||||||
| This separation means the same library job works for a Keystone user with a zk notebook, an Obsidian user, or someone with no notes system at all. | ||||||
|
|
||||||
| ## Structure | ||||||
|
|
||||||
| Each job in this library follows the same structure as the `.deepwork/jobs` subfolders in your local project: | ||||||
|
|
@@ -76,6 +96,10 @@ library/jobs/ | |||||
| │ ├── CLAUDE.md -> AGENTS.md | ||||||
| │ ├── requirements.md # RFC 2119 requirements specification | ||||||
| │ └── steps/ # Step instruction files (also inlined in job.yml) | ||||||
| ├── marketing/ # Competitive content analysis workflows | ||||||
| │ ├── job.yml | ||||||
| │ ├── AGENTS.md # Agent context and learnings | ||||||
| │ └── CLAUDE.md -> AGENTS.md | ||||||
|
||||||
| │ └── CLAUDE.md -> AGENTS.md | |
| │ └── CLAUDE.md # Claude-specific instructions for this job |
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,76 @@ | ||||||||||
| # Project context for marketing | ||||||||||
|
|
||||||||||
| This is a **library job** -- reusable marketing workflows that any project can adopt. | ||||||||||
|
|
||||||||||
| ## Purpose | ||||||||||
|
|
||||||||||
| General-purpose marketing workflows for competitive analysis, content strategy, | ||||||||||
| social media planning, and campaign execution. Steps prefixed `cca_` are specific | ||||||||||
| to competitive content analysis; prefixed `sm_` are specific to social media. | ||||||||||
| Unprefixed steps (`discover_context`, `audit_own_content`, `create_campaign`, | ||||||||||
| `brainstorm_content`) are shared across workflows. | ||||||||||
|
|
||||||||||
| ## Location | ||||||||||
|
|
||||||||||
| This job lives in `library/jobs/marketing/`. It is NOT auto-installed -- users adopt it | ||||||||||
| via `DEEPWORK_ADDITIONAL_JOBS_FOLDERS`, the `shared_jobs` workflow, or by copying it | ||||||||||
| into their project's `.deepwork/jobs/` directory. | ||||||||||
|
|
||||||||||
| ## Workflows | ||||||||||
|
|
||||||||||
| | Workflow | Steps | Purpose | | ||||||||||
| |--------------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------| | ||||||||||
| | `competitive_content_analysis` | discover_context, cca_research_all_competitors, cca_analyze_patterns, audit_own_content, cca_gap_analysis, cca_final_report, create_campaign, brainstorm_content | Competitive content analysis with own-content audit, campaign tracking, and brainstorm | | ||||||||||
| | `social_media_setup` | discover_context, audit_own_content, sm_define_strategy, create_campaign | Content strategy and social media planning for a project | | ||||||||||
|
|
||||||||||
| Per-competitor research is delegated to the shared `research` job (`research/quick` or `research/research`) via nested workflow calls. No marketing-internal research sub-workflow needed. | ||||||||||
|
|
||||||||||
|
Comment on lines
+21
to
+27
|
||||||||||
| ## Planned workflows (not yet implemented) | ||||||||||
|
|
||||||||||
| - `campaign_planning` -- strategy through execution | ||||||||||
| - `content_calendar` -- content calendar across channels | ||||||||||
| - `seo_audit` -- technical and content SEO audit | ||||||||||
| - `email_marketing` -- campaigns and automations | ||||||||||
| - `launch_comms` -- launch communications coordination | ||||||||||
| - `analytics_attribution` -- performance and attribution models | ||||||||||
|
|
||||||||||
| ## Shared steps | ||||||||||
|
|
||||||||||
| These steps are reused across sibling workflows: | ||||||||||
|
|
||||||||||
| - **discover_context**: Project/brand context discovery with output directory inference | ||||||||||
| - **audit_own_content**: Crawl and catalog existing content across all channels | ||||||||||
| - **create_campaign**: Create milestone + parent issue on the user's project tracker | ||||||||||
| - **brainstorm_content**: Interactive content ideation posted as issue comment | ||||||||||
|
|
||||||||||
| ## Output conventions | ||||||||||
|
|
||||||||||
| Workflow outputs are durable notes. If the user has a notes directory | ||||||||||
| (`NOTES_DIR` or `ZK_NOTEBOOK_DIR`), follow its AGENTS.md conventions for note | ||||||||||
| creation and placement. The final report is a report-type note; supporting | ||||||||||
| per-competitor research goes as literature notes linked via wikilinks. Fall back | ||||||||||
| to `.deepwork/tmp/` only if no notes directory exists. | ||||||||||
|
|
||||||||||
| This job does not embed note creation mechanics (zk commands, frontmatter | ||||||||||
| format, tag conventions) because those vary by user setup. The user's notes | ||||||||||
| repo AGENTS.md and the agent's platform conventions are the source of truth for | ||||||||||
| how to create notes. See `process.notes` and `tool.zk-notes` for the canonical | ||||||||||
| rules if available in the agent's instruction context. | ||||||||||
|
||||||||||
| how to create notes. See `process.notes` and `tool.zk-notes` for the canonical | |
| rules if available in the agent's instruction context. | |
| how to create notes. Follow the user's notes-directory conventions and any | |
| applicable instructions available in the agent's instruction context. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| AGENTS.md |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The README introduces
ZK_NOTEBOOK_DIRplus references toprocess.notes/tool.zk-notes, but those identifiers don’t appear anywhere else in this repo (includingsrc/). Consider either linking to where these conventions are defined, or rephrasing to avoid implying built-in DeepWork support when it’s actually external/user-specific.