SEO Content Specialist — Self-Defense E-Commerce Brand (Full-Time, Long-Term)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

WAGE / SALARY

1500

HOURS PER WEEK

40

DATE UPDATED

Feb 18, 2026

JOB OVERVIEW

We’re a Canadian-based e-commerce brand selling tactical pens and self-defense tools. Our customers are mainly in the United States.

Our founder is a published author and world expert in pen-based self-defense. We have strong existing rankings and a clear keyword strategy — we need someone to execute it at scale.
This is not a “just write articles” role. You own the full content pipeline: keyword selection ? content brief ? writing ? on-page SEO ? images ? publishing ? performance tracking. You think like a strategist and execute like a writer.

What you’ll do every week:
• Write and publish 10 SEO-optimized blog posts (1,500–3,000 words each)
• Select target keywords from our prioritized keyword map using SEMrush data
• Optimize every article with SurferSEO: title tags, meta descriptions, NLP terms, header structure
• Build strategic internal links across the site (you’ll know the full content map because you built it)
• Create AI-generated images and infographics (we’ll train you on our workflow)
• Publish in Shopify with all metadata configured
• Track rankings and report on content performance weekly
• Incorporate founder’s expert voice memos into content (transcripts provided)

You MUST have:
• 2+ years of combined SEO + content writing experience with rankings you can show
• Hands-on experience with SEMrush or Ahrefs AND SurferSEO or Clearscope
• Active use of Claude or ChatGPT in your content workflow (not optional — this is how we work)
• Experience with Shopify or WordPress CMS
• Ability to write 10 quality, optimized posts per week consistently
• Google Search Console proficiency

Big plus:
• Interest in self-defense, EDC, tactical gear, or personal safety
• E-commerce content experience (product pages, comparison articles, buyer’s guides)
• Experience with AI image generation tools

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.1295
Total Execution Time  0.1308
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,498,704 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/SEO-Content-Specialist-Self-Defense-E-Commerce-Brand-Full-Time-Long-Term-1582370
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.1238 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1582370
 LIMIT 1 
0.0005   SELECT *
FROM `employers`
WHERE `employer_id` = 905922
 LIMIT 1 
0.1146   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1582370
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-23',ej.date_added) duration_daysDATEDIFF('2026-06-23',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-23',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1582370' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1582370 
0.0017   UPDATE employer_jobs SET hit_counts '***Feb-18-2026=329***Feb-19-2026=103***Feb-20-2026=44***Feb-21-2026=46***Feb-22-2026=19***Feb-23-2026=33***Feb-24-2026=20***Feb-25-2026=11***Feb-26-2026=8***Feb-27-2026=11***Feb-28-2026=3***Mar-01-2026=4***Mar-02-2026=5***Mar-03-2026=3***Mar-04-2026=2***Mar-05-2026=3***Mar-06-2026=3***Mar-07-2026=4***Mar-08-2026=3***Mar-09-2026=4***Mar-10-2026=8***Mar-11-2026=6***Mar-13-2026=2***Mar-14-2026=4***Mar-15-2026=2***Mar-17-2026=5***Mar-18-2026=2***Mar-19-2026=5***Mar-21-2026=1***Mar-23-2026=3***Mar-24-2026=5***Mar-26-2026=2***Mar-27-2026=2***Mar-29-2026=6***Mar-31-2026=2***Apr-02-2026=2***Apr-03-2026=2***Apr-05-2026=3***Apr-06-2026=1***Apr-08-2026=5***Apr-11-2026=1***Apr-12-2026=4***Apr-13-2026=3***Apr-14-2026=2***Apr-15-2026=5***Apr-16-2026=5***Apr-19-2026=1***Apr-20-2026=3***Apr-21-2026=3***Apr-22-2026=3***Apr-23-2026=1***Apr-25-2026=1***Apr-26-2026=1***Apr-27-2026=1***Apr-28-2026=2***Apr-29-2026=1***Apr-30-2026=1***May-07-2026=2***May-09-2026=1***May-10-2026=1***May-11-2026=3***May-13-2026=1***May-16-2026=5***May-21-2026=1***May-22-2026=3***May-23-2026=1***May-25-2026=1***May-28-2026=1***Jun-03-2026=1***Jun-04-2026=1***Jun-10-2026=1***Jun-11-2026=1***Jun-16-2026=1***Jun-19-2026=1***Jun-23-2026=1' WHERE job_id'1582370'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Feb-2026=627***Mar-2026=86***Apr-2026=51***May-2026=20***Jun-2026=7' WHERE job_id'1582370'  
0.0028   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1582370' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1582370 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '905922'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)